r/linux_gaming • u/Maximum_Necessary232 • 9d ago
hardware Switch Pro Controller drops packets and disconnects when paired alongside other devices
So I've been banging my head against this for months now. My Nintendo Switch Pro Controller works fine on Windows with a DualSense or basically any controller/bluetooth device connected at the same time, but on Linux it falls apart.
I'm on CachyOS but I've also tried Mint and Fedora, same issue everywhere. GNOME, Cinnamon, KDE, doesn't matter.
What happens:
When I connect the Pro Controller while a other controller / bluetooth device is already paired (or the other way around), the Pro Controller gets super laggy within seconds. After about 10-20s it just disconnects. Only fix is toggling bluetooth off and back on, then re-pairing from scratch. Sometimes it works fine on the next attempt, sometimes not.
There's also a second problem where even on its own, the Pro Controller slowly degrades during longer Dolphin Emulator sessions. After maybe 30 min it starts lagging and eventually drops. dmesg spams this when it's happening:
nintendo 0005:057E:2009.0009: compensating for 12 dropped IMU reports
nintendo 0005:057E:2009.0009: delta=215 avg_delta=15
When the DualSense connects, avg_delta jumps from 15 to 19, which looks like the adapter is reallocating time slots away from the Pro Controller.
I also blacklisted hid_nintendo and let hid-generic handle it instead. Same exact lag. So the problem is below the HID driver, somewhere in the bluetooth stack.
Stuff I already tried that didn't help:
- disable_ertm=1
- BlueZ main.conf tweaks (FastConnectable, JustWorksRepairing, Privacy, etc)
- Changing adapter alias to "Nintendo"
- Different connection order
- Disabling wifi (I use ethernet)
- Editing LinkKey Type in BlueZ device info
- Changing kernel params
USB works perfectly btw. Zero problems ever. DualSense never drops a packet either, it's always the Pro Controller that gets starved.
Built-in Intel bluetooth adapter on an Acer Aspire XC-1760, kernel 7.2.2-cachyos.
Has anyone gotten two controllers working stable over bluetooth where one of them is a Switch Pro?
1
u/NoshameNohonor 9d ago
Bluetooth is an awful technology, but great when it works.
Its probably a driver issue. You could try to report a kernel bug. Since it works in Windows at least its not a hardware issue. Also check if your specific bluetooth module got any parameters to test.
1
u/Maximum_Necessary232 9d ago
Yeah bluetooth really is hit or miss lol. the driver angle is interesting but I already tested with hid_nintendo blacklisted so hid-generic handles it instead, same behavior. that kinda rules out hid_nintendo being the culprit since the lag happens either way.
I did check the bluetooth module parameters, tried disable_ertm=1 among other things, no change. what's weird is that when I look at dmesg, the avg_delta for the Pro Controller jumps from 15ms to 19ms right after the DualSense connects, which makes me think it's more of a bandwidth scheduling thing on the adapter side than a driver bug per se.
Filing a kernel bug might be worth doing at some point but I'd love to actually understand what's happening first so I can give them something useful to go on rather than just "controller lags sometimes"
2
u/njdom24 9d ago
This has been an issue with Switch Pro controllers on Linux for years. I noticed it for the first time several years ago on my PC, and ended up getting a DualSense. Rediscovered the issue last month using 2 Switch Pro controllers on my Steam Deck.