Using Switch controllers motion controls in Cemu and Dolphin (linux)

Today, I will wake up from my deep slumber and tell, how to use nintendo switch controllers’ motion controls in several emulators, such as Dolphin and Cemu, on Linux.

Please, use links to original guides to check if something changes, especially in case you have some issues while following this article.

Video Version Link to heading

We will:

Check for hid_nintendo Link to heading

This driver is required for basic nintendo controller support and is added to modern mainline linux (Maybe? A lot of sources contradict each other on that topic), so you may not need to install it manually

  • open up your terminal
  • run sudo modinfo hid_nintendo command

If you get information about present kernel you don’t need to worry anymore.

  • On Fedora you may also try to install sudo dnf install kernel-modules-extra and check again
  • If it still fails, follow instructions from official github repo

You can also install hid-nx-dkms instead, for better NS Online and some other non-standart first-party nintendo controllers support

Install joycond Link to heading

This driver is adding support for using joycons as either one united or two separate ones, and adding some other compatibility features.

Check if you distribution uses systemd. Check issue 28 on their github for some information if it does not, and also link to unofficial OpenRC script for joycond. If you are an advanced user you may write your own initialization script and make things work, but if you read this guide you are probably are not one.

Use the below commands (carefully read the # comments carefully before copying)

# replace sudo in commands below with doas or su if you don't use sudo
# install libevdev developer packages (-dev / -devel)
sudo apt install libevdev-dev make cmake # on Debian/Ubuntu/Mint
# OR
sudo dnf install libevdev-devel libudev-devel c++ make cmake # on Fedora

# clone repository
git clone https://github.com/DanielOgorchock/joycond.git

# go to cloned repository
cd joycond

# compile
cmake .
# install compiled
sudo make install

# enable installed service/daemon now
sudo systemctl enable --now joycond

And remove or move the joycond folder after that.

Original instructions in project github

Install joycond-cemuhook Link to heading

This is a script that uses DSU standart to send controller data over local networ, along with motion controls data in our case.

# install python3
sudo apt install python3 # on Debian/Ubuntu/Mint
#OR
sudo dnf install python3 # on Fedora

# install pip if it is not installed by default
python3 -m ensurepip

pip3 install git+https://github.com/joaorb64/joycond-cemuhook

Original instructions in project github

Connect controllers Link to heading

  • Press sync button on controller
  • Connect it using Bluetooth (interface depends on DE you are using)
  • Press L and R shoulder buttons at the same time to use joycons as one, or SL and SR on each one to use them separately
  • Open up terminal and run joycond-cemuhook command

If you get an error about kernel module, run sudo modprobe hid_nintendo to enable it

Set up Dolphin Link to heading

  • Go into input settings
  • Press Alternate Input Sources button Screenshot of controllers menu in cemu with Alternative Input Sources button in focus
  • Enable DSU client using checkmark in opened menu Screenshot of Alternative sources button menu
  • add device using IP and port from joycond-cemuhook terminal output Screenshot of DSU controller setting menu After that, you need to choose newly added device from controller config, and configure buttons. You may need to calibrate sticks and motion sensors that do not work well after you try using it as is.

Set up Cemu (Native linux port) Link to heading

  • Press plus button next to controller choosing menu in input configuration Screenshot of input menu in cemu with plus button pressed
  • Add DSU controller Screenshot of dropdown menu with DSU Controller selecter
  • Use dropdown “Controller” menu to choose it, you may need to use arrow keys and enter key as for now due to it only showing one controller at one time
  • Press “Settings” and check “Use motion controls” Screenshot of input menu in cemu with settings button pressed Screenshot of settings in input menu in cemu with motion controls checkmark checked