Help debugging - When playing with 4 controllers, one random controller goes unresponsive
azuredusk10 26 Feb 2024
I've been having trouble playing 4-player local multiplayer games on my machine. I regularly have 3 friends over to play, but one person always gets left out because the Pop!_OS system doesn't work properly with 4 controllers. Asking for help to debug the problem, as I'm not sure what could be going wrong (issue with hardware, issue with the kernel, something else), and had no response on the Pop!_OS subreddit unfortunately.


What happens:

When playing a 4-player game with 4 controllers connected, one random controller will always become unresponsive.

In this state, the Bluetooth settings window shows that the controller is connected, but neither Steam nor the OS itself recognises any button presses or touchpad swipes.

Disconnecting and reconnecting the controller does not take the controller out of this state. Only restarting the PC gets the controller out of this state.


How I've reproduced it:

  • Connect 4 controllers. The following set-ups consistently cause this problem:

    • Four Dualshock 4 controllers connected via Bluetooth

    • Three Dualshock 4 controllers connected via Bluetooth and one Dualshock 4 controller connected wired

    • Three Dualshock 4 controllers connected via Bluetooth and one Steam Deck connected via Steam Link (input only; no audio or display) over Wifi -> router, and then router -> PC via ethernet cable.

  • Press inputs simultaneously on all controllers all at once. This can be in a Steam game, or not in a game but in the Steam Big Picture Mode, or just swiping the touchpads on the controllers on the desktop without Steam open (setup #3 doesn't apply here)

  • After several minutes, one of the controllers enters an unresponsive state and will not become responsive again until the Bluetooth adaptor is toggled off then on, or the PC is restarted.



What I've tried:

  • Using different DS4 controllers. I replaced 2 controllers which I thought were faulty, but the issue persists regardless of which DS4 controllers I'm using

  • Using 3 DS4 controllers via bluetooth and leaving 1 person out of the game. This works without issue every time, but it means one of our friends can't play.

  • Using 3 DS4 controllers via bluetooth and 1 Steam Deck over ethernet. The problem persists in this setup, although it's never the Steam Deck that becomes unresponsive.


I'm at a loss for where the problem is. Any advice on what the problem could be? Or what I could do to try to solve it?

Failing that, is there some different hardware I should be using? I really don't want to have to switch to Windows. Thank you in advance.

System info:

OS: Pop!_OS 22.04 LTS (64-bit)
Motherboard: ASRock Z690M-ITX/ax
Processor: 12 Gen Intel Core i5-12600 x 12
Graphics: AMD Radeon rx 6700 xt

Networking info (lspci -nnk | grep net -A2
)


0000:00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (17) I219-V [8086:1a1d] (rev 11)

Subsystem: ASRock Incorporation Ethernet Connection (17) I219-V \[1849:1a1d\]  Kernel driver in use: e1000e  Kernel modules: e1000e 

--

0000:04:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller [10ec:8125] (rev 05)

Subsystem: ASRock Incorporation RTL8125 2.5GbE Controller \[1849:8125\]  Kernel driver


Last edited by azuredusk10 on 4 Mar 2024 at 9:21 pm UTC
This topic has an answer marked - jump to answer.
whizse 26 Feb 2024
Does this only happen when playing games using Steam or can you reproduce it in a normal desktop environment? E.g. in something like SuperTuxKart or just mashing buttons in a control panel like jstest-gtk?
azuredusk10 26 Feb 2024
Does this only happen when playing games using Steam or can you reproduce it in a normal desktop environment? E.g. in something like SuperTuxKart or just mashing buttons in a control panel like jstest-gtk?

I was able to reproduce it by wiggling the touch pads of the controllers all at once without any games open, just with the Bluetooth settings window open.

I was also able to reproduce it playing Super Tux Cart after 8 minutes of button mashing all 4 controllers at once. I checked the kernel logs after playing - /var/log/kernellog.txt. The last line corresponds to about the time when one of the controllers went unresponsive.
 
Feb 26 23:46:00 pop-os kernel: [   12.624755] input: Wireless Controller as /devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14:1.0/bluetooth/hci0/hci0:512/0005:054C:09CC.0004/input/input18
Feb 26 23:46:00 pop-os kernel: [   12.625118] input: Wireless Controller Motion Sensors as /devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14:1.0/bluetooth/hci0/hci0:512/0005:054C:09CC.0004/input/input19
Feb 26 23:46:00 pop-os kernel: [   12.625252] input: Wireless Controller Touchpad as /devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14:1.0/bluetooth/hci0/hci0:512/0005:054C:09CC.0004/input/input20
Feb 26 23:46:00 pop-os kernel: [   12.625712] playstation 0005:054C:09CC.0004: Registered DualShock4 controller hw_version=0x0000b408 fw_version=0x0000a00a
Feb 26 23:46:00 pop-os kernel: [   12.768758] playstation 0005:054C:09CC.0005: unknown main item tag 0x0
Feb 26 23:46:00 pop-os kernel: [   12.769567] playstation 0005:054C:09CC.0005: hidraw4: BLUETOOTH HID v1.00 Gamepad [Wireless Controller] on f4:26:79:6c:4d:8b
Feb 26 23:46:00 pop-os kernel: [   12.832430] input: Wireless Controller as /devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14:1.0/bluetooth/hci0/hci0:768/0005:054C:09CC.0005/input/input21
Feb 26 23:46:00 pop-os kernel: [   12.832746] input: Wireless Controller Motion Sensors as /devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14:1.0/bluetooth/hci0/hci0:768/0005:054C:09CC.0005/input/input22
Feb 26 23:46:00 pop-os kernel: [   12.832992] input: Wireless Controller Touchpad as /devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14:1.0/bluetooth/hci0/hci0:768/0005:054C:09CC.0005/input/input23
Feb 26 23:46:00 pop-os kernel: [   12.834580] playstation 0005:054C:09CC.0005: Registered DualShock4 controller hw_version=0x0000b40c fw_version=0x0000a00a
Feb 26 23:46:01 pop-os kernel: [   12.920728] playstation 0005:054C:09CC.0006: unknown main item tag 0x0
Feb 26 23:46:01 pop-os kernel: [   12.921553] playstation 0005:054C:09CC.0006: hidraw5: BLUETOOTH HID v1.00 Gamepad [Wireless Controller] on f4:26:79:6c:4d:8b
Feb 26 23:46:01 pop-os kernel: [   12.980468] input: Wireless Controller as /devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14:1.0/bluetooth/hci0/hci0:1024/0005:054C:09CC.0006/input/input24
Feb 26 23:46:01 pop-os kernel: [   12.980682] input: Wireless Controller Motion Sensors as /devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14:1.0/bluetooth/hci0/hci0:1024/0005:054C:09CC.0006/input/input25
Feb 26 23:46:01 pop-os kernel: [   12.980777] input: Wireless Controller Touchpad as /devices/pci0000:00/0000:00:14.0/usb1/1-14/1-14:1.0/bluetooth/hci0/hci0:1024/0005:054C:09CC.0006/input/input26
Feb 26 23:46:01 pop-os kernel: [   12.981126] playstation 0005:054C:09CC.0006: Registered DualShock4 controller hw_version=0x0000b408 fw_version=0x0000a00a
Feb 26 23:54:36 pop-os kernel: [  528.650641] playstation 0005:054C:09CC.0006: DualShock4 input CRC's check failed


When I view a copy of this log in the terminal via `sudo dmesg`, the last line appears in red while all others appear white.

Last edited by azuredusk10 on 27 Feb 2024 at 12:48 am UTC
whizse 27 Feb 2024
I was able to reproduce it by wiggling the touch pads of the controllers all at once without any games open, just with the Bluetooth settings window open.
The reason I asked is Valve pretty much ships their own drivers for some controllers, so it's good to rule out Steam Input as a source of the problem.

This does look like a problem with the upstream driver. Sony rewrote the Dualshock driver in 6.2 and there where further improvements in later kernel releases.

What kernel version are you running?
Valck 27 Feb 2024
Just a stupid thought out of the left field – maybe try connecting five controllers? I wouldn't expect it to allow four controllers to work, but hey, you never know...
whizse 27 Feb 2024
Just a stupid thought out of the left field – maybe try connecting five controllers? I wouldn't expect it to allow four controllers to work, but hey, you never know...
I love your way of thinking. Solving the bug by growing the friendship circle!
azuredusk10 27 Feb 2024
I was able to reproduce it by wiggling the touch pads of the controllers all at once without any games open, just with the Bluetooth settings window open.
The reason I asked is Valve pretty much ships their own drivers for some controllers, so it's good to rule out Steam Input as a source of the problem.

This does look like a problem with the upstream driver. Sony rewrote the Dualshock driver in 6.2 and there where further improvements in later kernel releases.

What kernel version are you running?

That's really helpful information, thank you. I'm on kernel 6.6.10-76060610-generic

One thought did cross my mind - I've been using a GNOME extension that displays the controllers' battery level in the top bar: https://github.com/thankjura/ds4battery/releases

It hasn't had any significant updates since kernel 6.2 was released so I wonder if it could be causing any issues? I'll disable the extension and see how that goes.

I'll also try with 5 Dualshock 4 controllers (one extra connected but not in use), what the heck! I've got a spare one banished to the cupboard as I thought it was the culprit!

I also searched online for the error message from my logs about "input CRC's check failed". Some DS4Windows users said they get a similar error on Windows when using counterfeit controllers. I'll try opening the controllers up and check if they look like the one that came with my old PS4. I did buy the other controllers refurbished or second hand, so even though from the outside they look and feel pretty much identical and they all have the same weight, there's still a chance they're not quite right.

Thanks both so much for your responses, I really appreciate it
azuredusk10 27 Feb 2024
Some further testing done:

Controller responsiveness
A couple of the controllers are less responsive than the others. When moving the joysticks rapidly from left to right in jstest-gtk, these controllers don't report the values as frequently as the other controllers - the axis scale jitters slightly, whereas the other controllers report a smooth range from one extreme to the other. Navigating the menus in Steam also feels slightly more sluggish when using them. And when they are left in the neutral position, jstest-gtk registers a value of over ±100 for them (when the maximum is about ±37,000) while the others are much closer to 0 when in neutral. So I get the impression these controllers are worn out.

Dualshock battery percentage GNOME extension
Disabling this extension had no effect. We still had 1 controller go unresponsive about 10 minutes into play. It wasn't one of the less responsive controllers though; it was the one which seemed the most responsive in jstest-gtk.

These were the errors from the kernel log. The timestamps of either of the last 2 lines could correspond to the time the controller went unresponsive.
 
Feb 27 19:29:12 pop-os kernel: [ 1293.828369] playstation 0005:054C:09CC.0003: DualShock4 input CRC's check failed
Feb 27 19:32:26 pop-os kernel: [ 1488.505198] playstation 0005:054C:09CC.0003: DualShock4 input CRC's check failed
Feb 27 19:36:57 pop-os kernel: [ 1759.124135] playstation 0005:054C:09CC.0004: DualShock4 input CRC's check failed
Feb 27 19:46:48 pop-os kernel: [ 2350.193528] Bluetooth: Unexpected start frame (len 83)
Feb 27 19:49:32 pop-os kernel: [ 2513.804332] playstation 0005:054C:09CC.0005: DualShock4 input CRC's check failed



Using a bluetooth keyboard instead of a controller for P4
This worked! Player 4 used a wireless Apple Magic Keyboard 2 instead of the least responsive DS4 controller and this worked without problems. All 4 players were able to play continuously for a half hour game without anyone's input method going unresponsive. No errors were generated in the kernel log.


I'm still not sure what the problem was, but at least I have found a workaround. I think I'll eventually try and replace the less responsive controllers with new DS4 controllers and see if that solves the issue.

Last edited by azuredusk10 on 27 Feb 2024 at 8:57 pm UTC
whizse 29 Feb 2024
I'm still not sure what the problem was, but at least I have found a workaround. I think I'll eventually try and replace the less responsive controllers with new DS4 controllers and see if that solves the issue.
I would be surprised if this wasn't a bug in the driver and not something you can configure away. The driver is new, and considering that we are a niche platform, running four controllers at once with this driver might be totally untested.

If you have the time, consider filing a bug report in the kernel Bugzilla with the errors from the kernel log. File it under Product -> Drivers, and Component -> Input Devices.
Highball 29 Feb 2024
Using a bluetooth keyboard instead of a controller for P4
This worked! Player 4 used a wireless Apple Magic Keyboard 2 instead of the least responsive DS4 controller and this worked without problems.

With bluetooth devices you have different profiles that would be loaded. What you are telling me here is, it's when gamecontroller profile gets loaded 4 times there are issues. 3 game controller profiles and keyboard profile is fine.

I wonder if it is a regressions. You could check pretty easily. Downloaded an older live boot CD from Ubuntu or what ever distro you use that's pre kernel 6.2. I think Kernel 5.15 and 5.19 were pretty good, so a distro release from that Kernel era. That, or you could download an older kernel from your repo and there is also Linux-TKG that will still build older kernel versions. Linux-TKG is how I build my kernel. I think burning the liveboot image to a USB thumbdrive and booting from that would be the easiest for now.

Edit: One other thing. https://wiki.ubuntu.com/DebuggingBluetooth

Last edited by Highball on 29 Feb 2024 at 7:22 pm UTC
azuredusk10 2 Mar 2024
Thank you Highball and Whizse! I will try and reproduce the bug on a kernel pre 6.2 (Ubuntu 22.04 LTS looks like it comes with kernel 5.17 so I'll see if that's still the case).

Whatever the outcome, I'll file a bug in the kernel Bugzilla and post the link in this thread. I've found the category you mentioned whizse - thank you very much. Fingers crossed this ends up removing a barrier to PlayStation users who want to move Linux.

Last edited by azuredusk10 on 2 Mar 2024 at 1:02 am UTC
Highball 2 Mar 2024
Thank you Highball and Whizse! I will try and reproduce the bug on a kernel pre 6.2 (Ubuntu 22.04 LTS looks like it comes with kernel 5.17 so I'll see if that's still the case).

Whatever the outcome, I'll file a bug in the kernel Bugzilla and post the link in this thread. I've found the category you mentioned whizse - thank you very much. Fingers crossed this ends up removing a barrier to PlayStation users who want to move Linux.

One other question, do you have the same issue when plugged into USB? I'd tests this out myself, but I only have one DS5 controller. I'd have to swing by GameStop and pick up 3 more controllers. If I remember correctly its the same driver (for DS4 and DS5) since kernel 6.2. If we can get this narrowed down, I'd be happy to hook up a kernel debugger and check it out.

Last edited by Highball on 2 Mar 2024 at 9:04 pm UTC
azuredusk10 4 Mar 2024
Thank you Highball and Whizse! I will try and reproduce the bug on a kernel pre 6.2 (Ubuntu 22.04 LTS looks like it comes with kernel 5.17 so I'll see if that's still the case).

Whatever the outcome, I'll file a bug in the kernel Bugzilla and post the link in this thread. I've found the category you mentioned whizse - thank you very much. Fingers crossed this ends up removing a barrier to PlayStation users who want to move Linux.

One other question, do you have the same issue when plugged into USB? I'd tests this out myself, but I only have one DS5 controller. I'd have to swing by GameStop and pick up 3 more controllers. If I remember correctly its the same driver (for DS4 and DS5) since kernel 6.2. If we can get this narrowed down, I'd be happy to hook up a kernel debugger and check it out.

I've done some more testing.

Yes, I could reproduce this problem when one controller is connected only via USB and the 3 others are connected via bluetooth. (I double checked the bluetooth settings panel only had 3 controllers connected). We were able to play for about 10 minutes before one of the bluetooth-connected controllers went unresponsive. These were the error messages in the kernel logs, similar to before. The controller went unresponsive at about 19:55 (reading from my analogue watch) and I unplugged the USB controller about 30 seconds afterwards:

 
Mar  4 19:42:36 pop-os kernel: [  104.481714] playstation 0005:054C:09CC.0007: Registered DualShock4 controller hw_version=0x0000b40c fw_version=0x0000a00a
Mar  4 19:50:58 pop-os kernel: [  606.787634] playstation 0005:054C:09CC.0007: DualShock4 input CRC's check failed
Mar  4 19:52:02 pop-os kernel: [  670.973915] playstation 0005:054C:09CC.0005: DualShock4 input CRC's check failed
Mar  4 19:54:04 pop-os kernel: [  792.308116] usb 1-2: USB disconnect, device number 6


It's worth noting that the line "DualShock4 input CRC's check failed" also gets generated when playing with 3 DS4 controllers without any issues of controllers going unresponsive, so I'm wondering if it's a red herring.

ALSO, I've found an easier way to reproduce this bug. Simply connect 4 controllers via bluetooth, wiggle the touchpads every 5 minutes or so to keep them from turning off, and after 20-30 minutes one of them will go unresponsive. It happens without any error messages in the kernel logs.

I was also able to reproduce this bug on a machine with different hardware and a different Linux distro - an Intel 12th gen Framework 13 laptop running Fedora 39, kernel version 6.7.6-200.fc39.x86_64. I left the 4 controllers connected via bluetooth, wiggled the touchpads every 5-10 minutes, then after 25 minutes one went unresponsive. All 4 controllers were still showing as connected in the Bluetooth settings panel and all 4 still had their lightbars on. There were no errors in the "GNOME Logs" program at the time the controller went unresponsive.

I tried to run a live CD of Ubuntu 21.10, but my laptop complained that there was a security violation and it asked for a MOK key. So I didn't have any luck there.

That's really kind of you to offer to look into this. If there's anything I can do to help, please let me know. Please don't feel obliged to go out and buy more controllers unless you'll get some use out of them yourself too - I know money is tight for many.

Shall I go ahead and write that kernel bug report?

Last edited by azuredusk10 on 4 Mar 2024 at 11:41 pm UTC
Highball 5 Mar 2024
Yes, definitely log the bug. I used to do Windows Kernel audio and low power storage development. It will take me a bit to get things figured out. As long as I can repro the issue and come up with a fix, then I will submit the patch for the bug you file. Also we can patch your kernel in the interrim. If the PS devs jump on the bug and get a fix right away, that's great too. Please link your bug report here too.
azuredusk10 5 Mar 2024
Yes, definitely log the bug. I used to do Windows Kernel audio and low power storage development. It will take me a bit to get things figured out. As long as I can repro the issue and come up with a fix, then I will submit the patch for the bug you file. Also we can patch your kernel in the interrim. If the PS devs jump on the bug and get a fix right away, that's great too. Please link your bug report here too.

Thank you so much. You've been so generous with your time and your help. If you do end up buying extra controllers to look into this, I'd be happy to cover the cost of them.

I've filed the kernel bug report:
https://bugzilla.kernel.org/show_bug.cgi?id=218564
azuredusk10 20 Mar 2024
I bought this Bluetooth USB dongle and disabled my computer’s built-in WLAN chip and the problem no longer occurs:

https://www.amazon.co.uk/dp/B0B2737HPS/?_encoding=UTF8

The controllers are much more responsive to inputs as well when multiple controllers are connected. Before, the more controllers were connected, the more frequently there seemed to be input lag on the controllers.

It seems like the Steam Deck could have had similar issues. In their OLED model product page, it says that they used a dedicated Bluetooth adapter (unlike on the original Steam Deck) in order to improve performance when multiple external game controllers are connected. (Source: https://www.steamdeck.com/en/oled)

Last edited by azuredusk10 on 20 Mar 2024 at 10:55 pm UTC
azuredusk10 12 Jun 2024
I'm happy to say that, after playing 4-player couch co-op games for over an hour today with the new Bluetooth USB dongle, I could no longer reproduce this bug.

As a result, I've closed the bug report in kernel.org.

If anyone else runs into Bluetooth connection issues when playing games with 4 controllers, it may be your computer's combined Bluetooth and WiFi adaptor causing the problem. Buying a separate Bluetooth USB dongle solved the problem for me. This is the one I bought: https://www.amazon.co.uk/dp/B0B2737HPS/?_encoding=UTF8

Thank you to everyone who helped diagnose the problem and offer support! Knowing I wasn't tackling this on my own was a huge encouragement.

Last edited by azuredusk10 on 12 Jun 2024 at 10:39 pm UTC
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register