Nintendo Switch game controller failing to connect to bluetooth

I am trying to find out why the Nintendo Switch controller fails to connect as a bluetooth device. The device is discovered during the scan, however it always fails to connect.

On the same PC, I can dual boot into Win 11 and the controller always connects and works fine.

How can I find out why it’s failing on TW ?

Have you installed and setup the joycond and joycond-autoload packages? (info about the deamon: https://github.com/DanielOgorchock/joycond.)

I just now paired a Switch Pro Controller, and it appears to be connected. In the past I have also connected Joycons (Tumbleweed 20240822).

@mchnz I have both installed and joycond.service running, it just won’t connect.

Did you do any special configuration? Also when you connect, do you just click next and select the default pin. I have also tried pins ‘0000’ and ‘1111’, they also don’t seem to help.

I don’t enter a pin. I put the controller into pairing-mode by using the sync-button. Then I use the Plasma system-tray Bluetooth application, just as you’ve illustrated, to add a new device. Once paired, I press L and R together to configure it as a single controller.

As I understand it, a Nintendo Pro Controller can only be paired with one device at a time. I need to delete the device and repeat the pairing from new each time I moved it from my Switch to my Linux desktop. Plus I need to re-pair it to the Switch when I want to use it there.

As long as it’s paired with the desktop, I can use disconnect and reconnect in the Bluetooth application.

Thanks for the additional info, I did try to reset my controller since it was paired with Win 11 but that didn’t seem to help. I do know support for this controller did make it into the Linux kernel but I think there is something wrong with openSUSE TW because I did a fresh install 2 days ago.

I am on TW 20240822, but with kernel 6.9.9-1-default. I will be trying the latest kernel later today.

1 Like

Just curious are you using KDE as the desktop manager? this is what I am using and I wonder if
KDE has a problem.

I also seem to be on the latest bluetooth driver.

$ bluetoothctl -v
bluetoothctl: 5.77

Yes KDE, and

rpm -q -f /usr/bin/bluetoothctl 
bluez-5.77-1.1.x86_64

I just hit a snag on updating to kernel 6.10.5. The update didn’t install an grub entry for 6.10.5, and forcing it to resulted in a boot option that fails to boot, so I had to boot back to 6.9.9-1.

So I’m now on 20240829, but with kernel 6.9.9-1. Pairing still works though. All I have to do is tell the Plasma/KDE system-tray app to connect and hammer away on the controller’s Left/Right controller buttons until it stops cycling through the green LEDs, at which point I see a steady single LED and have a pairing:

Here’s the output from journalctl --boot (may need to run this with sudo depending on the users access rights).

Aug 31 10:05:43 kosmos1 bluetoothd[1524]: profiles/input/device.c:control_connect_cb() connect to D0:55:09:29:3F:38: Operation already in progress (114)
Aug 31 10:05:43 kosmos1 plasmashell[2697]: kf.bluezqt: PendingCall Error: "br-connection-create-socket"
Aug 31 10:05:43 kosmos1 systemd-udevd[857]: Configuration file /etc/udev/rules.d/55-brother-brscan4-libsane-type1.rules is marked executable. Please remove executable>
Aug 31 10:05:43 kosmos1 systemd[4059]: Reached target Bluetooth.
Aug 31 10:05:43 kosmos1 systemd[2376]: Reached target Bluetooth.
Aug 31 10:05:43 kosmos1 kernel: hid-generic 0005:057E:2009.0007: unknown main item tag 0x0
Aug 31 10:05:43 kosmos1 kernel: input: Pro Controller as /devices/virtual/misc/uhid/0005:057E:2009.0007/input/input24
Aug 31 10:05:43 kosmos1 kernel: hid-generic 0005:057E:2009.0007: input,hidraw6: BLUETOOTH HID v0.01 Gamepad [Pro Controller] on 90:e8:68:ad:bb:a8
Aug 31 10:05:43 kosmos1 kernel: nintendo 0005:057E:2009.0007: unknown main item tag 0x0
Aug 31 10:05:44 kosmos1 kernel: nintendo 0005:057E:2009.0007: hidraw6: BLUETOOTH HID v80.01 Gamepad [Pro Controller] on 90:e8:68:ad:bb:a8
Aug 31 10:05:44 kosmos1 kernel: nintendo 0005:057E:2009.0007: controller MAC = D0:55:09:29:3F:38
Aug 31 10:05:44 kosmos1 kernel: nintendo 0005:057E:2009.0007: using factory cal for left stick
Aug 31 10:05:44 kosmos1 kernel: nintendo 0005:057E:2009.0007: using factory cal for right stick
Aug 31 10:05:44 kosmos1 kernel: nintendo 0005:057E:2009.0007: using user cal for IMU
Aug 31 10:05:44 kosmos1 kernel: input: Pro Controller as /devices/virtual/misc/uhid/0005:057E:2009.0007/input/input25
Aug 31 10:05:44 kosmos1 kernel: input: Pro Controller (IMU) as /devices/virtual/misc/uhid/0005:057E:2009.0007/input/input26
Aug 31 10:05:44 kosmos1 systemd[1]: Starting IIO Sensor Proxy service...
Aug 31 10:05:44 kosmos1 systemd[1]: Started IIO Sensor Proxy service.
Aug 31 10:05:44 kosmos1 joycond[1873]: DEVNAME=event23 ACTION=add DEVPATH=/devices/virtual/misc/uhid/0005:057E:2009.0007/input/input25/event23
Aug 31 10:05:44 kosmos1 joycond[1873]: Creating new phys_ctlr for /dev/input/event23
Aug 31 10:05:44 kosmos1 joycond[1873]: Found Pro Controller
Aug 31 10:05:44 kosmos1 joycond[1873]: driver_name: Pro Controller
Aug 31 10:05:44 kosmos1 joycond[1873]: MAC: D0:55:09:29:3F:38
Aug 31 10:05:44 kosmos1 systemd[1]: iio-sensor-proxy.service: Deactivated successfully.
Aug 31 10:05:45 kosmos1 joycond[1873]: adding epoll_subscriber: fd=5

And here’s the output from evdev-joystick for the event23 device listed in the above output

%   evdev-joystick --showcal /dev/input/event23 

Supported Absolute axes:
  Absolute axis 0x00 (0) (X Axis) (value: 673, min: -32767, max: 32767, flatness: 500 (=1.53%), fuzz: 250)
  Absolute axis 0x01 (1) (Y Axis) (value: 1290, min: -32767, max: 32767, flatness: 500 (=1.53%), fuzz: 250)
  Absolute axis 0x03 (3) (X Rate Axis) (value: 1763, min: -32767, max: 32767, flatness: 500 (=1.53%), fuzz: 250)
  Absolute axis 0x04 (4) (Y Rate Axis) (value: 951, min: -32767, max: 32767, flatness: 500 (=1.53%), fuzz: 250)
  Absolute axis 0x10 (16) (Hat zero, x axis) (value: 0, min: -1, max: 1, flatness: 0 (=0.00%), fuzz: 0)
  Absolute axis 0x11 (17) (Hat zero, y axis) (value: 0, min: -1, max: 1, flatness: 0 (=0.00%), fuzz: 0)

I suspect I may have encountered an nvidia driver issues with 6.10.5. I may have to wait for TW or drivers to be updated. I’d guess the kernel version may not matter for this pro-controller issue (but can’t say for sure).

1 Like

I think it’s just my luck, I cannot get my “generic” Nintendo switch controller to work. I did try resetting it as it was paired to Win 11 and this still didn’t help with the connection.

I am not seeing the controller as a HID device in my journal

$ sudo journalctl --boot|grep -i hid
Aug 30 13:16:27 source kernel: hid: raw HID events driver (C) Jiri Kosina
Aug 30 13:16:28 source kernel: usb 3-3.2: Product: USB-HID Keyboard
Aug 30 13:16:29 source kernel: usbcore: registered new interface driver usbhid
Aug 30 13:16:29 source kernel: usbhid: USB HID core driver
Aug 30 13:16:30 source kernel: hid-generic 0003:1D57:AD17.0001: input,hidraw0: USB HID v1.10 Mouse [ZLY ZELOTES GAME MOUSE] on usb-0000:2b:00.3-3.1/input0
Aug 30 13:16:30 source kernel: hid-generic 0003:046D:0AB7.0002: input,hiddev96,hidraw1: USB HID v1.11 Device [Generic Blue Microphones] on usb-0000:03:00.0-4/input3
Aug 30 13:16:30 source kernel: input: USB-HID Keyboard as /devices/pci0000:00/0000:00:08.1/0000:2b:00.3/usb3/3-3/3-3.2/3-3.2:1.0/0003:04D9:0295.0003/input/input5
Aug 30 13:16:30 source kernel: hid-generic 0003:04D9:0295.0003: input,hidraw2: USB HID v1.11 Keyboard [USB-HID Keyboard] on usb-0000:2b:00.3-3.2/input0
Aug 30 13:16:30 source kernel: hid-generic 0003:04D9:0295.0004: hiddev97,hidraw3: USB HID v1.11 Device [USB-HID Keyboard] on usb-0000:2b:00.3-3.2/input1
Aug 30 13:16:30 source kernel: input: USB-HID Keyboard System Control as /devices/pci0000:00/0000:00:08.1/0000:2b:00.3/usb3/3-3/3-3.2/3-3.2:1.2/0003:04D9:0295.0005/input/input6
Aug 30 13:16:30 source kernel: input: USB-HID Keyboard Consumer Control as /devices/pci0000:00/0000:00:08.1/0000:2b:00.3/usb3/3-3/3-3.2/3-3.2:1.2/0003:04D9:0295.0005/input/input7
Aug 30 13:16:30 source kernel: input: USB-HID Keyboard Mouse as /devices/pci0000:00/0000:00:08.1/0000:2b:00.3/usb3/3-3/3-3.2/3-3.2:1.2/0003:04D9:0295.0005/input/input8
Aug 30 13:16:30 source kernel: input: USB-HID Keyboard as /devices/pci0000:00/0000:00:08.1/0000:2b:00.3/usb3/3-3/3-3.2/3-3.2:1.2/0003:04D9:0295.0005/input/input9
Aug 30 13:16:30 source kernel: hid-generic 0003:04D9:0295.0005: input,hidraw4: USB HID v1.11 Mouse [USB-HID Keyboard] on usb-0000:2b:00.3-3.2/input2
Aug 30 13:16:30 source kernel: hid-generic 0003:2972:0093.0006: hiddev98,hidraw5: USB HID v1.10 Device [GuangZhou FIIO Electronics Co.,Ltd FIIO KA17] on usb-0000:03:00.0-6/input3
Aug 30 13:16:30 source kernel: hid-generic 0003:2972:0093.0007: input,hidraw6: USB HID v1.11 Device [GuangZhou FIIO Electronics Co.,Ltd FIIO KA17] on usb-0000:03:00.0-6/input4
Aug 30 17:16:34 source systemd-logind[1507]: Watching system buttons on /dev/input/event5 (USB-HID Keyboard)
Aug 30 17:16:34 source systemd-logind[1507]: Watching system buttons on /dev/input/event6 (USB-HID Keyboard System Control)
Aug 30 17:16:34 source systemd-logind[1507]: Watching system buttons on /dev/input/event9 (USB-HID Keyboard)

When I plug in the controller using USB, it does get recognized, but fails to show up in Settings > Game Controller?

$ lsusb | grep -i nin
Bus 003 Device 005: ID 057e:2009 Nintendo Co., Ltd Switch Pro Controller

If I launch Steam and I’ve unplugged and plugged the controller from the USB, Steam doesn’t see it. Even after pressing the “H” button to start pairing and pressing the L/R triggers.

My joycon service show it’s running fine:

$ sudo systemctl status joycond.service 
● joycond.service - joycond
     Loaded: loaded (/usr/lib/systemd/system/joycond.service; enabled; preset: disabled)
     Active: active (running) since Fri 2024-08-30 17:16:34 EDT; 17h ago
 Invocation: bde55e5e5c0b40ef8c7fa72638303498
   Main PID: 1736 (joycond)
      Tasks: 1 (limit: 76906)
        CPU: 2.204s
     CGroup: /system.slice/joycond.service
             └─1736 /usr/bin/joycond

Aug 30 17:16:34 source systemd[1]: Started joycond.
Aug 30 17:16:34 source joycond[1736]: adding epoll_subscriber: fd=4

Filed a bug, let’s hope it get’s resolved quickly.

https://bugzilla.opensuse.org/show_bug.cgi?id=1230127

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.