scarburato / hid-tminit

Linux driver to properly initialize some Thrustmaster Wheels
GNU General Public License v2.0
30 stars 7 forks source link

TMX Force Feedback #15

Open azertyfun opened 1 year ago

azertyfun commented 1 year ago

Hi!

I've been tinkering with this driver to try to get my TMX Force Feedback to initialize. Here are my findings:

  1. As expected, the TMX requires a two-step initialization from productId 0xb67e to 0xb65d to 0xb67f.
    • I've been using tmdrv to initialize all the way to 0xb67f
    • I patched this module to only register the 0xb67f HID device. Funnily enough 0xb67e is not a HID device so a separate USB kernel module would be required to trigger the upgrade to 0xb65d (step 2), and then the HID module should be able to trigger a second update to 0xb67f (step 3) if the model probe confirms the wheel is a TMX (thankfully the model probe seems to work on both steps).
  2. The firmware update really matters! My PCAP is much cleaner since updating the firmware, and doesn't really match what's in the tmdrv repo. tmx-full.pcapng.gz
  3. The model request uses the bRequest == 0x47 instead of 0x49 for all other wheels. It does return [0x04, 0x07] as expected though.
  4. The change request seems to be bRequest == 0x48 instead of 0x53. (bValue == 0x40) At least I think so. The module completes the init successfully with these values, and it's the only OUT URB request I see in my PCAP.

I've got to go to sleep now, tomorrow I'll try to get Assetto Corsa to run on Linux to see if that 0x48 request actually does anything... Unless you have better debugging tools you use to check that FFB actually works?

scarburato commented 1 year ago

to use FFB you need a dedicated driver, this driver is just to bootstrap the wheel in its correct state, it does not implement ffb