On Fri Aug 8 21:48:51 2025 +0000, Tyson Whitehead wrote:
Right. That makes sense. I don't think, however, that this merge request makes any devices work better. Instead I believe it just breaks `DIPROP_AUTOCENTER` support in a lot of cases. Specifically, wrt to devices that hidraw doesn't work (e.g., so UDEV (input) or SDL are the only option) I expect
- all non-HID driver devices for which the kernel driver supported
autocenter (e.g., the I-FORCE) are now broken wrt `DIPROP_AUTOCENTER` for all buses with respect to devices where hidraw wouldn't work with autocenter, but UDEV (input) or SDL would (e.g., devices that that don't turn autocenter on on reset and off on stop all effects)
- all HID non-pidff driver devices for which the kernel driver support
autocenter (e.g., the Logitech WingMan Force) are now broken wrt `DIPROP_AUTOCENTER` for all buses and with respect to devices where hidraw does work with autocenter (e.g., devices that do turn autocenter on on reset and off on stop all effects
- all HID pdiff driver devices for which the kernel driver supported
autocenter (e.g., the USB Sidewinder 2) are broken wrt `DIPROP_AUTOCENTER` for all buses but hidraw Unfortunately I don't have any of these devices to test apart for the USB Sidewinder 2 to prove this. The best I could do was to do was write a [test program](https://github.com/twhitehead/issue-wine-ff-autocenter) so people with them could check. It sounds like @TomaszPakula has some wheels to test. And perhaps @JacKeTUs has some non-HID devices to test too or knows someone who does? I would really appreciate it if everyone could test their device as, if I am correct, there is a lot of breakage here. The only two things I see it _fixing_ is when autocenter is desired to be off and
- the program assumes `DIPROP_AUTOCENTER` is off by default (which it
wasn't under Wine), doesn't check or set it, and so winds up with it on, or
- the kernel driver claims autocenter support but doesn't actually
support disabling it so it gets enabled (on the internal reset) and then winds up stuck on despite being told to turn off (on the internal stop all effects). Of course, if either of these circumstances exist, this doesn't really fix anything. It just shuffles the breakage between on and off. Hence the italics. My expectation is that this merge request originated out of the first of these. That is easy to fix once verified (please run the test program!), and I would be happy to put together a merge request for it. With regard to the second, if such drivers exist, it a kernel driver bug and needs to be fixed there (or, worst case, an if statement can be be added to Wine to disable autocenter support under UDEV (input) and SDL for only that device).
Nothing is broken, the autocenter is just left to the drivers. The autocenter philosphy is very different on Linux vs windows where Setting an autocenter effect outside of the main program is a valid use-case. Linux doesn't even have a notion of acquiring FFB devices and you're free to send in effects from different.
Yes, this change fixes the behavior of a lot of ffb devices for a lot of users, as can be seen here: https://github.com/ValveSoftware/Proton/issues/8395
Until we have a better Linux ffb api that's closer to the functionality of full PID protocol/dinput ffb api this is the best compromise. If you truly, really, just have to have autocenter on reset without using hidraw, please make an issue in the `hid-universal-pidff` development repository and we could upstream it. We're already tracking the number of effects and we could enable autocenter when there are none.