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 kernel driver
- Install joycond (currently requires systemd)
- Install joycond-cemuhook
- Connect the controllers
- Set up Cemu and Dolphin to use it
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
- Enable DSU client using checkmark in opened menu
- add device using IP and port from joycond-cemuhook terminal output 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
- Add DSU controller
- 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”