ValveSoftware / steam-for-linux

Issue tracking for the Steam for Linux beta client
4.27k stars 174 forks source link

8BitDo Pro 2 in Switch mode not detected on Linux, but is on Windows #7818

Open w3bb opened 3 years ago

w3bb commented 3 years ago

Your system information

Please describe your issue in as much detail as possible:

On (my installation of) Linux, the aformentioned controller does not appear in the controller menu. It works fine in Dolphin, Yuzu, and jstest-sdl. It doesn't show up whether connected wired or wirelessly in Switch Mode. Other controllers like my Wii U Pro Controller appear, and the controller works in XInput Mode as well as Apple Mode (DS4 emulation I believe, although without gyro).

Even though the controller isn't supported, multiple people have reported it as working on Windows. It seems like a strange discrepency that might be a bug (although it might be a nothing burger, I'm not super familiar with Steam Input and its internals).

Steps for reproducing this issue:

  1. Switch the 8BitDo Pro 2 to Switch mode
  2. Connect to computer via USB-C or Bluetooth
  3. Observe the controller not showing up within the controller menu

After clearing out controller.txt and attempting to connect the controller, the logs were empty.

5310 commented 3 years ago

I would like to add that the 8BitDo Pro+ version of this line also doesn't work in Switch more under Steam on Linux, but does on Windows. (Every other mode works fine, I use it in XInput mode frequently)

Additionally, the controller is detected by my system just fine, and non-Steam games that support controllers natively respond to it.

And finally, last year, when I bought this controller, I could use it in Steam Linux in Switch mode, even the Switch layout flag worked fine in games like Hades. But since learning about gyro support in Steam I've tried to connect it in Switch mode again and it never detects it.

vectorstorm commented 2 years ago

A follow-up on this:

For me, the 8BitDo Pro 2 on its most recent firmware does connect and work successfully on Linux when connected via a USB cable, in Switch mode (it shows up as "Nintendo Switch Pro Controller: Nintendo Switch Pro Controller")

When connected by Bluetooth in Switch mode, I get these log messages in controller_ui.txt:

[2022-03-03 16:49:24] Controller 5 connected, configuring it now...
[2022-03-03 16:49:36] Warning, couldn't get controller details for 5
[2022-03-03 16:49:36] Controller 5 disconnected
[2022-03-03 16:49:39] Controller 5 connected, configuring it now...
[2022-03-03 16:49:51] Warning, couldn't get controller details for 5
[2022-03-03 16:49:51] Controller 5 disconnected

With this pattern repeating about every fifteen seconds. The controller maintains its bluetooth connection to the PC throughout, but Steam seems to be having trouble recognising it.

This problem only seems to happen if the controller is already known on the PC; if you make your computer completely forget the controller and then re-pair it to the machine, Steam immediately recognises it and is happy to use it until the next time you connect it (at which point it goes back to the "couldn't get controller details" flow described above)

RiantAnda commented 2 years ago

With kernel 5.17, this doesn't look like a Steam issue, but a problem with the linux kernel. Connecting the controller with USB and having the 'S' setting shows several errors in syslog. Most notably kernel: nintendo: probe of 0003:057E:2009.0006 failed with error -110 No device is created under /dev/input/js*, so no controller can show up in steam.

The same goes for the 'A' setting: kernel: sony 0003:054C:05C4.0007: failed to retrieve feature report 0x81 with the DualShock 4 MAC address kernel: sony 0003:054C:05C4.0007: failed to claim input

Only 'D' and 'X' work without errors in syslog, a device under /dev/input/js0 and with the controller showing up under steam.

PastelRobot commented 2 years ago

I own the original 8bitdo pro+ but had the same issues with switch mode. I was able to fix the issue by unloading the hid_nintendo kernel module. This caused steam to recognize the controller as a switch pro controller, and gyro controls then worked in steam.

RiantAnda commented 2 years ago

Thanks, unloading hid_nintendo did the trick! e.g. with rmmod hid_nintendo The controller is working fine in Switch mode now.

Lucario24 commented 2 years ago

I can confirm that rmmod hid_nintendo works but I have to run this command everytime I open steam, how can I make this permanent?

On the other hand, this workaround only works with USB, It doesn't work with bluetooth, any ideas?

fabiscafe commented 2 years ago

@Lucario24 you could blacklist the module or create an udev rule to unload on connection