Joeman n°34 May 24, 2024 @ 12:38am
[FIXED] Generic Switch Pro Controller recognized as different controllers on Linux and Windows and gyro input not recognized on Linux
Hello guys! Sorry for the long post (and title), but i made sure to provide as much detail as i could.

OS info first: My computer is a desktop with dual boot of Garuda Linux Dragonized (arch-based. This is my "main" OS) and Windows 11 (which i keep in a separate drive just in case).
All info provided is considering tests on Steam, either on the controller settings input test or in-game, on the Linux system, except when noted otherwise.

So i recently bought a generic switch pro controller (model NS009S) and was testing it out.

It works pretty well, all things considered. Connects to PC via cable and bluetooth (i use a BT 5.0 dongle), and connects to my android phone via BT with two possible "modes", as written in the user manual.

Hat buttons, L/R sticks, D-pad, +/- and sholder buttons all work fine always (aside from ZL/ZR being digital triggers, not analog, which is fine). Home button works only when connected via wire, and "share" button doesn't work at all (which i don't really care about). Steam recognizes the controller as a "Gamesir T4 Pro" when connected via BT, and as a "SHANWAN Android Controller" when connected via cable.

Now, this controller is advertised as having 6-axys gyro and accelerometer, which is neat! But i wasn't able to find a way to test them, or at least check that they do actually exist. I tried the Steam controller input test, online gamepad tester [hardwaretester.com], Game Controller Tester [powgames.itch.io] (via Wine, which i know is not the best test, but was worth a shot), KDE config's built-in controller settings and controller configuration for the Dolphin emulator, none of which seemed to indicate any gyro or accelerometer input.

To test a bit further, i booted up Windows 11 and checked there. Wouldn't you know, it worked... kinda.

On Windows, Steam actually recognized the controller as an XBOX S controller when connected via bluetooth, and as an actual Nintendo Switch Pro Controller when connected by cable. On Windows, home button worked in both cases, but only when connected by cable did the gyscope and accelerometer inputs show up. In that case, everything worked fine: all buttons (including home and share), both analogs, and all 6 motion axis. Steam even recognized the controller as having rumble feature in the sholder buttons, which it doesn't.

Still on Windows and conencted via cable, aforementioned Game Controller Tester [powgames.itch.io] too showed everything was working fine.


So that proves that the controller does, in fact, have gyro controls (hooray!), so now the question is: why exactly is the controller recognized differently on Linux and Windows? and on that note, why is it recognezed differently when connected via cable and via bluetooth? And most importantly: how can i make sure it always works like it should?

I searched a bit and couldn't find much info on a situation this niche (Linux gaming, generic and quite recent switch pro controlle... recipe for a headache, i know...), but i did find this post with a (surprisingly) similar issue. Unfortunately the fix proposed by user viram1 did not work for me. Worth noting is that the controller showed different VID and PID when connected via cable and via BT. I tried both suggested strings with both VIDs and PIDs, making sure to reset Steam each time i changed the config file. That did not work, in fact it actually made Steam stop recognizing my controller at all until i removed the new line from the config file.

I suspect it's something to do with the drivers for the controller, but i am out of my field with anything involving drivers.

So in summary/TLDR:

Linux, connected via bluetooth:
  • Recognized as "Gamesir T4 Pro";
  • All buttons work, except share;
  • Gtro inputs not recognized;

Linux, connected via cable:
  • Recognized as "SHANWAN Android Controller";
  • All buttons work except home and share;
  • Gyro inputs not recognized;

Windows 11, connected via bluetooth:
  • Recognized as "XBOX S Controller";
  • ALL buttons work;
  • Gyro inputs not recognized;

Windows 11, connected via cable: (PERFECT!)
  • Recognized as "Switch Pro Controller";
  • ALL buttons work;
  • Gyro inputs are recognized and work as expected;

    A fix or workaround would be ideal, but any information on the matter is greatly appreciated. Thanks in advance!
Last edited by Joeman n°34; Jun 2, 2024 @ 8:37pm

Something went wrong while displaying this content. Refresh

Error Reference: Community_9708323_
Loading CSS chunk 7561 failed.
(error: https://community.fastly.steamstatic.com/public/css/applications/community/communityawardsapp.css?contenthash=789dd1fbdb6c6b5c773d)
Showing 1-2 of 2 comments
Joeman n°34 Jun 2, 2024 @ 8:36pm 
SO, after some more days of research, it turns out i'm an idiot and skipped over this specific section [wiki.archlinux.org] of the Arch wiki's "Gamepad" page that describes my exact problem and solution... turns out the kernel was just being picky on what it considered should be bind to the hid_nintendo driver.

If you happened to stumble upon this post looking for a solution for the same problem, give the above link a try.

Granted, this only fixed everything related to the USB case. Connection through Bluetooth is still the same unfortunately, so still looking for for a possible fix for that one, although i'm not so sure it'd be possible.
Chicken Joker Aug 11, 2024 @ 3:02pm 
Thank you!
Showing 1-2 of 2 comments
Per page: 1530 50

Date Posted: May 24, 2024 @ 12:38am
Posts: 2