Paging @ivyl
This has broken quite a lot of sim racing peripherals
Thanks for the poke. I've missed the email about the original reports.
I'm looking into this. The behavior change was supposed to make the hotas / racing devices that we enabled hidraw for work in the first place, without the need to have the hidraw uaccess udev rules as that was a regression vs Proton 9.
Having the same the same device having 2 USB interface descriptors both exposing hidraw devices is not something any of my input devices has.
@JacKeTUs can you try the following patch?
0001-fixup-HACK-winebus.sys-Fall-back-to-non-hidraw-devic.patch
The issue seems to be that the device exposes 2 different interfaces, both are HID. One of them has a vendor specific HID usage page + usage (ff00:0001). Since it's not a generic joystick/gamped we enable hidraw for it:
if (usages->UsagePage != HID_USAGE_PAGE_GENERIC) return TRUE;
if (usages->Usage == HID_USAGE_GENERIC_MOUSE || usages->Usage == HID_USAGE_GENERIC_KEYBOARD)
{
WARN("Ignoring unsupported %04X:%04X hidraw mouse/keyboard\n", vid, pid);
return FALSE;
}
if (usages->Usage != HID_USAGE_GENERIC_GAMEPAD && usages->Usage != HID_USAGE_GENERIC_JOYSTICK) return TRUE;
Then when we are trying to create the SDL backend for the controller part of the device we fail as there's already a hidraw device with given vid and pid.
I've made this logic a bit smarter and check if we should even look for hidraw device in the first place.
I don't have anything that would be affected so I would appreciate if you could give this a spin.
Are there any affordable devices that I could buy for future testing?
@ivyl thank you for the patch, will test it soon!
Are there any affordable devices that I could buy for future testing?
You can get 'Blue pill' - STM32F103C8 based board, it will be perfect for FreeJoy. They are widely available (amazon link, ~15$; aliexpress link, ~3$). You will need ST-LINK programmer (or USB-TTL) for flashing FreeJoy firmware onto it, but sellers often include it as option.
Also you can get control box for these kind of pedals separately (aliexpress link, ~30$ without delivery), but they could vary in versions/revisions...
@ivyl finally got to test this patch, sorry it took so long.
With patched build pedals are detected and i had no issues with them!
Anything specific i can test? Enabling/disabling hidraw,sdl?
Hello!
After this commit my pedals (based on Freejoy firmware) stopped being recognized in Proton.
Device has two input interfaces, only one of them is exposing actual axis/buttons. I believe second one is for configuration.
lsusb output
dmesg output when device is connected
rdesc of first interface
rdesc of second interface
I tested it just launching
wine control joy.cpl, without enabling hidraw.With older Proton build all controllers, including pedals, shows up just fine without enabling hidraw, but with current build (specifically after this commit) pedals are absent. If i enable hidraw, pedals will show up and will be available to the games, but it's not the default setting, and vid/pid can be easily changed from FreeJoy configurator, so whitelisting like this is not preferable.
Log with
WINEDEBUG="+hid": pedals.logIn pedals.log i can see these two lines, when udev bus is initializing:
And later, when sdl bus is initializing, these:
Right now it looks like it affects all controllers with multiple input interfaces (every freejoy based diy controller?), with Proton Experimental and newer.