A high-performance C++ UDP server for Raspberry Pi that bridges your controllers directly to your Nintendo Switch using hardware USB emulation.
Play your switch games in any way you wish to. Controllers, keyboards, even your own phone!
Supports any controller with rumble and motion controls as well! You can also use your phone gyro!
With a single raspberry pi you can emulate up to 4 pro controllers at the same time!
Create, record and share your own macros!
To make the Switch recognize your Raspberry Pi as a physical controller, you must enable USB Gadget mode. SSH into your Pi and run these commands to configure the dwc2 driver and libcomposite:
echo "dtoverlay=dwc2" | sudo tee -a /boot/config.txt
echo "dwc2" | sudo tee -a /etc/modules
echo "libcomposite" | sudo tee -a /etc/modules
Note: Make sure to reboot your Raspberry Pi after executing these lines to load the modules.
First, download and extract the backend server directly onto your Raspberry Pi using the terminal:
wget https://github.com/Dycool/NS-PC-Control/releases/latest/download/ns-pc-control-raspberry-pi.zip
unzip ns-pc-control-raspberry-pi.zip
Next, download the companion client app for your preferred device to control the Switch:
Connect your Raspberry Pi directly into the Nintendo Switch Dock using its OTG data port (the USB-C port on a Pi 4/5, or the micro-USB data port on a Pi Zero). Next, run the server application with root privileges:
sudo ./ns-backend
Use -w if you want to use the webapp! It binds natively to port 8080 on your Raspberry Pi.
Finally, launch your corresponding client software on your PC or mobile device, type in your Raspberry Pi's network IP address, and start playing your favorite games!