Recently I came across a very strange issue where my wired controller will keep disconnecting and reconnecting. I have been using this controller for months with no issues until just this week. I have tried to troubleshoot it to no avail.
Hardware details:
Controller: Gulikit Zen Pro controller (identical to the King Kong 2 Pro controller) model NS-09
USB-C to USB-A cable that came with the controller
System: Lenovo Legion 5 15ARH05
Software details:
Playing games through Steam using Steam Input
EndeavourOS (obviously)
All packages up to date. Steam up to date
Controller firmware was last updated when I bought it in October 2023. I doubt this is the source of the issue as it started recently. I also just don’t really want to deal with Gulikit’s frankly strange firmware upgrade process again.
Issue:
The controller can turn on and connect just fine. However, it will then disconnect and start looping disconnect/connect, with periods of connection typically being quite short (<5 sec). Sometimes it’ll stay connected for longer, particularly when an input is being continuously sent. This continues until a reconnect doesn’t happen for long enough that the controller turns off and stops connecting. This behavior is consistent across the Switch Pro Controller, xinput, and mobile phone controller modes of operation (Steam doesn’t connect to it in dinput mode). This issue occurs consistently both in the steam menu and in games.
Things I have tried, based on suggestions from across the internet:
Turning everything involved off and back on again, multiple times. No effect.
Changing which USB port on the laptop I am using. No effect. Unplugging all other USB devices. No effect.
Disabling controller rumble in steam settings (tried this on xinput mode). No effect.
Blacklisting the hid_nintendo
kernel module (only affects Switch Pro mode). Rebooted. No effect. This module remains blacklisted.
Booting with the kernel parameter usbcore.autosuspend=-1
. Confirmed this took effect with cat /sys/module/usbcore/parameters/autosuspend
returning -1
(it’s usually set to 2
). No effect. This value is back to its default now.
Installing TLP. This conflicted with power-profiles-daemon
. This didn’t help, so I have reinstalled power-profiles-daemon
instead.
I’ve also taken a look at the system journal, but I couldn’t determine what the problem was. I’ve reproduced one connection cycle on Switch Pro mode below.
(My journal is clogged with rtkit-daemon: Failed to look up client: No such file or directory
. I’ve removed those lines as I doubt they’re relevant and there’s a lot of them. I can put them back in if their position is important.)
journalctl output for the duration of a connection cycle
Apr 27 03:05:30 hostname kernel: usb 1-2: new full-speed USB device number 5 using xhci_hcd
Apr 27 03:05:30 hostname kernel: usb 1-2: New USB device found, idVendor=057e, idProduct=2009, bcdDevice= 2.00
Apr 27 03:05:30 hostname kernel: usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Apr 27 03:05:30 hostname kernel: usb 1-2: Product: Pro Controller
Apr 27 03:05:30 hostname kernel: usb 1-2: Manufacturer: Nintendo Co., Ltd.
Apr 27 03:05:30 hostname kernel: usb 1-2: SerialNumber: 000000000001
Apr 27 03:05:30 hostname kernel: input: Nintendo Co., Ltd. Pro Controller as /devices/pci0000:00/0000:00:08.1/0000:05:00.3/usb1/1-2/1-2:1.0/0003:057E:2009.000A/input/input33
Apr 27 03:05:30 hostname kernel: hid-generic 0003:057E:2009.000A: input,hidraw8: USB HID v1.11 Joystick [Nintendo Co., Ltd. Pro Controller] on usb-0000:05:00.3-2/input0
Apr 27 03:05:30 hostname mtp-probe[7708]: checking bus 1, device 5: "/sys/devices/pci0000:00/0000:00:08.1/0000:05:00.3/usb1/1-2"
Apr 27 03:05:30 hostname mtp-probe[7708]: bus: 1, device: 5 was not an MTP device
Apr 27 03:05:30 hostname mtp-probe[7722]: checking bus 1, device 5: "/sys/devices/pci0000:00/0000:00:08.1/0000:05:00.3/usb1/1-2"
Apr 27 03:05:30 hostname mtp-probe[7722]: bus: 1, device: 5 was not an MTP device
Apr 27 03:05:31 hostname polkitd[653]: Error converting subject to JS object: Process 7731 terminated
Apr 27 03:05:31 hostname polkitd[653]: Error converting subject to JS object: Process 7735 terminated
Apr 27 03:05:31 hostname kernel: input: Microsoft X-Box 360 pad 0 as /devices/virtual/input/input34
Apr 27 03:05:34 hostname kernel: usb 1-2: USB disconnect, device number 5
I mainly play with controller, so it has been very frustrating to have it be unusable and not know why or how to fix it. Any help is appreciated.