I'm also having this issue:
SDL2 sees it (so does sdl-jstest)
] > ./sdl2-jstest --list
Found 6 joystick(s)
Joystick Name: 'Open FFBoard FFBoard'
Joystick GUID: 03004e0409120000b0ff000011010000
Joystick Number: 0
Number of Axes: 8
Number of Buttons: 64
Number of Hats: 0
Number of Balls: 0
GameControllerConfig:
missing (see 'gamecontrollerdb.txt' or SDL_GAMECONTROLLERCONFIG)
Joystick Name: 'FANATEC ClubSport USB Shifter'
Joystick GUID: 0300da75b70e0000921a000011010000
Joystick Number: 1
Number of Axes: 0
Number of Buttons: 10
Number of Hats: 0
Number of Balls: 0
GameControllerConfig:
missing (see 'gamecontrollerdb.txt' or SDL_GAMECONTROLLERCONFIG)
Joystick Name: 'Sim © Alex Oz 2021 VKBsim Gladiator EVO L'
Joystick GUID: 03004fdd1d2300000102000011010000
Joystick Number: 2
Number of Axes: 6
Number of Buttons: 79
Number of Hats: 1
Number of Balls: 0
GameControllerConfig:
missing (see 'gamecontrollerdb.txt' or SDL_GAMECONTROLLERCONFIG)
Joystick Name: 'Sim © Alex Oz 2021 VKBsim Gladiator EVO R'
Joystick GUID: 03002fdb1d2300000002000011010000
Joystick Number: 3
Number of Axes: 6
Number of Buttons: 79
Number of Hats: 1
Number of Balls: 0
GameControllerConfig:
missing (see 'gamecontrollerdb.txt' or SDL_GAMECONTROLLERCONFIG)
Joystick Name: 'Microchip Technology Inc. Simlab Handbrake XB1'
Joystick GUID: 030009fbd804000060e7000011010000
Joystick Number: 4
Number of Axes: 1
Number of Buttons: 0
Number of Hats: 0
Number of Balls: 0
GameControllerConfig:
missing (see 'gamecontrollerdb.txt' or SDL_GAMECONTROLLERCONFIG)
Joystick Name: 'Heusinkveld Sim Pedals Ultimate'
Joystick GUID: 0300fed5b73000000310000011010000
Joystick Number: 5
Number of Axes: 3
Number of Buttons: 0
Number of Hats: 0
Number of Balls: 0
GameControllerConfig:
missing (see 'gamecontrollerdb.txt' or SDL_GAMECONTROLLERCONFIG)
But it's not detected in proton:
] > protontricks -c "wine control" 244210
additionally native linux games such as the Linux version of BeamNG detect the controller, but wine games do not. Including wine games running outside of the steam linux runtime weirdly, like RBR
I used the fanatec windows software to set the usb adapter to "shifter" mode. A required step in setting up the shifter. I also ran the calibration according to the manual.
EDIT:
I used protopedal to add a simulated axis and it works now:
protopedal \
--grab \
--axes 1 \
/dev/input/by-id/usb-FANATEC_ClubSport_USB_Shifter-event-joystick
So I found https://github.com/libsdl-org/SDL/issues/8595 which allows for adding a device to SDL's device allow list by vid/pid. I thought this might help however it doesn't work. I suppose it makes sense that it doesn't since SDL already can detect the shifter based on running sdl2-jstest.
Why does wine/proton still ignore devices with only buttons and no axes? Is there still no way to override this other than using protopedal to add a fake axis?
For reference, this is AFAICT the opposite issue from the one described in https://github.com/ValveSoftware/Proton/issues/5126#issuecomment-1434502870 . The SQ shifter has no axes at all, so it's not (or rather shouldn't) being mistaken as an accelerometer because those are only axes with no buttons.
Hello and thank you @kevenwyld for the suggested workaround. I had the same issue on a shifter from a generic controller (VirtualShifter USB device). Was working fine within evdev but games like Dirt Rally 2.0 did not recognized it. Adding an axis to it with protopedal worked like a charm. Made myself a systemd unit for it.
Hello! I believe i found a bug in Wine, which mistakenly disregarded devices without an axis. Made a MR there: https://gitlab.winehq.org/wine/wine/-/merge_requests/8088
It would be great if this (small) patch will be able to get into Proton fast enough, as game devices without an axis are pretty popular among racing/flying sims (button boxes, shifters, etc)
@JacKeTUs I have an SHH shifter too and I can confirm there are some issues detecting it . In my case, it is detected as an Xbox gamepad (for example in Assetto Corsa EVO and Dirt Rally 2, and disabling Steam Input doesn't do anything) and as result some gears cannot be assigned. It works fine natively, even in Plasma settings -> Game controller every gear is detected correctly. The only workaround I found is to edit the registry inside each game's prefix, search for
System\\ControlSet001\\Services\\winebus and add "Map Controllers"=dword:00000000
While this works for me, this setting might interfere with other controllers connected, so it would be best to have a proper fix.
@Mattyan1989, with this patch i'm getting SHH shifter in EVO with no problem
I built latest GE-Proton with this included, please check it out.
https://github.com/JacKeTUs/proton-ge-custom/releases/tag/no-axis-detection
Please revert your game prefix changes and disable every environment variable you may or may not set (PROTON_ENABLE_HIDRAW is one of them, for example)
Also you will need to reset your input settings in game (for EVO at least, search input files in steamapps/compatdata/3058630/pfx/drive_c/users/steamuser/My Documents/ACE/)
To test joystick detection in wine without launching the game you can launch protontricks -c "wine control joy.cpl" 3058630
@JacKeTUs Unfortunately it doesn't solve my issue, it's still detected as xinput device and it doesn't let me map 3rd and 6th gear. This is a constant across every Proton game. Maybe it's a slightly different issue than yours.
jstest says it has 6 axis but every gear is correctly detected
Tried "override" the shifter but then it's not detected at all in game
Seems like we really have different devices under the same name, mine does export only buttons, as in the original issue. Mine is SHH Thorn, and yours may be SHH NEWT2/NEWT/HAWK ?
But yours mistakenly detected as xinput gamepad as it has every heuristic for it? Can you please run udevadm info --query=all --name=/dev/input/by-id/usb-xin-mo.com_SHH_Shifter_Controller-event-joystick ? Does it show ID_INPUT=1 and ID_INPUT_JOYSTICK=1? Also, what driver acquired the device? xpad or hid?
If it is mistakenly(?) detected as xinput in clean wine/proton prefix, this is seems like a different issue 😢
Yes, it is indeed a Newt. The command reports:
ID_INPUT=1
ID_INPUT_JOYSTICK=1
ID_USB_DRIVER=usbhid
Seems to me that game or Wine ignores our 'override' option in joy.cpl, and sets gamepad flag onto your shifter.
You should be able to map shifter inputs for 'Xinput gamepad' from game settings (if we're talking about EVO, i didn't test other games yet)
You can workaround this stuff with protopedal, creating dummy button JOYSTICK, and remove buttons A and B (map it as something else)
For example:
protopedal -n NEWT -b JOYSTICK -s 0:A -b THUMB -s 0:B -b TOP -s 0:C -b TOP2 -s 0:X -b PINKIE -s 0:Y -b BASE -s 0:Z -b BASE2 -s 0:L1 -b BASE3 -s 0:L2 --no-auto-axes --no-auto-buttons /dev/input/by-id/usb-xin-mo.com_SHH_Shifter_Controller-event-joystick
Here A became JOYSTICK, B became THUMB etc. Now your 'joystick' does not have important A and B buttons to be detected as XInput, and wine should force directinput interface to it.
Please modify arguments according to your real buttons, launching --list-buttons should help.
I'll try to look into that behavior of Wine. IMO, override option should work, otherwise why is it there :D
@JacKeTUs From a quick try with protopedal, it seems to work. Now that the new virtual device doesn't have any axes, I also get to experience the bug as you reported on experimental, while your fixed GE-Proton version works! Hopefully this fix gets into Proton too. Thank you!
@Mattyan1989, can you try setting this device as 'wheel style controller' in game launch settings?
Like so:
SDL_JOYSTICK_WHEEL_DEVICES=0x16c0/0x05e1 %command%
And set game to use Proton 10 (or just use my build of GE)
@JacKeTUs This works! I can bind all the gears without needing protopedal and it is correctly recognized ingame as "xin-mo.com SHH Shifter Controller". As it retains its phantom axes, everything works also on regular Proton.
SDL_JOYSTICK_WHEEL_DEVICES=0x16c0/0x05e1x1 2025-05PROTON_ENABLE_HIDRAWx1 2025-05SDL_GAMECONTROLLERCONFIGx1 2024-12
Hi
I have Logitech G29 wheel + pedals and I bought Fanatec shifter (connected with USB adapter). The Fanatec shifter is recognized by Linux and there is a properly functioning /dev/input/js2 device.
---- jstest output ---
$ jstest /dev/input/js2
Driver version is 2.1.0.
Joystick (FANATEC ClubSport USB Shifter) has 0 axes ()
and 10 buttons (Trigger, ThumbBtn, ThumbBtn2, TopBtn, TopBtn2, PinkieBtn, BaseBtn, BaseBtn2, BaseBtn3, BaseBtn4).
Testing ... (interrupt to exit)
Buttons: 0:off 1:on 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off
However, the games I have tested (EA WRC, Dirt Rally 2, Project Cars 2, Assetto Corsa Competizione) do not recognize key bindings from the Fanatec shifter.