Difference between revisions of "Enabling force feedback in kernel"
m (Formatting style updates) |
m (Update categories) |
||
Line 134: | Line 134: | ||
[[Category:Configuration]] | [[Category:Configuration]] | ||
− | |||
− |
Latest revision as of 03:04, 1 September 2012
Here is how to enable force feedback on Ubuntu 8.10 64 bits kernels (should also work on 32 bits ones):
For the G25 owners
If you use a G25 wheel, you need to patch your kernel to be able to use it in its native mode First create a patch file named G25.patch for the kernel ( patches for 2.6.27 and 2.6.28 are provided ).
kernel 2.6.27
diff -Naur linux-source-2.6.27/drivers/hid/usbhid/hid-ff.c linux-source-2.6.27.orig/drivers/hid/usbhid/hid-ff.c --- linux-source-2.6.27/drivers/hid/usbhid/hid-ff.c 2008-10-10 00:13:53.000000000 +0200 +++ linux-source-2.6.27.orig/drivers/hid/usbhid/hid-ff.c 2009-02-23 22:21:27.000000000 +0100 @@ -57,6 +57,7 @@ { 0x46d, 0xc286, hid_lgff_init }, /* Logitech Force 3D Pro Joystick */ { 0x46d, 0xc294, hid_lgff_init }, /* Logitech Formula Force EX */ { 0x46d, 0xc295, hid_lgff_init }, /* Logitech MOMO force wheel */ + { 0x46d, 0xc299, hid_lgff_init }, /* Logitech G25 wheel */ { 0x46d, 0xca03, hid_lgff_init }, /* Logitech MOMO force wheel */ #endif #ifdef CONFIG_LOGIRUMBLEPAD2_FF diff -Naur linux-source-2.6.27/drivers/hid/usbhid/hid-lgff.c linux-source-2.6.27.orig/drivers/hid/usbhid/hid-lgff.c --- linux-source-2.6.27/drivers/hid/usbhid/hid-lgff.c 2008-10-10 00:13:53.000000000 +0200 +++ linux-source-2.6.27.orig/drivers/hid/usbhid/hid-lgff.c 2009-02-23 22:23:22.000000000 +0100 @@ -55,6 +55,7 @@ { 0x046d, 0xc286, ff_joystick }, { 0x046d, 0xc294, ff_joystick }, { 0x046d, 0xc295, ff_joystick }, + { 0x046d, 0xc299, ff_joystick }, { 0x046d, 0xca03, ff_joystick }, }; diff -Naur linux-source-2.6.27/drivers/hid/usbhid/hid-quirks.c linux-source-2.6.27.orig/drivers/hid/usbhid/hid-quirks.c --- linux-source-2.6.27/drivers/hid/usbhid/hid-quirks.c 2009-03-13 18:54:14.000000000 +0100 +++ linux-source-2.6.27.orig/drivers/hid/usbhid/hid-quirks.c 2009-02-23 22:25:45.000000000 +0100 @@ -316,6 +316,7 @@ #define USB_DEVICE_ID_LOGITECH_HARMONY_64 0xc14f #define USB_DEVICE_ID_LOGITECH_EXTREME_3D 0xc215 #define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294 +#define USB_DEVICE_ID_LOGITECH_WHEELG25 0xc299 #define USB_DEVICE_ID_LOGITECH_ELITE_KBD 0xc30a #define USB_DEVICE_ID_LOGITECH_KBD 0xc311 #define USB_DEVICE_ID_S510_RECEIVER 0xc50c @@ -625,6 +626,7 @@ { USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET }, { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_EXTREME_3D, HID_QUIRK_NOGET }, { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WHEEL, HID_QUIRK_NOGET }, + { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WHEELG25, HID_QUIRK_NOGET }, { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0, HID_QUIRK_NOGET }, { USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE, HID_QUIRK_NOGET }, { USB_VENDOR_ID_SUN, USB_DEVICE_ID_RARITAN_KVM_DONGLE, HID_QUIRK_NOGET },
kernel 2.6.28
diff -Naur linux-source-2.6.28/drivers/hid/hid-core.c linux-source-2.6.28.patched/drivers/hid/hid-core.c --- linux-source-2.6.28/drivers/hid/hid-core.c 2009-04-08 06:38:33.000000000 +0200 +++ linux-source-2.6.28.patched/drivers/hid/hid-core.c 2009-04-10 14:15:27.000000000 +0200 @@ -1290,6 +1290,7 @@ { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_FORCE3D_PRO) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2) }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G25_WHEEL) }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2) }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_SIDEWINDER_GV) }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_NE4K) }, diff -Naur linux-source-2.6.28/drivers/hid/hid-ids.h linux-source-2.6.28.patched/drivers/hid/hid-ids.h --- linux-source-2.6.28/drivers/hid/hid-ids.h 2008-12-25 00:26:37.000000000 +0100 +++ linux-source-2.6.28.patched/drivers/hid/hid-ids.h 2009-04-10 14:12:44.000000000 +0200 @@ -291,6 +291,7 @@ #define USB_DEVICE_ID_LOGITECH_FORCE3D_PRO 0xc286 #define USB_DEVICE_ID_LOGITECH_WHEEL 0xc294 #define USB_DEVICE_ID_LOGITECH_MOMO_WHEEL 0xc295 +#define USB_DEVICE_ID_LOGITECH_G25_WHEEL 0xc299 #define USB_DEVICE_ID_LOGITECH_ELITE_KBD 0xc30a #define USB_DEVICE_ID_LOGITECH_KBD 0xc311 #define USB_DEVICE_ID_S510_RECEIVER 0xc50c diff -Naur linux-source-2.6.28/drivers/hid/hid-lg.c linux-source-2.6.28.patched/drivers/hid/hid-lg.c --- linux-source-2.6.28/drivers/hid/hid-lg.c 2008-12-25 00:26:37.000000000 +0100 +++ linux-source-2.6.28.patched/drivers/hid/hid-lg.c 2009-04-10 14:14:17.000000000 +0200 @@ -304,6 +304,8 @@ .driver_data = LG_FF }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2), .driver_data = LG_FF }, + { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G25_WHEEL), + .driver_data = LG_FF }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2), .driver_data = LG_FF2 }, { }
Enabling force feedback in the kernel
Prepare to compile a kernel
Make sure you have everything needed to compile your kernel :
sudo apt-get install fakeroot build-essential makedumpfile libncurses5 libncurses5-dev kernel-package sudo apt-get build-dep linux
Get the kernel source code :
sudo apt-get install linux-source
Now we are ready to start : Prepare your environment:
mkdir ~/src cd ~/src tar xjvf /usr/src/linux-source-<version>.tar.bz2 cd linux-source-<version>
Apply the G25 patch if needed
Copy the G25.patch file into the source directory ( ~/src ) and
patch -p1 <../G25.patch
The output should be something like that:
patching file drivers/hid/usbhid/hid-ff.c patching file drivers/hid/usbhid/hid-lgff.c patching file drivers/hid/usbhid/hid-quirks.c
Configure the new kernel
Get the running kernel configuration:
cp -vi /boot/config-`uname -r` .config
Adjust the kernel configuration:
make oldconfig make menuconfig
Go to Device Drivers , and HID Devices and enable the following options
Force feedback support (EXPERIMENTAL) PID device support Logitech devices support Logitech Rumblepad 2 support PantherLord/GreenAsia based device support ThrustMaster devices support Zeroplus based game controller support
With the 2.6.27 kernel on Ubuntu 8.10, I have to disable paravirtualized guest support otherwise the kernel cleaning fail. This is not needed on 2.6.28 on Ubuntu 9.04 beta (2.6.28.11) Go to Processor type and features and disable the following:
Paravirtualized guest support
Compile and package the new kernel
make-kpkg clean fakeroot make-kpkg --initrd --append-to-version=-ff kernel-image kernel-headers
You now have 2 new package files in ~/src.
Install the new kernel
sudo dpkg -i linux-image-2.6.27.18-ff_2.6.27.18-ff-10.00.Custom_amd64.deb linux-headers-2.6.27.18-ff_2.6.27.18-ff-10.00.Custom_amd64.deb