How to Pair the Nintendo Switch Pro Controller on Linux

You can pair a Nintendo Switch Pro Controller with Linux without compiling a third-party driver on a current distribution. Mainline Linux includes the hid-nintendo driver for the Pro Controller over both Bluetooth and USB, and Steam Input officially supports the Nintendo Switch Pro Controller. The old advice to install Joycond just to use one Pro Controller is no longer necessary for most PCs.

Nintendo Switch Pro Controller beside a Linux laptop
A Nintendo Switch Pro Controller can connect to a current Linux PC over Bluetooth or USB-C.

Before you pair the Pro Controller

Charge the controller first and make sure Bluetooth works on the PC if you want a wireless connection. Mainline Linux 5.16 already contained the Nintendo HID driver, and the current kernel configuration still lists support for Nintendo Joy-Con, NSO, and Pro Controllers. You can verify the implementation in the Linux 5.16 hid-nintendo source and the current Linux HID configuration.

If your distribution uses an unusually old kernel, update through the distribution's normal update tools before troubleshooting controller drivers. This guide is aimed at the official Nintendo Switch Pro Controller; third-party controllers can identify themselves differently and may need vendor-specific instructions.

How to pair the Nintendo Switch Pro Controller over Bluetooth

  1. Open Bluetooth settings and turn Bluetooth on. On GNOME, open Activities, search for Bluetooth, and open the Bluetooth panel. GNOME begins searching while the panel is open; KDE Plasma provides a similar add-device flow in its Bluetooth controls. See the official GNOME Bluetooth pairing guide or KDE Bluetooth documentation if your menus differ.
Linux Bluetooth settings with Bluetooth enabled and scanning for devices
Open your desktop Bluetooth settings and leave the panel scanning for nearby devices.
  1. Put the controller into pairing mode. Press and hold the small SYNC button near the USB-C connector for at least one second. Nintendo identifies this button in its Pro Controller diagram and uses the same SYNC-button action for wireless pairing.
Finger pressing the SYNC button beside the USB-C port on a Switch Pro Controller
Hold the small SYNC button near the USB-C port to put the Pro Controller into pairing mode.
  1. Select Pro Controller. Keep the Linux Bluetooth panel open until Pro Controller appears, then select it and choose the available Connect or Pair action. The exact button label depends on your desktop environment.
Linux Bluetooth settings showing Pro Controller ready to connect
Select Pro Controller when it appears in the nearby-device list.
  1. Confirm the connection. When the device shows Connected, press a few controller buttons or launch a game that supports gamepads. If the player LEDs keep cycling and Linux never reports a connection, remove the saved device and repeat the pairing process.
Linux Bluetooth settings showing Pro Controller connected
A connected status confirms that Bluetooth pairing has completed.

Use the Switch Pro Controller over USB-C

A wired connection does not require Bluetooth pairing. Connect a data-capable USB-C cable between the Pro Controller and the Linux PC. The kernel's Nintendo HID driver explicitly supports the Pro Controller in USB mode, so a current Linux system should create the input device automatically. If the controller charges but no input device appears, try another cable because some USB-C cables carry power only.

Nintendo Switch Pro Controller connected to a Linux laptop with a USB-C cable
USB-C is the simplest fallback because the Pro Controller also supports wired USB mode.

Set up the Pro Controller in Steam

Valve lists the Nintendo Switch Pro Controller as a supported Steam Input device. After connecting the controller, open Steam > Settings > Controller and check that the controller appears in the detected-controller area. Valve's Steam Input Devices documentation confirms Switch Pro support, while its player setup guide explains the Controller settings workflow.

If a game shows the wrong prompts or layout, adjust that game's Steam Input layout rather than installing another Linux kernel driver. You can also reconnect the controller before launching Steam if the client was already running when you paired it.

Steam Controller settings detecting a Nintendo Switch Pro Controller
Steam Input supports the Nintendo Switch Pro Controller and should list it in Controller settings.

