Bug 219723 - 8BitDo dongles break compatibility with some Linux native games made with Unity Engine
Summary: 8BitDo dongles break compatibility with some Linux native games made with Uni...
Status: NEW
Alias: None
Product: Linux
Classification: Unclassified
Component: Kernel (show other bugs)
Hardware: All Linux
: P3 normal
Assignee: Virtual assignee for kernel bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-01-25 15:17 UTC by Eduardo Medina
Modified: 2025-02-17 17:21 UTC (History)
1 user (show)

See Also:
Kernel Version:
Subsystem:
Regression: No
Bisected commit-id:


Attachments
8BitDo product packaging (768.43 KB, application/x-xz)
2025-01-25 15:17 UTC, Eduardo Medina
Details

Description Eduardo Medina 2025-01-25 15:17:04 UTC
Created attachment 307534 [details]
8BitDo product packaging

Hi, I have two dongles from 8BitDo: one of them is the USB Wireless Adapter 2 and the other is the one that comes with Ultimate 2.4G Wireless Controller.

The games that run through Proton/Wine and the Flatpak versions of RetroArch and Yamagi Quake 2 (the second by setting previously the permission for input devices through Flatseal) work perfectly with the 8BitDo Pro 2 connected to the USB Wireless Adapter 2 and 8BitDo Ultimate 2.4G Wireless Controller, but the controllers aren't detected with some native games for Linux made with Unity. The 8Bitdo Pro 2 is detected through Bluetooth because is identified as an Xbox 360 controller and not as an 8BitDo controller.

Some of the games affected are BallsticNG, Huntdown, Art of Rally and Death Trash, but Hollow Knight works correctly. The failure is different depending of the game. I some of them the left stick, the start button and the A button work, but in others nothing works. Although the failure can be different, I think that the root is the same. You can try the demo from GOG using Heroic Games Launcher.

https://www.gog.com/en/game/death_trash_demo

https://www.gog.com/en/game/huntdown

https://www.gog.com/en/game/ballisticng

https://www.gog.com/en/game/art_of_rally

If you try the games through Steam, you probably don't see the bug because of you are using Steam Input, but with Heroic Games Launcher you use the native support for controllers provided by the games. You can also try disabling Steam Input.

If I run 'lsusb' I get the next results:

-The vendor ID is 2dc8

-The ID of the 8BitDo Ultimate 2.4G Wireless Controller dongle without the controller connected is 3109

-The ID of the 8BitDo Ultimate 2.4G Wireless Controller dongle with the controller connected is 3106

-The ID of the USB Wireless Adapter 2 dongle with nothing connected is 3107

I don't know if something can be faked from the kernel to say to that Unity games that the controller is a generic Xbox controller and not an 8BitDo Controller.

Thanks for reading and sorry if my English is not fully correct.
Comment 1 Niklāvs Koļesņikovs 2025-01-28 13:36:34 UTC
I'm just a random user and frankly I'm a bit sick with flu or the latest CN virus right now, so I can't think straight, but to me this seems like a userspace bug. 

I'd probably try filing a bug with libinput project and see if they maybe can act as some intermediary interface between the various controllers and the actual games via the overall Wayland input stack. Although I can imagine they might not want to, since stuff like Sony DualSense [to name just the most prominent one] might be very tricky to support at that level of the desktop stack.

Best of luck on this, Linux game controller support is a real papercut.
Comment 2 Eduardo Medina 2025-02-17 16:54:59 UTC
I ran the usb-devices twice, once with controller connected to the dongle and once with the dongle without the controller connected. These are the results I get:

Without controller:
T:  Bus=01 Lev=02 Prnt=03 Port=00 Cnt=01 Dev#=  9 Spd=12   MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=2dc8 ProdID=3109 Rev=02.00
S:  Manufacturer=8BitDo
S:  Product=IDLE
S:  SerialNumber=E417D884DFA3
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
E:  Ad=02(O) Atr=03(Int.) MxPS=  64 Ivl=8ms
E:  Ad=81(I) Atr=03(Int.) MxPS=  64 Ivl=8ms

With controller:
T:  Bus=01 Lev=02 Prnt=03 Port=00 Cnt=01 Dev#=  8 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs=  1
P:  Vendor=2dc8 ProdID=3106 Rev=01.14
S:  Manufacturer=8BitDo
S:  Product=8BitDo Ultimate wireless Controller for PC
S:  SerialNumber=E417D884DFA3
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=5d Prot=01 Driver=xpad
E:  Ad=02(O) Atr=03(Int.) MxPS=  32 Ivl=2ms
E:  Ad=81(I) Atr=03(Int.) MxPS=  32 Ivl=2ms

I don't know if the XPAD controller can be modified to fake a standard Xbox 360 or Xbox Series X|S controller.
Comment 3 Eduardo Medina 2025-02-17 17:21:30 UTC
The USB Wireless Adapter 2 also uses de XPAD controller:

T:  Bus=01 Lev=02 Prnt=03 Port=00 Cnt=01 Dev#= 13 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs=  1
P:  Vendor=2dc8 ProdID=3106 Rev=01.00
S:  Manufacturer=8BitDo
S:  Product=8BitDo Receiver
S:  SerialNumber=E417D83F20E9
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=5d Prot=01 Driver=xpad
E:  Ad=02(O) Atr=03(Int.) MxPS=  32 Ivl=8ms
E:  Ad=81(I) Atr=03(Int.) MxPS=  32 Ivl=4ms

Note You need to log in before you can comment on or make changes to this bug.