A powerful Python application that emulates Nintendo Switch controllers over Bluetooth, featuring a modern GUI interface and comprehensive amiibo support.
- Emulates a Nintendo Switch Pro Controller
- Real-time button press simulation
- Analog stick click (L3/R3) support
- Dark-themed, modern user interface built with PySide6
- Real-time connection status monitoring
- Auto-reconnection capabilities
- Visual button feedback
- Full amiibo emulation functionality
- Load amiibo files (.bin format)
- Mutable amiibo support with automatic backup creation
- Tag UID management
- 540/572 byte amiibo file support
- Connect to previously paired Nintendo Switch consoles
- Fresh pairing mode for new connections
- Automatic device discovery
- Bluetooth MAC address management
- Device unpairing capabilities
- Linux-based operating system (tested on Ubuntu/Debian)
- Python 3.7 or higher
- CSR-based USB Bluetooth dongle (recommended)
-
Clone the repository:
git clone https://github.com/EshayDev/joycontrol-gui.git cd joycontrol-gui -
Install Python dependencies:
sudo pip install PySide6 dbus-python aioconsole hid crc8 --break-system-packages
-
Install system dependencies (Ubuntu/Debian):
sudo apt update sudo apt install python3-dbus libhidapi-hidraw0 libbluetooth-dev bluez
-
Configure Bluetooth service for Nintendo Switch compatibility:
โ ๏ธ WARNING: This configuration will break other Bluetooth devices!Edit the Bluetooth service configuration:
sudo nano /lib/systemd/system/bluetooth.service
Change the ExecStart line to:
ExecStart=/usr/lib/bluetooth/bluetoothd -C -P sap,input,avrcpThis removes additional features that interfere with Switch pairing but breaks other Bluetooth functionality.
-
Restart Bluetooth service:
sudo systemctl daemon-reload sudo systemctl restart bluetooth
Run the main GUI application:
sudo python3 main.pyNote: Root privileges are required for Bluetooth HID operations.
- Load amiibo .bin files through the GUI
- Files are automatically backed up when made mutable
- Supports both 540-byte and 572-byte amiibo formats
- Toggle amiibo on/off during gameplay
- Put your Nintendo Switch in controller pairing mode (change grip/order menu)
- Run the application with sudo privileges
- Select "Start Fresh Pairing" or choose a previously paired device
- Follow the on-screen prompts
Important: The modified Bluetooth service configuration will break other Bluetooth devices while active.