If the controller does not appear in Bluetooth settings

First make sure the controller has power, Bluetooth is enabled, and no stale Pro Controller entry is blocking a fresh pairing. Nintendo recommends charging an unresponsive Pro Controller before pairing, and GNOME notes that Bluetooth failures can also come from a disabled or unsupported adapter.

If the graphical panel still does not find the controller, use BlueZ's bluetoothctl utility:

bluetoothctl
power on
agent on
default-agent
scan on

Hold the controller's SYNC button again and wait for an entry named Pro Controller. Note its Bluetooth address, then run:

pair XX:XX:XX:XX:XX:XX
scan off
quit

The current bluetoothctl manual documents scan, agent, and pair; the pair command pairs, trusts, and connects the device. Replace the example address with the one shown on your PC.

Linux terminal running bluetoothctl while scanning for a Pro Controller
The bluetoothctl utility can scan and pair the controller when a desktop Bluetooth panel is not enough.

Do you still need Joycond?

Usually, no. For a single Pro Controller, current Linux kernel support plus your desktop's Bluetooth stack is enough. Joycond is a separate userspace daemon built around hid-nintendo for Joy-Con pairing and virtual-controller behavior. Install it only if you specifically need those extra workflows, not as a basic prerequisite for pairing a Pro Controller.

Leave a Comment

How to Record Speaker Output on Linux with Audacity

How to Record Speaker Output on Linux with Audacity

Capture Linux desktop audio in Audacity by routing its recording stream to your output device’s monitor source. Follow PulseAudio and PipeWire steps, export tips, and fixes for silent tracks.

How to Use Dropbox on Linux: Install and Sync Your Files

How to Use Dropbox on Linux: Install and Sync Your Files

Install Dropbox on Linux from the official package, sign in, sync a local folder, manage selective sync, and check status from the command line.

How to Install Inkscape on Linux: Ubuntu, Fedora, Arch, and More

How to Install Inkscape on Linux: Ubuntu, Fedora, Arch, and More

Install Inkscape from your Linux distribution’s repositories, the Ubuntu stable PPA, Snap, or Flathub, with current commands and notes for choosing a package source.

How to Find and Remove Duplicate Files on Linux With FSlint

How to Find and Remove Duplicate Files on Linux With FSlint

Use FSlint to scan selected Linux folders, review duplicate groups, and safely delete redundant files or learn when hard-link merging is appropriate.

How to Install SABnzbd on Linux and Configure It

How to Install SABnzbd on Linux and Configure It

Install SABnzbd on Ubuntu or Debian, or run it in Docker on another Linux host. Then open the web interface and configure your provider and download folders.

How to Install the Paper GTK Theme on Linux

How to Install the Paper GTK Theme on Linux

Install the Paper GTK theme from supported Linux repositories, enable it for GTK apps in GNOME Tweaks, and see what the legacy theme can and cannot change.

How to Install and Set Up Plex on OpenMediaVault with Compose

How to Install and Set Up Plex on OpenMediaVault with Compose

The old OpenMediaVault Plex plugin is archived. Set up Plex on OMV 8 with OMV-Extras, the Compose plugin, persistent storage, and Plex’s official container.

How to Clean and Speed Up Ubuntu Safely

How to Clean and Speed Up Ubuntu Safely

Clean and speed up Ubuntu with safe APT cleanup, storage checks, and startup controls that help free space and troubleshoot a sluggish desktop.

How to Install the Hiri Email Client on Linux

How to Install the Hiri Email Client on Linux

Install Hiri on Linux with its Snap package or official tarball, add a desktop launcher, and check supported accounts plus a warning about Hiri’s old Snap release.

How to Get System Specifications for a Linux PC

How to Get System Specifications for a Linux PC

Use Fastfetch and built-in Linux commands to check your distro, kernel, CPU, memory, graphics, storage, and connected devices, then save a clear report.