I've been tinkering with this driver to try to get my TMX Force Feedback to initialize. Here are my findings:
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).
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
The model request uses the bRequest == 0x47 instead of 0x49 for all other wheels. It does return [0x04, 0x07] as expected though.
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?
Hi!
I've been tinkering with this driver to try to get my TMX Force Feedback to initialize. Here are my findings:
0xb67e
to0xb65d
to0xb67f
.tmdrv
to initialize all the way to0xb67f
0xb67f
HID device. Funnily enough0xb67e
is not a HID device so a separate USB kernel module would be required to trigger the upgrade to0xb65d
(step 2), and then the HID module should be able to trigger a second update to0xb67f
(step 3) if the model probe confirms the wheel is a TMX (thankfully the model probe seems to work on both steps).tmdrv
repo. tmx-full.pcapng.gzbRequest == 0x47
instead of0x49
for all other wheels. It does return[0x04, 0x07]
as expected though.bRequest == 0x48
instead of0x53
. (bValue == 0x40
) At least I think so. The module completes the init successfully with these values, and it's the onlyOUT
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?