Third party Xbox controller detected in Steam OS/Steam Deck but different behavior in Fedora 37 MATE-Compiz

Device mentioned:
G SIN third party xbox controller, USB wired, claimed to be working in Windows / Android
Has xinput and dinput modes.【拉拉購】XBOX360-STEAM手把-PC電腦手把-高品質通用副廠有線通用-搖桿-GTA5-NBA-2K20-i.91029150.2621541121

Fedora detects it as (lsusb)
ID 057e:2009 Nintendo Co., Ltd Switch Pro Controller
Steam app does not work in this way.
I cannot switch mode on hardware button.

Yet Steam OS 3 (on Steam Deck, with Steam Dock) detects it as
ID 045e:028e Microsoft Xbox 360 Controller
Steam app is working.
Switching mode on hardware button is not required as it directly enters xinput mode.
p/s: Same to Linux Lite 5.8

The capability of Steam OS gives me glimpse of hope to use this on Fedora. Is there a way to change the device ID, or how different Steam OS detects the USB than Fedora?

I tried:
installed xboxdrv
installed nintendo driver
(but i think both drivers already included Fedora, no need further installation)
modprobe xpad

The OS can only read what the device reports. If the device says it’s a Switch Pro controller with ID 057e:2009, then the OS just says “ok” and configures it accordingly.

I can’t view the link (product not found). I tried to search for “拉拉購 XBOX360” but no results. Maybe it is restricted by IP/location.

  1. Does the controller have a Switch mode?

  2. Can the mode be set before connecting it?

  3. Do you have steam installed from RPMFusion? It includes steam-devices with some additional udev rules, although I don’t think it makes a difference here. Xbox360 controller is very old and well-supported in Linux (xpad kernel driver, you don’t need to install anything); Switch Pro controller is newer but also well-supported by now.

    You can check with:

    $ dnf list --installed 'steam*'

I have a 8BitDo Pro 2 controller with similar mode-changing features. It’s controlled by a slider switch that can be changed before connecting.

In Switch mode, connected via USB, I get this:

$ lsusb | grep -i controller
Bus 001 Device 009: ID 057e:2009 Nintendo Co., Ltd Switch Pro Controller

In XInput mode, connected via USB:

$ lsusb | grep -i controller
Bus 001 Device 008: ID 045e:028e Microsoft Corp. Xbox360 Controller

Yes your reply is pretty accurate. Although this controller is ‘more problematic’ than your 8bitdo.

  1. Your 8bitdo works like my another joypad Logitech F310, which can switch mode without having to turn it on (connect to USB), just need to ‘drag to left or right’ like below:

My third party joypad GSIN needs to be connected to USB to have LED indicator before switching modes. Sadly, due to unknown reason, AND ONLY IN FEDORA, I cannot switch mode (by pressing middle GSIN button).
PChome 24h購物 → See if this link works for you.

Bit manual:
LED 1 2 lit → Xinput mode, Xbox mode
LED 1 4 lit → Dinput mode
LED 3 4 lit → Android mode (dunno what it is, i always change to Xinput mode)

Works with OS-es below (I mean I can easily press GSIN button to switch modes like in manual above)
Windows 7/10(of course)
Steam OS 3
Linux Lite 5.8 (to my surprise it works) - that means Ubuntu should work as well.
Phone Android 12

So pretty much narrow down to… works everywhere except Fedora.

What happens in Fedora when I plug in USB:
Fedora detects it as Nintendo (lsusb)
Controller LED is stuck at LED 3 lit (unknown status), pressing GSIN middle button does not work.

I get you mean by changing mode basically changes the Device ID too, I tested so by following:

I have 1 laptop with dualboot Windows + Fedora:
When I enter Windows and plug USB controller in, Controller enters xinput mode like normal, then I restart the laptop without plugging it out, the controller remains in xinput mode, then In Fedora, Device ID is properly detected as “Microsoft Corp. Xbox360 Controller”.

Of course I want to get rid of Microsoft Windows.

  1. Yes you are on to the point. Explained in 1. Cannot.
  2. I get you. I believe point 3 is working by default, and does not solve my problem.

Thanks for your time.

Right after my long reply, I found the solution for future reference.
I CAN switch mode by doing the following:
Hold the X button right before plugging the USB in, then this GSIN controller is stuck at Full LED indicator (this happens before entering any OS), and in this mode, I can long press GSIN button to switch into any mode I like.
Yeah I can use Xinput now, without having to deal with Windows.

Thanks again for your reply, cause you’re on point.

1 Like

I see, glad you figured it out.

Based on the description of the LEDs, and the fact that it somehow reported as Switch Pro, I suspect the device actually supports Switch mode but they disabled it for whatever reason (maybe it didn’t work correctly, or just to sell different product models). A lot of these third-party controllers probably use the same chip.

Yeah I bet so, though it is not marketed this way.
Now I can switch to PS3 mode / Android mode, and Steam app accepts the inputs.
Although lsusb detects Microsoft Corp. Xbox360 Controller, Steam app and other gamepad detection app does not receive its input.
Oh well, I am fine as long as PS3 mode / Android mode are working.