-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ferrari SF1000 Edition Wheel #93
Comments
Hello, thanks for the captures. With some luck, this is probably just a case of adding another fixed hid-tmff2/src/tmt300rs/hid-tmt300rs.c Line 87 in 414f1f0
I would still need the output of If the attachment works the same as other ones encountered so far, you should be able to find it with
The |
Thanks for the quick reply. Without drivers:
ID 044f:b65d ThrustMaster, Inc. Thrustmaster FFB Wheel With drivers: ID 044f:b66e ThrustMaster, Inc. Thrustmaster T300RS Racing wheel
|
Good catch, I was thinking about the case with drivers. With the F1 attachment, there is a way to enter an 'advanced mode' with the wheel that enabled extra features of the attachment if I recall correctly, does that also apply to this attachment? I'm asking because
|
So I didn't have to set this when I tested it in Windows, the display is then also controlled there, which I only managed to do in Linux with F1-21 via UDP. |
Oh okay, in that case the hid-tmff2/src/tmt300rs/hid-tmt300rs.c Line 87 in 414f1f0
Could you capture the USB traffic of plugging in the wheel? It should send over the |
I haven't shortened it now. https://github.com/Wanama78/tm300rs_adv_SF1000/blob/main/init_wheel.pcapng |
Here you look at it, steering wheel integrated into Linux without a driver, nothing works, I found it strange, I was sure that I could control all the buttons, even without a driver. Then I remembered that I had already tested it and Windows was running in the VM and I had only started the first stage of detection. lsusb now shows: what the switch is, possible? And rdesc, throws this out:
plus all the other stuff that follows underneath. Yes, I also made a Wireshark recording, i.e.: ID 044f:b65d ThrustMaster, Inc. Thrustmaster FFB Wheel It can also be Oversteer, now controlling every key except for Maybe this will help |
If I understand you correctly, you mean that without this driver installed, all buttons showed up? Yep, I guess that's expected. The
(Again, if I understand you correctly) Yeah, sounds like the switch that the F1 attachment also requires to enable the wheel's advanced features. Not entirely sure how you activated the mode, have you looked at your wheel's manual?
Sounds like an Oversteer issue, I guess they haven't seen a wheel use those axes before.
|
Oh, by the way, could you merge your changes in |
Yes, force feedback works, but the keys in question don't work with your drivers. Of course, nothing works in Linux without a driver, and the entire steering wheel is not recognized. If I have a Windows VM running and carry out the first recognition there, I get all the buttons and the steering wheel recognized under Linux. But what isn't there is force feedback, because there is no driver. |
So under Linux, with this driver installed, and your wheel in the |
|
Your wheel isn't in the 'Advanced Mode Racer' mode, which what we're currently mostly interested in. |
I recorded it like I mean it. |
Just to check, did you have this driver installed when you recorded that? This driver should accept a PID of |
The driver was blacklisted by me. As I described it here. |
Oh, okay, sorry, in that case I'm afraid I misunderstood your comment thoroughly. Just so that we're on the same page, below is my current understanding of the situation, please correct me if I'm wrong: When you blacklist 'this' driver (are you also blacklisting Assuming that my understanding is correct, I would be interested to know what happens when you connect the It seems like the detection you initially proposed ("tminit {0x02, 0x0a, 0x0005, "Thrustmaster T300 Ferrari SF1000 Edition"}") might not be the one we want to use, I'll look through your captures again and see if I can spot something. Also, I ask again,
|
Yeah, I think |
Everything is fine, I translate in Google, sometimes nothing useful comes out.
I have left an entry in the hid_tminit project. hid_thrustmaster; hid_tminit; hid_tmff_new, sind alle auf der Schwarzen Liste
Test Windows drivers, then exit Windows again.
Then the steering wheel is no longer recognized. I also tried this in hid-tminit:
Unfortunately nothing, except after the first Windows init. |
Ok, if the hid-tmff-new module is loaded before hid-tminit, what I did in Windows can also be done in Linux. When I load this, I get all the buttons again. [ 7537.965573] usb 3-2: new full-speed USB device number 25 using xhci_hcd
[ 7538.125665] usb 3-2: New USB device found, idVendor=044f, idProduct=b65d, bcdDevice= 1.00
[ 7538.125669] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 7538.125671] usb 3-2: Product: Thrustmaster FFB Wheel
[ 7538.125672] usb 3-2: Manufacturer: Thrustmaster I now load hid-tminit: [ 7724.107000] input: Thrustmaster Thrustmaster FFB Wheel as /devices/pci0000:00/0000:00:01.2/0000:20:00.0/0000:21:08.0/0000:2a:00.3/usb3/3-2/3-2:1.0/0003:044F:B65D.00A6/input/input195
[ 7724.107096] hid-thrustmaster 0003:044F:B65D.00A6: input,hidraw6: USB HID v1.00 Gamepad [Thrustmaster Thrustmaster FFB Wheel] on usb-0000:2a:00.3-2/input0
[ 7724.130080] hid-thrustmaster 0003:044F:B65D.00A6: Wheel with (model, attachment) = (0x2, 0xa) is a Thrustmaster T300 Ferrari SF1000 Edition. attachment_found=1
[ 7724.131233] usb 3-2: USB disconnect, device number 25
[ 7724.134147] hid-thrustmaster 0003:044F:B65D.00A6: Success?! The wheel should have been initialized!
[ 7724.794902] usb 3-2: new full-speed USB device number 26 using xhci_hcd
[ 7724.961076] usb 3-2: New USB device found, idVendor=044f, idProduct=b696, bcdDevice= 7.00
[ 7724.961080] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 7724.961082] usb 3-2: Product: Thrustmaster Advanced Mode Racer
[ 7724.961083] usb 3-2: Manufacturer: Thrustmaster
[ 7724.979244] input: Thrustmaster Thrustmaster Advanced Mode Racer as /devices/pci0000:00/0000:00:01.2/0000:20:00.0/0000:21:08.0/0000:2a:00.3/usb3/3-2/3-2:1.0/0003:044F:B696.00A7/input/input196
[ 7724.979349] tmff2 0003:044F:B696.00A7: input,hidraw6: USB HID v1.11 Joystick [Thrustmaster Thrustmaster Advanced Mode Racer] on usb-0000:2a:00.3-2/input0
[ 7724.993118] tmff2 0003:044F:B696.00A7: force feedback for T248 However, the driver is not loaded correctly. |
Alright, I'll try to be as clear as I can, hopefully Google Translate can translate this properly. Thrustmaster wheels are weird, because they have a two-stage bootup. In the first stage, they all show up as a generic FFB device, with USB PID Please don't blacklist/unblacklist modules, it makes it very difficult for me to follow what's going on. You should have Please explain clearly what you mean by
Changing I don't want to sound rude, I appreciate that you're participating in this project, but I do need to understand what you're trying to say, and I feel like Google Translate is letting us both down in this regard. Similarly, I'm afraid I need more specific descriptions.
What do you mean? How would the driver be loaded correctly? Is
Why do you want to unload
What things? Is it vibrating? |
I'll try another program!
I understand that the steering wheel starts in 2 steps and hid-tminit takes over.
I understand what the individual drivers do, roughly.
The hid-thrustmaster is always on my blacklist.
If I set the value to 0x000b, only the hid-tminit is loaded but not hid-tmff-new. [15575.401557] usb 3-2: new full-speed USB device number 57 using xhci_hcd
[15575.558693] usb 3-2: New USB device found, idVendor=044f, idProduct=b65d, bcdDevice= 1.00
[15575.558698] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[15575.558701] usb 3-2: Product: Thrustmaster FFB Wheel
[15575.558703] usb 3-2: Manufacturer: Thrustmaster
[15575.591896] input: Thrustmaster Thrustmaster FFB Wheel as /devices/pci0000:00/0000:00:01.2/0000:20:00.0/0000:21:08.0/0000:2a:00.3/usb3/3-2/3-2:1.0/0003:044F:B65D.00C5/input/input229
[15575.591985] hid-thrustmaster 0003:044F:B65D.00C5: input,hidraw6: USB HID v1.00 Gamepad [Thrustmaster Thrustmaster FFB Wheel] on usb-0000:2a:00.3-2/input0
[15575.613692] hid-thrustmaster 0003:044F:B65D.00C5: Wheel with (model, attachment) = (0x2, 0xa) is a Thrustmaster T300 Ferrari SF1000 Edition. attachment_found=1 I think we will manage it. |
Okay, good, thank you for the clarification. What does |
Here you can see what is loaded. lsmod | grep hid_t
hid_tminit 16384 0
usbhid 77824 1 hid_tminit lsusb:
|
Is the wheel in some kind of bootloop maybe? What does |
No, nothing seems to happen anymore. If I switch back to 0x0005, everything loads correctly again. |
Alright, let's take a step back. There are a couple questions you didn't answer a bit earlier, let's get back to them now. When you got the following
What did you do to get this kind of output? Can you get back to this state? I had these questions earlier, please answer them.
What do you mean? How would the driver be loaded correctly? Is
Why do you want to unload hid-tmff-new?
What things? Is it vibrating? |
In this case I tested whether hid-tmff-new can be loaded before hid-tminit. If I now unload hid-tmff-new again, the steering wheel is gradually turned to the right on its own. This is the strange behavior I was referring to. This is what is shown to me in this test. [ 7724.107000] input: Thrustmaster Thrustmaster FFB Wheel as /devices/pci0000:00/0000:00:01.2/0000:20:00.0/0000:21:08.0/0000:2a:00.3/usb3/3-2/3-2:1.0/0003:044F:B65D.00A6/input/input195
[ 7724.107096] hid-thrustmaster 0003:044F:B65D.00A6: input,hidraw6: USB HID v1.00 Gamepad [Thrustmaster Thrustmaster FFB Wheel] on usb-0000:2a:00.3-2/input0
[ 7724.130080] hid-thrustmaster 0003:044F:B65D.00A6: Wheel with (model, attachment) = (0x2, 0xa) is a Thrustmaster T300 Ferrari SF1000 Edition. attachment_found=1
[ 7724.131233] usb 3-2: USB disconnect, device number 25
[ 7724.134147] hid-thrustmaster 0003:044F:B65D.00A6: Success?! The wheel should have been initialized!
[ 7724.794902] usb 3-2: new full-speed USB device number 26 using xhci_hcd
[ 7724.961076] usb 3-2: New USB device found, idVendor=044f, idProduct=b696, bcdDevice= 7.00
[ 7724.961080] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 7724.961082] usb 3-2: Product: Thrustmaster Advanced Mode Racer
[ 7724.961083] usb 3-2: Manufacturer: Thrustmaster
[ 7724.979244] input: Thrustmaster Thrustmaster Advanced Mode Racer as /devices/pci0000:00/0000:00:01.2/0000:20:00.0/0000:21:08.0/0000:2a:00.3/usb3/3-2/3-2:1.0/0003:044F:B696.00A7/input/input196
[ 7724.979349] tmff2 0003:044F:B696.00A7: input,hidraw6: USB HID v1.11 Joystick [Thrustmaster Thrustmaster Advanced Mode Racer] on usb-0000:2a:00.3-2/input0
[ 7724.993118] tmff2 0003:044F:B696.00A7: force feedback for T248 That's all there is to it, I'll test it again tonight. |
As long as the hid-tminit does not work properly, I cannot switch to extended mode. Here are my adjustments to the SF1000 wheel. static u8 t300rs_rdesc_sf1000_fixed[] = {
0x05, 0x01, /* Usage page (Generic Desktop) */
0x09, 0x04, /* Usage (Joystick) */
0xa1, 0x01, /* Collection (Header Application) */
0x09, 0x01, /* Usage (Pointer) */
0xa1, 0x00, /* Collection (Physical) */
0x85, 0x07, /* Report ID (7) */
0x09, 0x30, /* Usage (X) */
0x15, 0x00, /* Logical minimum (0) */
0x27, 0xff, 0xff, 0x00, 0x00, /* Logical maximum (65535) */
0x35, 0x00, /* Physical minimum (0) */
0x47, 0xff, 0xff, 0x00, 0x00, /* Physical maximum (65535) */
0x75, 0x10, /* Report size (16) */
0x95, 0x01, /* Report count (1) */
0x81, 0x02, /* Input (Variable, Absolute) */
0x09, 0x31, /* Usage (Y) */
0x26, 0xff, 0x03, /* Logical maximum (1023) */
0x46, 0xff, 0x03, /* Physical maximum (1023) */
0x81, 0x02, /* Input (Variable, Absolute) */
0x09, 0x35, /* Usage (Rz) */
0x81, 0x02, /* Input (Variable, Absolute) */
0x09, 0x36, /* Usage (Slider) */
0x81, 0x02, /* Input (Variable, Absolute) */
0x75, 0x08, /* Report size (8) */
0x26, 0xff, 0x00, /* Logical Maximum (255) */
0x46, 0xff, 0x00, /* Physical Maximum (255) */
0x09, 0x40, /* Usage (Vx) */
0x81, 0x02, /* Input (Variable, Absolute) */
0x09, 0x41, /* Usage (Vy) */ //Wanama
0x81, 0x02, /* Input (Variable, Absolute) */
0x09, 0x33, /* Usage (Rx) */
0x81, 0x02, /* Input (Variable, Absolute) */
0x09, 0x34, /* Usage (Ry) */
0x81, 0x02, /* Input (Variable, Absolute) */
0x09, 0x32, /* Usage (Z) */
0x81, 0x02, /* Input (Variable, Absolute) */
0x09, 0x37, /* Usage (Dial) */
0x81, 0x02, /* Input (Variable, Absolute) */
0x05, 0x09, /* Usage Page (Button) */
0x19, 0x01, /* Usage Minimum (0x01) */
0x29, 0x1a, /* Usage Minimum (0x1a) */
0x25, 0x01, /* Logical Maximum (1) */
0x45, 0x01, /* Physical Maximum (1) */
0x75, 0x01, /* Report size (1) */
0x95, 0x1a, /* Report Count (26) */
0x81, 0x02, /* Input (Variable, Absolute) */
0x75, 0x06, /* Report size (6) */
0x95, 0x01, /* Report Count (1) */
0x81, 0x03, /* Input (Variable, Absolute, Constant) ? */
0x05, 0x01, /* Usage Page (Generic Desktop Controls) */
0x09, 0x39, /* Usage (Hat switch) */
0x25, 0x07, /* Logical Maximum (7) */
0x46, 0x3b, 0x01, /* Physical Maximum (315) */
0x55, 0x00, /* Unit Exponent (-16) */
0x65, 0x14, /* Unit (Eng Rot, Angular Pos) */
0x75, 0x04, /* Report size (4) */
0x81, 0x42, /* Input (Variable, Absolute, NullState) */
0x65, 0x00, /* Unit (0x00) */
0x81, 0x03, /* Input (Variable, Absolute, Constant) */
0x85, 0x0a, /* Report ID (0x0a) */
0x06, 0x00, 0xff, /* Usage Page (Vendor) */
0x09, 0x0a, /* Usage (Vendor) */
0x75, 0x08, /* Report size (8) */
0x95, 0x3f, /* Report count (63) */
0x26, 0xff, 0x00, /* Logical maximum (255) */
0x46, 0xff, 0x00, /* Physical maximum (255) */
0x91, 0x02, /* Output (Variable, Absolute) */
0x85, 0x02, /* Report ID (2) */
0x09, 0x02, /* Usage (Vendor) */
0x81, 0x02, /* Input (Variable, Absolute) */
0x09, 0x14, /* Usage (Vendor) */
0x85, 0x14, /* Report ID (0x14) */
0x81, 0x02, /* Input (Variable, Absolute) */
0xc0, /* End collection */
0xc0, /* End collection */
}; If I apply this with 0x0005, the Bootloader becomes active. [11019.012542] usb 3-2: new full-speed USB device number 19 using xhci_hcd
[11019.172857] usb 3-2: New USB device found, idVendor=044f, idProduct=b66c, bcdDevice= 0.01
[11019.172861] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[11019.172863] usb 3-2: Product: T300 Bootloader
[11019.172866] usb 3-2: Manufacturer: Thrustmaster
[11029.538590] usb 3-2: USB disconnect, device number 19 I then have to switch it off again in Windows. |
This generally means that the firmware on the wheel crashed, which I guess I'm not entirely surprised about. If I'm understanding you correctly, you've taken the As I see it, we really do need to get the wheel into the What's more, I'm getting contradictory messages here. Maybe it's your translator or something, no clue, but when you say
that clearly doesn't seem to be the case, as you provided a log of the wheel entering into
This log shows |
Yes only because I loaded hidtmff-new before hid-tminit , which does not initialize the wheel completely. The hid-tmff-new then no longer applies, as you can see here.
Although force feedback is written, it does not exist. |
|
Am I right in assuming that you no longer have the T300RS yourself? |
No, I still have my T300. I don't have any attachments to it, though. |
Ok, that's a pity, would have made it easier. So I put on the standard wheel and recorded the init in Windows. Here is also the init to the SF1000 wheel. I have adapted the driver so that I only get the hid-tminit and the wheel no longer gets stuck in the bootloader. This is just to test if the hid-tminit is working properly. But what exactly goes in there, no plan. static const u8 setup_0[] = { 0x42, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const u8 setup_1[] = { 0x0a, 0x04, 0x90, 0x03, 0x00, 0x00, 0x00, 0x00 };
static const u8 setup_2[] = { 0x0a, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00 };
static const u8 setup_3[] = { 0x0a, 0x04, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00 };
static const u8 setup_4[] = { 0x0a, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00 };
static const u8 *const setup_arr[] = { setup_0, setup_1, setup_2, setup_3, setup_4 };
static const unsigned int setup_arr_sizes[] = {
ARRAY_SIZE(setup_0),
ARRAY_SIZE(setup_1),
ARRAY_SIZE(setup_2),
ARRAY_SIZE(setup_3),
ARRAY_SIZE(setup_4)
}; Unfortunately the developer seems to be hard to reach. |
I can still test with the base T300, of course.
I added that bit. For whatever reason, the wheel got stuck in the bootloader without those packets, but I have no idea why or what they do. So far, they haven't been causing any issues for other wheels than the T300, so they've stayed. |
Yes, it seems that another entry is missing. In which area of init were you looking? |
They are |
Hi, I use the SF1000 wheel on the T300RS.
Now some buttons don't work with the driver.
I uploaded some Wireshark data, with a representation of the wheel and the buttons, which have no function.
Which can be found here:
(https://github.com/Wanama78/tm300rs_adv_SF1000)
I could do the detection in "tminit {0x02, 0x0a, 0x0005, "Thrustmaster T300 Ferrari SF1000 Edition"}",
Installing drivers, that's about it as far as my options for doing more with a driver are concerned.
At this point I would like to thank you for your work on this driver, it's a lot of fun to use it.
If further data is needed to solve the problem, I will try to provide it.
The text was updated successfully, but these errors were encountered: