Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nintendo Switch Pro Controller random disconnects with rumble enabled #7631

Open
sirdeiu opened this issue Jan 30, 2021 · 49 comments
Open

Nintendo Switch Pro Controller random disconnects with rumble enabled #7631

sirdeiu opened this issue Jan 30, 2021 · 49 comments

Comments

@sirdeiu
Copy link

sirdeiu commented Jan 30, 2021

Your system information

  • Steam client version (build number or date): 20 Dec 2020 , package version: 1608507519
  • Distribution (e.g. Ubuntu): openSUSE Tumbleweed kernel: 5.10.9-1-default and KDE Plasma5
  • Opted into Steam client beta?: [Yes/No] No (but tried with Beta version also)
  • Have you checked for system updates?: [Yes/No] Yes

Please describe your issue in as much detail as possible:

While trying to play Streets of Rage 4, the Nintendo Pro Controller keeps disconnecting (turns off, LEDs off - no input), then back on again and Steam shows again the Nintendo Pro config notification and game continues.
The controller is connected via Bluetooth and this behavior seems to happen randomly, meaning sometimes I can play half a level in SOR4 or sometimes it happens as soon as starting to move it the level.

Steps for reproducing this issue:

  1. Connect Nintendo Switch Pro controller via Bluetooth
  2. Start Streets of Rage 4, start new or continue game, try playing
  3. Randomly the Switch Pro controller gets disconnected, game presents pause menu, then controller is back and you can resume.

Playing with the controller connected via USB cable is normal, the issue is not present there.

Sometimes this appears in dmesg when the issue occurs: Bluetooth: Frame is too long (len 54, expected len 51)

Have tried this with two adapters: Intel AX200 Wifi Bluetooth adapter and an ASUS BT-400 Bluetooth Adapter

So far, this game seems to be only one that causes this random disconnect issue, or at least the most reliable.

@sirdeiu
Copy link
Author

sirdeiu commented Jan 30, 2021

Adding info: issue is not present on Windows 10 on the same machine/hardware/steam version/game etc.

@kisak-valve
Copy link
Member

Hello @sirdeiu, any particular reason why you suspect this is a Steam client issue? To me, this reads like a kernel or Bluetooth daemon issue and an investigation should probably start there.

@sirdeiu
Copy link
Author

sirdeiu commented Jan 30, 2021

Hi @kisak-valve, well, mainly because I'm playing the game on Steam and using the Steam controller support for Nintendo Pro or Sony DS4 etc. It mostly seems like a game issue, but I said I'd try asking here first.

I've also now tried with the dkms-hid-nintendo driver and joycond, and I can see the issue using that also, but not as frequent.

I have raised this issue also with the dkms-hid-nintendo owner and they asked about rumble in game, so I tested disabling that in game (setting the Vibration Intensity to 0%) and while playing the Pro controller was OK, I could finish an entire game level.

I've tried the same using Steam (and also disabling rumble in Steam Controller configuration for the Pro controller) and it worked a bit better I guess, but the issue is still present while testing. It seems that for some reason, when using Steam, the Pro controller is more prone to this issue. But mostly for SOR4. Have tried other games also and they worked OK.

So it may be just the rumble function or something else also.

Any ideas, please?

@kisak-valve
Copy link
Member

Nintendo Switch Pro Controller random disconnects with rumble enabled

Issue transferred from #7776.
@AwesamLinux posted on 2021-05-01T14:05:08:

Your system information

  • Steam client version (build number or date): 1618256785 (Built Apr 12 2021)
  • Distribution (e.g. Ubuntu): Linux Mint 20.1
  • Opted into Steam client beta?: Currently no (but tried both)
  • Have you checked for system updates?: Yes
    system_info.txt

Please describe your issue in as much detail as possible:

Nintendo Switch Pro Controller over bluetooth randomly disconnects when rumble is enabled (in Steams controller settings). The more rumble feedback a game has, the more frequent the problem occurs.

I have tried both the client version above, and the current beta available version available today 1/5.

I remember having this exact same problem sometime last year, it got fixed at some point with a client update if I remember correctly, but now the problem appears to be back.

Steps for reproducing this issue:

  1. Make sure rumble is enabled in Steams controller settings
  2. Play a game that has rumble, I tried it with the Linux Native game DRAG, and R-Type Final 2 through Proton.
  3. Controller will randomly disconnect

@kisak-valve kisak-valve changed the title Nintendo Switch Pro controller random disconnects with bluetooth when playing Streets of Rage 4 Nintendo Switch Pro Controller random disconnects with rumble enabled May 1, 2021
@ravinsweden
Copy link

Was this fixed ? I also have this issue. Tried different Bluetooth dongles.

@clarfonthey
Copy link

I get the same issue with No Man's Sky. If it's not a Steam Input issue, it's a specific issue with how Proton interacts with Steam Input.

@ravinsweden
Copy link

If i disable Steam controller support for a specific game in Steam big picture and instead run the game with built in controller support the disconnections stops.

@ravinsweden
Copy link

Try running dolphin emulator, e.g Metroid Prime 2.

@s-daveb
Copy link

s-daveb commented Sep 2, 2021

I don't think it's too game-specific. This also happens to me when playing The Elder Scrolls: Skyrim with Proton.
For what it's worth, this doesn't happen with other titles on Steam for macOS, if that helps the developers figure out how it happens.

@hashworks
Copy link

hashworks commented Sep 19, 2021

I also encountered this problem. Disabling the Steam management of the Switch Controller fixed it, like others have said.

dkms-hid-nintendo had similar issues when rumble was enabled. It seems like the connection was spammed with rumble-state-updates, resulting in instability — but that's fixed now. The steam-for-linux implementation might have a similar problem? Looking at their commits could help.

@Jenco420
Copy link

I also encountered this problem. Disabling the Steam management of the Switch Controller fixed it, like others have said.

dkms-hid-nintendo had similar issues when rumble was enabled. It seems like the connection was spammed with rumble-state-updates, resulting in instability — but that's fixed now. The steam-for-linux implementation might have a similar problem? Looking at their commits could help.

This fixes it for me as well.

@s-daveb
Copy link

s-daveb commented Sep 28, 2021

For me it was enough to just disable the rumble feature in Steam settings.

@Jenco420
Copy link

Jenco420 commented Sep 28, 2021

For me it was enough to just disable the rumble feature in Steam settings.

I'll try this tonight.

Edit: just disabling rumble fixes the random disconnects.

@Cknight70
Copy link

This has been an issue for me for months now compounded by the fact that Proton not respecting my controller options (turning off rumble, disabling the light on the controller)

Your system information
Steam Ver: Sep 17 2021 Package ver: 1631912732
Distro: Arch Kernel 5.14.8 KDE5

@psycho-driver
Copy link

psycho-driver commented Dec 30, 2021

I also encountered this problem. Disabling the Steam management of the Switch Controller fixed it, like others have said.

dkms-hid-nintendo had similar issues when rumble was enabled. It seems like the connection was spammed with rumble-state-updates, resulting in instability — but that's fixed now. The steam-for-linux implementation might have a similar problem? Looking at their commits could help.

I've found that the hid-nintendo kernel driver still has some problems with rumble and disconnects even after that latest patch. I was able to play through a full track of Little Racers Street with rumble enabled (with only one controller connected) without problem, but trying to play Pocket Cars (with four controllers enabled), which seems to have a fair amount of controller issues anyway at their current point of early access and which seems to use rumble excessively, caused spurious disconnects of the controllers pretty often.

I'm starting to believe the underlying problem may be in the linux bluetooth stack.

I have no problems with disconnects with four controllers going as long as rumble is disabled.

@DaVince
Copy link

DaVince commented Jan 30, 2022

The random disconnects also happen for me, but they happen basically anywhere, whether I'm in a game or not, and disabling rumble does indeed get rid of the disconnects entirely. I don't think the third party game label is actually relevant for this issue.

@ravinsweden
Copy link

There is a battery connection problem on some controllers, that will disconnect the battery if the controller is vibrating, you can check if this is the case by smashing the controller on your hand and see if it’s disconnects.
If this is the case then open the controller and put some paper to make pressure on the connection.

@hashworks
Copy link

hashworks commented Jan 30, 2022

There is a battery connection problem on some controllers

Just to be clear: This issue is real and does not occur with the same Switch Pro Controller when one is using a different bluetooth stack (f.e. on the Nintendo Switch, Windows, Android or using a bluetooth adapter for controllers like the 8BitDo USB Wireless Adapter).

@ravinsweden
Copy link

Hi I’m sorry but that is incorrect, when using 8bit-do adapter I also have disconnections but it was solved but disable controller support in steam because somehow steam is interfering with the controller connection.

@DaVince
Copy link

DaVince commented Jan 30, 2022

There is a battery connection problem on some controllers, that will disconnect the battery if the controller is vibrating, you can check if this is the case by smashing the controller on your hand and see if it’s disconnects. If this is the case then open the controller and put some paper to make pressure on the connection.

I intensively use the controller on my Switch as well (from a 9 foot distance and without any disconnects) so this sounds like a software issue to me.

@a-priestley
Copy link

a-priestley commented Mar 9, 2022

Still an issue. My journal errors also show Frame is too long (len 54, expected len 51), but I don't know what that means. It happens while playing Elden Ring, but I have to use desktop config for that game, so the game might be irrelevant.

@grinness
Copy link

same issue here on a brand new pro controller, on Arch (Kernel: 5.16.14-zen1-1-zen -- built in nintendo-hid).
While running yuzu, rumble on: controller keeps on disconnecting. rumble off: all fine

on journalctl, I find the following when it disconnects:
tlp[8764]: Warning: systemd-rfkill.service is not masked, radio device switching may not work as configured.
tlp[8764]: >>> Invoke 'systemctl mask systemd-rfkill.service' to correct this.
tlp[8764]: Warning: systemd-rfkill.socket is not masked, radio device switching may not work as configured.
tlp[8764]: >>> Invoke 'systemctl mask systemd-rfkill.socket' to correct this.
kernel: nintendo 0005:057E:2009.0012: unknown main item tag 0x0
kernel: nintendo 0005:057E:2009.0012: hidraw7: BLUETOOTH HID v80.01 Gamepad [Pro Controller] on 00:1a:7d:da:71:15
kernel: nintendo 0005:057E:2009.0012: using factory cal for left stick
kernel: nintendo 0005:057E:2009.0012: using factory cal for right stick
kernel: nintendo 0005:057E:2009.0012: using factory cal for IMU
kernel: nintendo 0005:057E:2009.0012: controller MAC = BC:CE:25:38:F2:06
kernel: input: Nintendo Switch Pro Controller as /devices/pci0000:00/0000:00:08.1/0000:0c:00.3/usb5/5-4/5-4.1/5-4.1:1.0/bluetooth/hci0/hci0:75/0005:057E:2009.0012/input/input47
kernel: input: Nintendo Switch Pro Controller IMU as /devices/pci0000:00/0000:00:08.1/0000:0c:00.3/usb5/5-4/5-4.1/5-4.1:1.0/bluetooth/hci0/hci0:75/0005:057E:2009.0012/input/input48
tlp[8820]: Warning: systemd-rfkill.service is not masked, radio device switching may not work as configured.
tlp[8820]: >>> Invoke 'systemctl mask systemd-rfkill.service' to correct this.
tlp[8820]: Warning: systemd-rfkill.socket is not masked, radio device switching may not work as configured.
tlp[8820]: >>> Invoke 'systemctl mask systemd-rfkill.socket' to correct this.
upowerd[1379]: treated changed event as add on /sys/devices/pci0000:00/0000:00:08.1/0000:0c:00.3/usb5/5-4/5-4.1/5-4.1:1.0/bluetooth/hci0/hci0:75/0005:057E:2009.0012/power_supply/nintendo_switch_controller_battery_0005:057E:2009.0012
kernel: nintendo 0005:057E:2009.0012: compensating for 5 dropped IMU reports
kernel: nintendo 0005:057E:2009.0012: delta=92 avg_delta=14
kernel: nintendo 0005:057E:2009.0012: compensating for 7 dropped IMU reports
kernel: nintendo 0005:057E:2009.0012: delta=98 avg_delta=11
kernel: nintendo 0005:057E:2009.0012: compensating for 4 dropped IMU reports
kernel: nintendo 0005:057E:2009.0012: delta=65 avg_delta=11
kernel: nintendo 0005:057E:2009.0012: compensating for 4 dropped IMU reports
kernel: nintendo 0005:057E:2009.0012: delta=67 avg_delta=11
kernel: nintendo 0005:057E:2009.0012: compensating for 4 dropped IMU reports
kernel: nintendo 0005:057E:2009.0012: delta=60 avg_delta=11
tlp[9063]: Warning: systemd-rfkill.service is not masked, radio device switching may not work as configured.
tlp[9063]: >>> Invoke 'systemctl mask systemd-rfkill.service' to correct this.
tlp[9063]: Warning: systemd-rfkill.socket is not masked, radio device switching may not work as configured.
tlp[9063]: >>> Invoke 'systemctl mask systemd-rfkill.socket' to correct this.
kernel: nintendo 0005:057E:2009.0013: unknown main item tag 0x0
kernel: nintendo 0005:057E:2009.0013: hidraw7: BLUETOOTH HID v80.01 Gamepad [Pro Controller] on 00:1a:7d:da:71:15
kernel: nintendo 0005:057E:2009.0013: using factory cal for left stick
kernel: nintendo 0005:057E:2009.0013: using factory cal for right stick
kernel: nintendo 0005:057E:2009.0013: using factory cal for IMU
kernel: nintendo 0005:057E:2009.0013: controller MAC = BC:CE:25:38:F2:06
kernel: input: Nintendo Switch Pro Controller as /devices/pci0000:00/0000:00:08.1/0000:0c:00.3/usb5/5-4/5-4.1/5-4.1:1.0/bluetooth/hci0/hci0:73/0005:057E:2009.0013/input/input49
kernel: input: Nintendo Switch Pro Controller IMU as /devices/pci0000:00/0000:00:08.1/0000:0c:00.3/usb5/5-4/5-4.1/5-4.1:1.0/bluetooth/hci0/hci0:73/0005:057E:2009.0013/input/input50
tlp[9269]: Warning: systemd-rfkill.service is not masked, radio device switching may not work as configured.

@blazini36
Copy link

blazini36 commented May 2, 2022

I've had similar issues with both xbox one bluetooth controllers and switch pro controllers (on Linux). Xbox controllers do weird things and the Switch pro disconnects every other minute. The common solution in both cases.....

Disable vibration/rumble in Steam. MGSV with a Xbox One controller it would act like the left trigger was being held down. Playing COD MWR, constant disconnects. Both fixed by disabling rumble.

Edit: nah that was wrong, while disabling rumble did solve some problems with an Xbox One controller, the Switch Pro controller still sucks, I spoke too soon.

@TriVoxel
Copy link

I experienced this issue a while back which is why I got rid of my ProCons. I can confirm this issue is real and it sucks. If I ever get another Switch Controller, I'll be sure to test with rumble off. I never realized it was the rumble.

@blazini36
Copy link

I experienced this issue a while back which is why I got rid of my ProCons. I can confirm this issue is real and it sucks. If I ever get another Switch Controller, I'll be sure to test with rumble off. I never realized it was the rumble.

I should have updated the comment sooner, disabling rumble didn't really fix it, maybe it made it a bit less screwed up. After a while of playing it came back and was still too annoying to use the Pro controller

@ravinsweden
Copy link

ravinsweden commented May 15, 2022 via email

@TriVoxel
Copy link

I think this is possibly more of a Linux driver issue than anything else. My bet is there's some issue in the Bluetooth stack that breaks the connection. Haven't had such issues with Xbox One controllers or any other Bluetooth peripherals.

@SuperSamus
Copy link

Linking this for relevance: DanielOgorchock/linux#33.

@zomars
Copy link

zomars commented Feb 1, 2023

Having this same issue as of February 2023 with latest beta update.

@ravinsweden
Copy link

Have you tried updating the controller through a switch ?

@SamPurple22
Copy link

With Firmware version 15.0.1 on the Nintendo Switch console, connecting the Pro controller to the console, updated the firmware. Then connected the Pro controller on Linux, the rumble disconnect issue seems to be gone and the Pro controller is much more reliable (no disconnects).

Relevant bits:
Distro: Debian bookworm
Kernel: 6.1.8-x64v1-xanmod1
Bluez: 5.66-1
Adapter: Intel AX200, BT 5.2

Tried with Broforce (GOG), lots of continuous rumbling, and with Steam games.

@salixor
Copy link

salixor commented Feb 16, 2023

Updating the controller through a Switch on 15.0.1 does not seem to fix the issue. Still having this issue on games heavily relying on rumble.

@ravinsweden
Copy link

ravinsweden commented Feb 16, 2023 via email

@nfp0
Copy link

nfp0 commented Feb 17, 2023

Check if controller battery is not tight enough on the connectors inside

@ravinsweden This happens exclusively on Linux and does not happen through Steam. It also happens on various of my Pro controllers, so it's not a controller issue.

@SamPurple22
Copy link

I am seeing the PRO controller disconnect randomly when using it together with my Headphones connected to the same Bluetooth adapter. If I connect the Pro controller to the Intel AX200 adapter and then my Headphone to another adapter (ASUSBT400) it works as described in my previous comment, where there is no disconnect.

This happens with the hid_nintendo, hid_nx and just with Steam's hid driver. What I really like is the battery life the controller has, compared to XBOX or DS4/Dualsense.

@TriVoxel
Copy link

I have a fully updated controller, brand new. It has 0 disconnects with rumble on macOS even in long play sessions. On Linux, it often lags really badly when rumbling, majorly delaying input. Then, it will completely disconnect. This issue is not exclusive to Steam. It happened in Cemu (Wii U emulator), and Yuzu (Switch emulator) as well as Dolphin (GameCube/Wii emulator). It seems there is something wrong with the Linux driver.

@DaVince
Copy link

DaVince commented Feb 18, 2023

Now that there's been a little more insight about the issue, I have some questions:

  • If this is not the best place to report it, where should we report it instead?
  • How can we debug this?

@Samuelfaure
Copy link

This bug can also be caused by this issue

In that case, it is caused by having multiple bluetooth devices at the same time.

@nfp0
Copy link

nfp0 commented Aug 16, 2023

@Samuelfaure Doesn't this also happen with a single device connected? Although I believe having more than 1 controller connected makes the disconnect happen faster.

@TriVoxel
Copy link

TriVoxel commented Aug 16, 2023

This does happen with only one controller. Unfortunately, I think this may be a problem with the bluetooth driver for Switch controllers in Linux, because I've had this happen in other games/emulators, and on multiple Switch ProCon firmware versions. Steam just seems to run into this problem more often and consistently than the other emulators, perhaps because it sends more rumble signals? At any rate, this issue really needs to be resolved. I hope Valve can help patch it.

@TriVoxel
Copy link

TriVoxel commented Aug 16, 2023

Oh, and this might further validate my feelings toward this being a driver issue: It doesn't happen very often, but even when wired, I sometimes have the controller disconnect and screw up games for no reason, probably because of the rumble.

@nfp0
Copy link

nfp0 commented Aug 16, 2023

@TriVoxel This is the relevant issue on the Switch Pro kernel driver for Linux: DanielOgorchock/linux#33
It would be nice for further discussion to take place there, as this does not seem to be a Valve-specific issue.

There is already a long discussion about this issue there. There are also suspicions that this might be a deeper problem on BlueZ itself.

@ravinsweden
Copy link

ravinsweden commented Aug 16, 2023 via email

@nfp0
Copy link

nfp0 commented Aug 16, 2023

Updated my switch controllers to latest firmware and no longer have disconnecting issues. Try this.

@ravinsweden That might be because, some months back, the Linux driver got updated and this issue got "fixed". The controllers don't disconnect but the vibration quality had to be severely reduced. I don't consider it a proper fix.

How's the vibration quality and latency overall for you?

@TriVoxel
Copy link

@ravinsweden I tested with up-to-date firmware months back, and today. I tried to update the controller firmware on my Switch, and it was already up to date. You may have recieved an update in Linux that bandaid fixed it, but it still seems to be broken.

@hostage007
Copy link

November of 2023, SteamOS 3.5.7. Switch Pro and XBOX Series X Controller , still same issue.

@Juppstein
Copy link

This still seems to be an issue. Just tried it today with Tomb Raider (2013), rumble enabled, and it still disconnects every minute or so.

@psycho-driver
Copy link

psycho-driver commented Jul 4, 2024 via email

@mikeyjoel
Copy link

I was able to find a temporary solution which will require joycond to be installed in userspace. Tested with Steam and Ryujinx for 2 days now with no issues on a Pro Controller. I ordered a pair of new joy cons for testing next week and will update but so far very good. Played Smash Bros Ultimate for more than 24+ hours with no issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests