linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Force Feedback for Thrustmaster RGT Pro Clutch Pedal Edition racing wheel
@ 2008-09-13 15:09 Didier Moens
  2008-09-13 16:32 ` Annick et Jean-Philippe
  2008-09-20  2:44 ` Jiri Kosina
  0 siblings, 2 replies; 6+ messages in thread
From: Didier Moens @ 2008-09-13 15:09 UTC (permalink / raw)
  To: linux-input

[-- Attachment #1: Type: text/plain, Size: 5665 bytes --]

Dear all,


I'm trying to get force feedback activated on this quite wonderful 
racing wheel 
(http://www.thrustmaster.com/product.aspx?ProductID=8&PlatformID=5).


Based on the thread started by Gerald Folcher of 16 Jul 2007 (force 
feedback for Thrustmaster FGT Wheel) and subsequent patches, I've added 
following USB id's :

(patches against 2.6.25, but I've already tested with 2.6.26.3)

diff -uNrp kernel-2.6.25.orig/drivers/hid/usbhid/hid-ff.c 
kernel-2.6.25.new/drivers/hid/usbhid/hid-ff.c
--- kernel-2.6.25.orig/drivers/hid/usbhid/hid-ff.c      2008-04-17 
04:49:44.000000000 +0200
+++ kernel-2.6.25.new/drivers/hid/usbhid/hid-ff.c       2008-09-09 
16:56:34.000000000 +0200
@@ -62,11 +62,13 @@ static struct hid_ff_initializer inits[]
 #ifdef CONFIG_PANTHERLORD_FF
        { 0x810, 0x0001, hid_plff_init }, /* "Twin USB Joystick" */
        { 0xe8f, 0x0003, hid_plff_init }, /* "GreenAsia Inc.    USB 
Joystick     " */
+       { 0xe8f, 0x0012, hid_plff_init }, /* "GreenAsia Inc.    USB 
Joystick     " */
 #endif
 #ifdef CONFIG_THRUSTMASTER_FF
        { 0x44f, 0xb300, hid_tmff_init },
        { 0x44f, 0xb304, hid_tmff_init },
        { 0x44f, 0xb651, hid_tmff_init }, /* FGT Rumble Force Wheel */
+       { 0x44f, 0xb653, hid_tmff_init }, /* Thrustmaster RGT Force 
Feedback Pro Clutch Edition */
        { 0x44f, 0xb654, hid_tmff_init }, /* FGT Force Feedback Wheel */
 #endif
 #ifdef CONFIG_ZEROPLUS_FF
diff -uNrp kernel-2.6.25.orig/drivers/hid/usbhid/hid-tmff.c 
kernel-2.6.25.new/drivers/hid/usbhid/hid-tmff.c
--- kernel-2.6.25.orig/drivers/hid/usbhid/hid-tmff.c    2008-04-17 
04:49:44.000000000 +0200
+++ kernel-2.6.25.new/drivers/hid/usbhid/hid-tmff.c     2008-09-09 
17:00:45.000000000 +0200
@@ -58,6 +58,7 @@ static const struct dev_type devices[] =
        { 0x44f, 0xb300, ff_rumble },
        { 0x44f, 0xb304, ff_rumble },
        { 0x44f, 0xb651, ff_rumble },   /* FGT Rumble Force Wheel */
+       { 0x44f, 0xb653, ff_joystick }, /* Thrustmaster RGT Force 
Feedback Pro Clutch Edition */
        { 0x44f, 0xb654, ff_joystick }, /* FGT Force Feedback Wheel */
 };
 

Unfortunately, this yields no improvement : no force feedback is sent to 
the wheel (tested with ff-utils).

/var/log/messages :

Sep 10 08:46:40 moewelstat1 kernel: usb 1-4.3: new low speed USB device 
using ehci_hcd and address 17
Sep 10 08:46:40 moewelstat1 kernel: usb 1-4.3: configuration #1 chosen 
from 1 choice
Sep 10 08:46:40 moewelstat1 kernel: input: Thrustmaster Thrustmaster 
force feedback wheel as /class/input/input13
Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: 
ignoring unknown output usage 000f0022
Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: 
ignoring unknown output usage 000f0050
Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: 
ignoring unknown output usage 000f0022
Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: 
ignoring unknown output usage 000f0060
Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: 
ignoring unknown output usage 000f0063
Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: 
ignoring unknown output usage 000f0022
Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: 
ignoring unknown output usage 000f0070
Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: 
ignoring unknown output usage 000f0022
Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: 
ignoring unknown output usage 000f0079
Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: 
ignoring unknown output usage 000f0097
Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: Force 
feedback for ThrustMaster devices by Zinx Verituse <zinx@epicsol.org>
Sep 10 08:46:40 moewelstat1 kernel: input,hidraw0: USB HID v1.10 
Joystick [Thrustmaster Thrustmaster force feedback wheel] on 
usb-0000:00:02.1-4.3
Sep 10 08:46:40 moewelstat1 kernel: usb 1-4.3: New USB device found, 
idVendor=044f, idProduct=b653
Sep 10 08:46:40 moewelstat1 kernel: usb 1-4.3: New USB device strings: 
Mfr=3, Product=1, SerialNumber=0
Sep 10 08:46:40 moewelstat1 kernel: usb 1-4.3: Product: Thrustmaster 
force feedback wheel
Sep 10 08:46:40 moewelstat1 kernel: usb 1-4.3: Manufacturer: Thrustmaster


Changing the hid-tmff.c code to forcibly run the THRUSTMASTER_USAGE_FF 
clause (preventing 'ignoring unknown output usage') yields :

Sep 12 20:50:59 moewelstat1 kernel: input: Thrustmaster Thrustmaster 
force feedback wheel as /class/input/input7
Sep 12 20:50:59 moewelstat1 kernel: usbhid: ignoring FF field with 
report_count < 2
Sep 12 20:50:59 moewelstat1 kernel:last message repeated 2 times
Sep 12 20:50:59 moewelstat1 kernel: usbhid: ignoring FF field in other 
report
Sep 12 20:50:59 moewelstat1 kernel: usbhid: ignoring FF field in other 
report
Sep 12 20:50:59 moewelstat1 kernel: usbhid: ignoring FF field with 
report_count < 2
Sep 12 20:51:00 moewelstat1 kernel:last message repeated 4 times
Sep 12 20:50:59 moewelstat1 kernel: usbhid: Force feedback for 
ThrustMaster devices by Zinx Verituse <zinx@epicsol.org>


Please find in attachment kernel DEBUG output from dmesg , 
/var/log/messages and output from the ff-utils evtest application.



Of course, I'm eager to supply test feedback in case anybody feels 
compelled to provide me with some corrective code patches (please note 
I'm not truly acquainted with C code, though).
If required, I could run USB snooping with the Windows Thrustmaster 
drivers through a VMware session.



As I'm not currently subscribed to linux-input, CC: to moensd@xs4all.be 
would be much appreciated.


Best regards and thank you in advance,
Didier


[-- Attachment #2: dmesg.out --]
[-- Type: text/plain, Size: 17647 bytes --]

usb 2-6: new low speed USB device using ohci_hcd and address 4
usb 2-6: configuration #1 chosen from 1 choice
drivers/hid/usbhid/hid-core.c: HID probe called for ifnum 0
drivers/hid/usbhid/hid-core.c: report descriptor (size 455, read 455) =  05 01 09 04 a1 01 09 01 a1 00 85 81 06 00 ff 15 00 27 ff ff 00 00 09 01 09 02 75 10 95 02 b1 a2 09 03 09 04 85 82 25 7f 75 08 95 02 b1 02 85 01 05 09 19 01 29 0a 25 01 75 01 95 0a 81 02 05 01 09 39 25 07 35 00 46 3b 01 65 14 95 01 75 04 81 42 09 30 46 ff 03 16 00 fe 26 ff 01 65 00 75 0a 95 01 81 02 09 31 46 ff 00 15 00 26 ff 00 75 08 81 02 09 35 81 02 09 36 81 02 09 37 81 02 c0 85 40 09 bb 15 00 26 ff 00 35 00 46 ff 00 75 08 95 04 91 02 05 0f 09 21 a1 02 85 41 09 22 15 01 25 04 75 08 95 01 91 02 09 50 15 00 25 7f 35 00 46 c0 1f 75 08 66 03 10 55 0d 95 01 91 02 c0 09 5f a1 02 85 43 09 22 15 01 25 04 75 08 95 01 91 02 09 60 09 61 09 62 15 80 25 7f 95 03 91 02 09 63 09 64 09 65 15 00 91 02 c0 09 73 a1 02 85 45 09 22 15 01 25 04 75 08 95 01 91 02 09 70 15 80 25 7f 75 08 91 02 c0 09 77 a1 02 85 4a 09 22 15 01 25 04 75 08 95 01 91 02 09 78 a1 02 09 79 09 7a 09 7b 25 03 75 08 91 00 c0 c0 09 92 a1 02 85 88 09 22 15 01 25 04 75 08 b1 02 09 94 09 a0 09 9f 15 00 25 01 75 01 95 03 b1 02 95 05 b1 03 c0 09 95 a1 02 85 4b 09 96 a1 02 09 97 09 98 09 99 09 9a 09 9b 09 9c 15 01 25 06 75 08 95 01 91 00 c0 c0 09 ab a1 02 85 85 09 25 a1 02 09 26 09 40 15 01 25 02 75 08 95 01 b1 00 c0 c0 09 89 a1 02 85 86 09 22 15 01 25 04 75 08 95 01 b1 02 09 8b a1 02 09 8c 09 8d 09 8e 15 01 25 03 75 08 95 01 b1 00 c0 c0 09 90 a1 02 85 87 09 22 15 01 25 04 75 08 95 01 b1 02 c0 c0
drivers/hid/usbhid/hid-core.c: submitting ctrl urb: Get_Report wValue=0x0101 wIndex=0x0000 wLength=8
drivers/hid/usbhid/hid-core.c: submitting ctrl urb: Get_Report wValue=0x0381 wIndex=0x0000 wLength=5
drivers/hid/hid-core.c: report (size 5) (numbered)
drivers/hid/hid-core.c: report 129 (size 4) =  01 21 ff ff
drivers/hid/usbhid/hid-core.c: submitting ctrl urb: Get_Report wValue=0x0382 wIndex=0x0000 wLength=3
drivers/hid/hid-core.c: report (size 3) (numbered)
drivers/hid/hid-core.c: report 130 (size 2) =  50 5a
drivers/hid/usbhid/hid-core.c: submitting ctrl urb: Get_Report wValue=0x0388 wIndex=0x0000 wLength=3
drivers/hid/hid-core.c: report (size 3) (numbered)
drivers/hid/hid-core.c: report 136 (size 2) =  00 02
drivers/hid/usbhid/hid-core.c: submitting ctrl urb: Get_Report wValue=0x0385 wIndex=0x0000 wLength=2
drivers/hid/usbhid/hid-core.c: submitting ctrl urb: Get_Report wValue=0x0386 wIndex=0x0000 wLength=3
drivers/hid/hid-core.c: report (size 3) (numbered)
drivers/hid/hid-core.c: report 134 (size 2) =  00 01
drivers/hid/usbhid/hid-core.c: submitting ctrl urb: Get_Report wValue=0x0387 wIndex=0x0000 wLength=2
  INPUT(1)[INPUT]
    Field(0)
      Physical(GenericDesktop.Pointer)
      Usage(10)
        Button.0001
        Button.0002
        Button.0003
        Button.0004
        Button.0005
        Button.0006
        Button.0007
        Button.0008
        Button.0009
        Button.000a
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(10)
      Report Offset(0)
      Flags( Variable Absolute )
    Field(1)
      Physical(GenericDesktop.Pointer)
      Usage(1)
        GenericDesktop.HatSwitch
      Logical Minimum(0)
      Logical Maximum(7)
      Physical Minimum(0)
      Physical Maximum(315)
      Unit(English Rotation : Degrees)
      Report Size(4)
      Report Count(1)
      Report Offset(10)
      Flags( Variable Absolute NullState )
    Field(2)
      Physical(GenericDesktop.Pointer)
      Usage(1)
        GenericDesktop.X
      Logical Minimum(-512)
      Logical Maximum(511)
      Physical Minimum(0)
      Physical Maximum(1023)
      Report Size(10)
      Report Count(1)
      Report Offset(14)
      Flags( Variable Absolute )
    Field(3)
      Physical(GenericDesktop.Pointer)
      Usage(1)
        GenericDesktop.Y
      Logical Minimum(0)
      Logical Maximum(255)
      Physical Minimum(0)
      Physical Maximum(255)
      Report Size(8)
      Report Count(1)
      Report Offset(24)
      Flags( Variable Absolute )
    Field(4)
      Physical(GenericDesktop.Pointer)
      Usage(1)
        GenericDesktop.Rz
      Logical Minimum(0)
      Logical Maximum(255)
      Physical Minimum(0)
      Physical Maximum(255)
      Report Size(8)
      Report Count(1)
      Report Offset(32)
      Flags( Variable Absolute )
    Field(5)
      Physical(GenericDesktop.Pointer)
      Usage(1)
        GenericDesktop.Slider
      Logical Minimum(0)
      Logical Maximum(255)
      Physical Minimum(0)
      Physical Maximum(255)
      Report Size(8)
      Report Count(1)
      Report Offset(40)
      Flags( Variable Absolute )
    Field(6)
      Physical(GenericDesktop.Pointer)
      Usage(1)
        GenericDesktop.Dial
      Logical Minimum(0)
      Logical Maximum(255)
      Physical Minimum(0)
      Physical Maximum(255)
      Report Size(8)
      Report Count(1)
      Report Offset(48)
      Flags( Variable Absolute )
  OUTPUT(64)[OUTPUT]
    Field(0)
      Usage(4)
        GenericDesktop.00bb
        GenericDesktop.00bb
        GenericDesktop.00bb
        GenericDesktop.00bb
      Logical Minimum(0)
      Logical Maximum(255)
      Physical Minimum(0)
      Physical Maximum(255)
      Report Size(8)
      Report Count(4)
      Report Offset(0)
      Flags( Variable Absolute )
  OUTPUT(65)[OUTPUT]
    Field(0)
      Logical(PhysicalInterfaceDevice.0021)
      Usage(1)
        PhysicalInterfaceDevice.0022
      Logical Minimum(1)
      Logical Maximum(4)
      Physical Minimum(0)
      Physical Maximum(255)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
    Field(1)
      Logical(PhysicalInterfaceDevice.0021)
      Usage(1)
        PhysicalInterfaceDevice.0050
      Logical Minimum(0)
      Logical Maximum(127)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(8)
      Flags( Variable Absolute )
  OUTPUT(67)[OUTPUT]
    Field(0)
      Logical(PhysicalInterfaceDevice.005f)
      Usage(1)
        PhysicalInterfaceDevice.0022
      Logical Minimum(1)
      Logical Maximum(4)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
    Field(1)
      Logical(PhysicalInterfaceDevice.005f)
      Usage(3)
        PhysicalInterfaceDevice.0060
        PhysicalInterfaceDevice.0061
        PhysicalInterfaceDevice.0062
      Logical Minimum(-128)
      Logical Maximum(127)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(3)
      Report Offset(8)
      Flags( Variable Absolute )
    Field(2)
      Logical(PhysicalInterfaceDevice.005f)
      Usage(3)
        PhysicalInterfaceDevice.0063
        PhysicalInterfaceDevice.0064
        PhysicalInterfaceDevice.0065
      Logical Minimum(0)
      Logical Maximum(127)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(3)
      Report Offset(32)
      Flags( Variable Absolute )
  OUTPUT(69)[OUTPUT]
    Field(0)
      Logical(PhysicalInterfaceDevice.0073)
      Usage(1)
        PhysicalInterfaceDevice.0022
      Logical Minimum(1)
      Logical Maximum(4)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
    Field(1)
      Logical(PhysicalInterfaceDevice.0073)
      Usage(1)
        PhysicalInterfaceDevice.0070
      Logical Minimum(-128)
      Logical Maximum(127)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(8)
      Flags( Variable Absolute )
  OUTPUT(74)[OUTPUT]
    Field(0)
      Logical(PhysicalInterfaceDevice.0077)
      Usage(1)
        PhysicalInterfaceDevice.0022
      Logical Minimum(1)
      Logical Maximum(4)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
    Field(1)
      Logical(PhysicalInterfaceDevice.0078)
      Usage(3)
        PhysicalInterfaceDevice.0079
        PhysicalInterfaceDevice.007a
        PhysicalInterfaceDevice.007b
      Logical Minimum(1)
      Logical Maximum(3)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(8)
      Flags( Array Absolute )
  OUTPUT(75)[OUTPUT]
    Field(0)
      Logical(PhysicalInterfaceDevice.0096)
      Usage(6)
        PhysicalInterfaceDevice.0097
        PhysicalInterfaceDevice.0098
        PhysicalInterfaceDevice.0099
        PhysicalInterfaceDevice.009a
        PhysicalInterfaceDevice.009b
        PhysicalInterfaceDevice.009c
      Logical Minimum(1)
      Logical Maximum(6)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Array Absolute )
  FEATURE(129)[FEATURE]
    Field(0)
      Physical(GenericDesktop.Pointer)
      Usage(2)
        ff00.0001
        ff00.0002
      Logical Minimum(0)
      Logical Maximum(65535)
      Report Size(16)
      Report Count(2)
      Report Offset(0)
      Flags( Variable Absolute NoPreferredState Volatile )
  FEATURE(130)[FEATURE]
    Field(0)
      Physical(GenericDesktop.Pointer)
      Usage(2)
        ff00.0003
        ff00.0004
      Logical Minimum(0)
      Logical Maximum(127)
      Report Size(8)
      Report Count(2)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(136)[FEATURE]
    Field(0)
      Logical(PhysicalInterfaceDevice.0092)
      Usage(1)
        PhysicalInterfaceDevice.0022
      Logical Minimum(1)
      Logical Maximum(4)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
    Field(1)
      Logical(PhysicalInterfaceDevice.0092)
      Usage(3)
        PhysicalInterfaceDevice.0094
        PhysicalInterfaceDevice.00a0
        PhysicalInterfaceDevice.009f
      Logical Minimum(0)
      Logical Maximum(1)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(1)
      Report Count(3)
      Report Offset(8)
      Flags( Variable Absolute )
  FEATURE(133)[FEATURE]
    Field(0)
      Logical(PhysicalInterfaceDevice.0025)
      Usage(2)
        PhysicalInterfaceDevice.0026
        PhysicalInterfaceDevice.0040
      Logical Minimum(1)
      Logical Maximum(2)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Array Absolute )
  FEATURE(134)[FEATURE]
    Field(0)
      Logical(PhysicalInterfaceDevice.0089)
      Usage(1)
        PhysicalInterfaceDevice.0022
      Logical Minimum(1)
      Logical Maximum(4)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
    Field(1)
      Logical(PhysicalInterfaceDevice.008b)
      Usage(3)
        PhysicalInterfaceDevice.008c
        PhysicalInterfaceDevice.008d
        PhysicalInterfaceDevice.008e
      Logical Minimum(1)
      Logical Maximum(3)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(8)
      Flags( Array Absolute )
  FEATURE(135)[FEATURE]
    Field(0)
      Logical(PhysicalInterfaceDevice.0090)
      Usage(1)
        PhysicalInterfaceDevice.0022
      Logical Minimum(1)
      Logical Maximum(4)
      Physical Minimum(0)
      Physical Maximum(8128)
      Unit Exponent(13)
      Unit(English Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
drivers/hid/hid-input.c: Mapping: Button.0001 ---> Key.Trigger
drivers/hid/hid-input.c: Mapping: Button.0002 ---> Key.ThumbBtn
drivers/hid/hid-input.c: Mapping: Button.0003 ---> Key.ThumbBtn2
drivers/hid/hid-input.c: Mapping: Button.0004 ---> Key.TopBtn
drivers/hid/hid-input.c: Mapping: Button.0005 ---> Key.TopBtn2
drivers/hid/hid-input.c: Mapping: Button.0006 ---> Key.PinkieBtn
drivers/hid/hid-input.c: Mapping: Button.0007 ---> Key.BaseBtn
drivers/hid/hid-input.c: Mapping: Button.0008 ---> Key.BaseBtn2
drivers/hid/hid-input.c: Mapping: Button.0009 ---> Key.BaseBtn3
drivers/hid/hid-input.c: Mapping: Button.000a ---> Key.BaseBtn4
drivers/hid/hid-input.c: Mapping: GenericDesktop.HatSwitch ---> Absolute.Hat0X
drivers/hid/hid-input.c: Mapping: GenericDesktop.X ---> Absolute.X
drivers/hid/hid-input.c: Mapping: GenericDesktop.Y ---> Absolute.Y
drivers/hid/hid-input.c: Mapping: GenericDesktop.Rz ---> Absolute.Rz
drivers/hid/hid-input.c: Mapping: GenericDesktop.Slider ---> Absolute.Throttle
drivers/hid/hid-input.c: Mapping: GenericDesktop.Dial ---> Absolute.Rudder
drivers/hid/hid-input.c: Mapping: GenericDesktop.00bb --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: GenericDesktop.00bb --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: GenericDesktop.00bb --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: GenericDesktop.00bb --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0022 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0050 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0022 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0060 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0061 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0062 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0063 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0064 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0065 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0022 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0070 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0022 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0079 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.007a --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.007b --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0097 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0098 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.0099 --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.009a --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.009b --->  [non-LED output field] IGNORED
drivers/hid/hid-input.c: Mapping: PhysicalInterfaceDevice.009c --->  [non-LED output field] IGNORED
input: Thrustmaster Thrustmaster force feedback wheel as /class/input/input8
usbhid: ignoring FF field with report_count < 2
usbhid: ignoring FF field with report_count < 2
usbhid: ignoring FF field with report_count < 2
usbhid: ignoring FF field in other report
usbhid: ignoring FF field in other report
usbhid: ignoring FF field with report_count < 2
usbhid: ignoring FF field with report_count < 2
usbhid: ignoring FF field with report_count < 2
usbhid: ignoring FF field with report_count < 2
usbhid: ignoring FF field with report_count < 2
usbhid: Force feedback for ThrustMaster devices by Zinx Verituse <zinx@epicsol.org>
input,hidraw0: USB HID v1.10 Joystick [Thrustmaster Thrustmaster force feedback wheel] on usb-0000:00:02.0-6
usb 2-6: New USB device found, idVendor=044f, idProduct=b653
usb 2-6: New USB device strings: Mfr=3, Product=1, SerialNumber=0
usb 2-6: Product: Thrustmaster force feedback wheel
usb 2-6: Manufacturer: Thrustmaster


[-- Attachment #3: messages.out --]
[-- Type: text/plain, Size: 1852 bytes --]

Sep 13 14:18:43 moewelstat1 kernel: usb 2-6: new low speed USB device using ohci_hcd and address 4
Sep 13 14:18:44 moewelstat1 kernel: usb 2-6: configuration #1 chosen from 1 choice
Sep 13 14:18:44 moewelstat1 kernel:  25 04 75 08 b1 02 09 94 09 a0 09 9f 15 00 25 01 75 01 95 03 b1 02 95 05 b1 03 c0 09 95 a1 02 85 4b 09 96 a1 02 09 97 09 98 09 99 09 9a 09 9b 09 9c 15 01 25 06 75 08 95 01 91 00 c0 c0 09 ab a1 02 85 85 09 25 a1 02 09 26 09 40 15 01 25 02 75 08 95 01 b1 00 c0 c0 09 89 a1 02 85 86 09 22 15 01 25 04 75 08 95 01 b1 02 09 8b a1 02 09 8c 09 8d 09 8e 15 01 25 03 75 08 95 01 b1 00 c0 c0 09 90 a1 02 85 87 09 22 15 01 25 04 75 08 95 01 b1 02 c0 c0
Sep 13 14:18:44 moewelstat1 kernel: input: Thrustmaster Thrustmaster force feedback wheel as /class/input/input8
Sep 13 14:18:44 moewelstat1 kernel: usbhid: ignoring FF field with report_count < 2
Sep 13 14:18:44 moewelstat1 kernel:last message repeated 2 times
Sep 13 14:18:44 moewelstat1 kernel: usbhid: ignoring FF field in other report
Sep 13 14:18:44 moewelstat1 kernel: usbhid: ignoring FF field in other report
Sep 13 14:18:44 moewelstat1 kernel: usbhid: ignoring FF field with report_count < 2
Sep 13 14:18:44 moewelstat1 kernel:last message repeated 4 times
Sep 13 14:18:44 moewelstat1 kernel: usbhid: Force feedback for ThrustMaster devices by Zinx Verituse <zinx@epicsol.org>
Sep 13 14:18:44 moewelstat1 kernel: input,hidraw0: USB HID v1.10 Joystick [Thrustmaster Thrustmaster force feedback wheel] on usb-0000:00:02.0-6
Sep 13 14:18:44 moewelstat1 kernel: usb 2-6: New USB device found, idVendor=044f, idProduct=b653
Sep 13 14:18:44 moewelstat1 kernel: usb 2-6: New USB device strings: Mfr=3, Product=1, SerialNumber=0
Sep 13 14:18:44 moewelstat1 kernel: usb 2-6: Product: Thrustmaster force feedback wheel
Sep 13 14:18:44 moewelstat1 kernel: usb 2-6: Manufacturer: Thrustmaster


[-- Attachment #4: evtest.out --]
[-- Type: text/plain, Size: 2759 bytes --]

Input driver version is 1.0.0
Input device ID: bus 0x3 vendor 0x44f product 0xb653 version 0x110
Input device name: "Thrustmaster Thrustmaster force feedback wheel"
Supported events:
  Event type 0 (Reset)
    Event code 0 (Reset)
    Event code 1 (Key)
    Event code 3 (Absolute)
    Event code 4 (?)
    Event code 21 (ForceFeedback)
  Event type 1 (Key)
    Event code 288 (Trigger)
    Event code 289 (ThumbBtn)
    Event code 290 (ThumbBtn2)
    Event code 291 (TopBtn)
    Event code 292 (TopBtn2)
    Event code 293 (PinkieBtn)
    Event code 294 (BaseBtn)
    Event code 295 (BaseBtn2)
    Event code 296 (BaseBtn3)
    Event code 297 (BaseBtn4)
  Event type 3 (Absolute)
    Event code 0 (X)
      Value      0
      Min     -512
      Max      511
      Fuzz       3
      Flat      63
    Event code 1 (Y)
      Value      0
      Min        0
      Max      255
      Flat      15
    Event code 5 (Rz)
      Value      0
      Min        0
      Max      255
      Flat      15
    Event code 6 (Throttle)
      Value      0
      Min        0
      Max      255
      Flat      15
    Event code 7 (Rudder)
      Value      0
      Min        0
      Max      255
      Flat      15
    Event code 16 (Hat0X)
      Value      0
      Min       -1
      Max        1
    Event code 17 (Hat0Y)
      Value      0
      Min       -1
      Max        1
  Event type 4 (?)
    Event code 4 (?)
  Event type 21 (ForceFeedback)
    Event code 82 (?)
    Event code 96 (?)
Testing ... (interrupt to exit)
Event: time 1221308641.483012, type 4 (?), code 4 (?), value 589834
Event: time 1221308641.483018, type 1 (Key), code 297 (BaseBtn4), value 1
Event: time 1221308641.483022, type 3 (Absolute), code 0 (X), value 39
Event: time 1221308641.483025, type 3 (Absolute), code 1 (Y), value 243
Event: time 1221308641.483027, type 3 (Absolute), code 5 (Rz), value 4
Event: time 1221308641.483030, type 3 (Absolute), code 6 (Throttle), value 253
Event: time 1221308641.483033, type 0 (Reset), code 0 (Reset), value 0
Event: time 1221308641.498997, type 4 (?), code 4 (?), value 589834
Event: time 1221308641.499002, type 1 (Key), code 297 (BaseBtn4), value 0
Event: time 1221308641.499005, type 3 (Absolute), code 0 (X), value 8
Event: time 1221308641.499007, type 3 (Absolute), code 1 (Y), value 255
Event: time 1221308641.499010, type 3 (Absolute), code 5 (Rz), value 255
Event: time 1221308641.499012, type 3 (Absolute), code 6 (Throttle), value 255
Event: time 1221308641.499014, type 3 (Absolute), code 7 (Rudder), value 255
Event: time 1221308641.499016, type 0 (Reset), code 0 (Reset), value 0
Event: time 1221308641.514999, type 3 (Absolute), code 0 (X), value -512
Event: time 1221308641.515005, type 0 (Reset), code 0 (Reset), value 0

[snip]
...


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Force Feedback for Thrustmaster RGT Pro Clutch Pedal Edition racing wheel
  2008-09-13 15:09 Force Feedback for Thrustmaster RGT Pro Clutch Pedal Edition racing wheel Didier Moens
@ 2008-09-13 16:32 ` Annick et Jean-Philippe
  2008-09-20 20:49   ` Anssi Hannula
  2008-09-20  2:44 ` Jiri Kosina
  1 sibling, 1 reply; 6+ messages in thread
From: Annick et Jean-Philippe @ 2008-09-13 16:32 UTC (permalink / raw)
  To: Didier Moens; +Cc: linux-input

Hi, Didier, and all.

> I'm trying to get force feedback activated on this quite wonderful 
> racing wheel 
> ...
> (patches against 2.6.25, but I've already tested with 2.6.26.3)
> ...
> Unfortunately, this yields no improvement : no force feedback is sent to 
> the wheel (tested with ff-utils).
> ...

Not sure this will fix your issues, but ...

ff-utils original code has 2 flaws :
- it is NOT 64-bit compatible
- it was coded for 2.4.x kernels, and when you compile it, it does not use
   the includes of your specific kernel, but those shipped with the sources
   (see sub-folder "linux")

So I recommend you apply the patch that fixes this issues :
look on SourceForge libff patches page ...

https://sourceforge.net/tracker/?func=detail&atid=440671&aid=2098907&group_id=44724

Then, be sure to test FF with "ffcfstress" (only for Constant Force),
not only with "fftest" ;
the first one works very well with my Logitech G25,
whereas I not sure the second one does ... (the rendered Constant Force effect 
is so week, that it's not that clear ...).

Finally, you can try the FFConsoleDemo of the OIS library (get 1.2.0 sources,
and apply the recent "Linux FF 64bit port + Windows FF fixes + DemoFFTest" patch
https://sourceforge.net/tracker/?func=detail&atid=775955&aid=2087429&group_id=149835) 
; it tests constant and periodic FF (Constant Force test is OK for my G25, not 
periodic).

Hope this helps.

Jean-Philippe MEURET


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Force Feedback for Thrustmaster RGT Pro Clutch Pedal Edition racing wheel
  2008-09-13 15:09 Force Feedback for Thrustmaster RGT Pro Clutch Pedal Edition racing wheel Didier Moens
  2008-09-13 16:32 ` Annick et Jean-Philippe
@ 2008-09-20  2:44 ` Jiri Kosina
  2008-09-24 11:32   ` Didier Moens
  1 sibling, 1 reply; 6+ messages in thread
From: Jiri Kosina @ 2008-09-20  2:44 UTC (permalink / raw)
  To: Didier Moens; +Cc: linux-input, Zinx Verituse

On Sat, 13 Sep 2008, Didier Moens wrote:

> Sep 10 08:46:40 moewelstat1 kernel: input: Thrustmaster Thrustmaster force
> feedback wheel as /class/input/input13
> Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: ignoring
> unknown output usage 000f0022
> Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: ignoring
> unknown output usage 000f0050
> Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: ignoring
> unknown output usage 000f0022
> Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: ignoring
> unknown output usage 000f0060
> Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: ignoring
> unknown output usage 000f0063
> Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: ignoring
> unknown output usage 000f0022
> Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: ignoring
> unknown output usage 000f0070
> Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: ignoring
> unknown output usage 000f0022
> Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: ignoring
> unknown output usage 000f0079
> Sep 10 08:46:40 moewelstat1 kernel: drivers/hid/usbhid/hid-tmff.c: ignoring
> unknown output usage 000f0097

Hi,

apparently, Thrustmaster has changed the report descriptor of the device a 
little bit. Probably also the protocol for this device is a little bit 
different. I have added Zinx to CC, as he wrote the original driver.

For start, running hd in debugging mode (CONFIG_HID_DEBUG and modprobing 
'hid' module with 'debug=2' parameter) and capturing output of a working 
session in windows might be good steps.

-- 
Jiri Kosina
SUSE Labs


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Force Feedback for Thrustmaster RGT Pro Clutch Pedal Edition racing wheel
  2008-09-13 16:32 ` Annick et Jean-Philippe
@ 2008-09-20 20:49   ` Anssi Hannula
  0 siblings, 0 replies; 6+ messages in thread
From: Anssi Hannula @ 2008-09-20 20:49 UTC (permalink / raw)
  To: Annick et Jean-Philippe; +Cc: Didier Moens, linux-input

Annick et Jean-Philippe wrote:
> Hi, Didier, and all.

Hi!

>> I'm trying to get force feedback activated on this quite wonderful
>> racing wheel ...
>> (patches against 2.6.25, but I've already tested with 2.6.26.3)
>> ...
>> Unfortunately, this yields no improvement : no force feedback is sent
>> to the wheel (tested with ff-utils).
>> ...
> 
> Not sure this will fix your issues, but ...
> 
> ff-utils original code has 2 flaws :
> - it is NOT 64-bit compatible
> - it was coded for 2.4.x kernels, and when you compile it, it does not use
>   the includes of your specific kernel, but those shipped with the sources
>   (see sub-folder "linux")

Works fine for me here on 64-bit, and uses standard headers. Maybe you
are using an old version?

The latest version is in linuxconsole SVN:
http://linuxconsole.svn.sourceforge.net/viewvc/linuxconsole/trunk/utils/
Downloadable with SVN command (on one line):
svn co
https://linuxconsole.svn.sourceforge.net/svnroot/linuxconsole/trunk/utils
input-utils


> So I recommend you apply the patch that fixes this issues :
> look on SourceForge libff patches page ...
> 
> https://sourceforge.net/tracker/?func=detail&atid=440671&aid=2098907&group_id=44724

libff is stale project, I suspect this should be filed to linuxconsole
instead (after checking the problems still exist, of course). Hopefully
its maintainers are active. If not, post here.

> 
> Then, be sure to test FF with "ffcfstress" (only for Constant Force),
> not only with "fftest" ;
> the first one works very well with my Logitech G25,
> whereas I not sure the second one does ... (the rendered Constant Force
> effect is so week, that it's not that clear ...).
> 
> Finally, you can try the FFConsoleDemo of the OIS library (get 1.2.0
> sources,
> and apply the recent "Linux FF 64bit port + Windows FF fixes +
> DemoFFTest" patch
> https://sourceforge.net/tracker/?func=detail&atid=775955&aid=2087429&group_id=149835)
> ; it tests constant and periodic FF (Constant Force test is OK for my
> G25, not periodic).
> 
> Hope this helps.
> 
> Jean-Philippe MEURET


-- 
Anssi Hannula

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Force Feedback for Thrustmaster RGT Pro Clutch Pedal Edition racing wheel
  2008-09-20  2:44 ` Jiri Kosina
@ 2008-09-24 11:32   ` Didier Moens
  2008-10-17  9:18     ` Jiri Kosina
  0 siblings, 1 reply; 6+ messages in thread
From: Didier Moens @ 2008-09-24 11:32 UTC (permalink / raw)
  To: Jiri Kosina, linux-input; +Cc: Zinx Verituse

Dear,

On 20/09/08 04:44, Jiri Kosina wrote:
> For start, running hd in debugging mode (CONFIG_HID_DEBUG and modprobing 
> 'hid' module with 'debug=2' parameter) and capturing output of a working 
> session in windows might be good steps.
>   

Thank you all (Jiri, Anssi, Jean-Philippe) for your highly valued input 
in getting this steering wheel supported.
By Jiri's request, I've retested the device with hid_debug=2 (recompiled 
kernel 2.6.26.5-27.fc8, as hid is not modularized in Fedora 8 : patch 
see below).

For brevity's sake and to not clog up the mailing list, all logs and 
generated output are available at http://www.dmbr.UGent.be/~didier/tmff/ 
; directory contents :

linux-2.6-dmn-ff2.patch : patch to enable wheel & debug messages
dmesg.out : relevant dmesg ;
messages.out : relevant messages ;
evtest.out : output for ff-utils evtest.
tmcpl/ : 3 screenshots of the Windows ThrustMaster Control Panel.


Additionally, I've run some USB snooping sessions in a native Windows 
session, with both SniffUSB, results in the sniffusb/ directory, and 
Snoopy Pro (http://sourceforge.net/projects/usbsnoop), in snoopypro/. 
Both are GPL-ed applications, and Snoopy Pro runs in Wine (nice for 
interpreting the binary logs).

I gather the snoopypro/USBLog2-forcefeedback.usblog (2370 packets) may 
be the most interesting, so I also converted the binary .usblog to 
plaintext USBLog2-forcefeedback_exp.txt for sake of convenience :

a. Sequence 1-142 (lines 1-2421) : the wheel is connected and 
autocalibrates (turns left and right up to its mechanical boundaries) ;
b. Sequence 143-663[*] (lines 2422-20133) : click button 'Properties', 
then tab 'Test Forces' (see tmcpl/ tmcpl-1.jpg and tmcpl-2.jpg) ;
c. Sequence 141/664[*]-1113[*] (lines 20134-33473) : press button-1 on 
wheel to test "Engine Start" force feedback effect (see tmcpl-3.jpg), 
force feedback works ;
d. Sequence 1114[*]-1186 (lines 33474-35954) : close Thrustmaster 
Control Panel.

([*] as packets are spuriously captured, this is a guesstimation)


Please indicate whether you might need more information ; I'm available 
for any patching and/or testing.



Best regards,

Didier


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Force Feedback for Thrustmaster RGT Pro Clutch Pedal Edition racing wheel
  2008-09-24 11:32   ` Didier Moens
@ 2008-10-17  9:18     ` Jiri Kosina
  0 siblings, 0 replies; 6+ messages in thread
From: Jiri Kosina @ 2008-10-17  9:18 UTC (permalink / raw)
  To: Didier Moens; +Cc: linux-input, Zinx Verituse

On Wed, 24 Sep 2008, Didier Moens wrote:

> > For start, running hd in debugging mode (CONFIG_HID_DEBUG and 
> > modprobing 'hid' module with 'debug=2' parameter) and capturing output 
> > of a working session in windows might be good steps.
> Thank you all (Jiri, Anssi, Jean-Philippe) for your highly valued input 
> in getting this steering wheel supported. By Jiri's request, I've 
> retested the device with hid_debug=2 (recompiled kernel 2.6.26.5-27.fc8, 
> as hid is not modularized in Fedora 8 : patch see below).
> For brevity's sake and to not clog up the mailing list, all logs and generated
> output are available at http://www.dmbr.UGent.be/~didier/tmff/ ; directory
> contents :

Hi Didier,

sorry for not getting back to you sooner. The URL doesn't seem to be alive 
any more. Could you please send the output data as mail attachment, if 
they are not too huge?

Thanks,

-- 
Jiri Kosina
SUSE Labs

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-10-17  9:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-13 15:09 Force Feedback for Thrustmaster RGT Pro Clutch Pedal Edition racing wheel Didier Moens
2008-09-13 16:32 ` Annick et Jean-Philippe
2008-09-20 20:49   ` Anssi Hannula
2008-09-20  2:44 ` Jiri Kosina
2008-09-24 11:32   ` Didier Moens
2008-10-17  9:18     ` Jiri Kosina

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).