Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Emulate Nintendo Switch Controllers over Bluetooth

Notifications You must be signed in to change notification settings

Avilyn-UX/joycontrol-gui

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

joycontrol-gui

A powerful Python application that emulates Nintendo Switch controllers over Bluetooth, featuring a modern GUI interface and comprehensive amiibo support.

Features

๐ŸŽฎ Controller Emulation

  • Emulates a Nintendo Switch Pro Controller
  • Real-time button press simulation
  • Analog stick click (L3/R3) support

๐ŸŽจ Modern GUI Interface

  • Dark-themed, modern user interface built with PySide6
  • Real-time connection status monitoring
  • Auto-reconnection capabilities
  • Visual button feedback

๐Ÿ“ฑ NFC/Amiibo Support

  • 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

๐Ÿ”Œ Connection Management

  • Connect to previously paired Nintendo Switch consoles
  • Fresh pairing mode for new connections
  • Automatic device discovery
  • Bluetooth MAC address management
  • Device unpairing capabilities

System Requirements

  • Linux-based operating system (tested on Ubuntu/Debian)
  • Python 3.7 or higher
  • CSR-based USB Bluetooth dongle (recommended)

Installation

  1. Clone the repository:

    git clone https://github.com/EshayDev/joycontrol-gui.git
    cd joycontrol-gui
  2. Install Python dependencies:

    sudo pip install PySide6 dbus-python aioconsole hid crc8 --break-system-packages
  3. Install system dependencies (Ubuntu/Debian):

    sudo apt update
    sudo apt install python3-dbus libhidapi-hidraw0 libbluetooth-dev bluez
  4. 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,avrcp
    

    This removes additional features that interfere with Switch pairing but breaks other Bluetooth functionality.

  5. Restart Bluetooth service:

    sudo systemctl daemon-reload
    sudo systemctl restart bluetooth

Usage

GUI Application

Run the main GUI application:

sudo python3 main.py

Note: Root privileges are required for Bluetooth HID operations.

Amiibo Usage

  1. Load amiibo .bin files through the GUI
  2. Files are automatically backed up when made mutable
  3. Supports both 540-byte and 572-byte amiibo formats
  4. Toggle amiibo on/off during gameplay

Pairing Process

  1. Put your Nintendo Switch in controller pairing mode (change grip/order menu)
  2. Run the application with sudo privileges
  3. Select "Start Fresh Pairing" or choose a previously paired device
  4. Follow the on-screen prompts

Important: The modified Bluetooth service configuration will break other Bluetooth devices while active.

About

Emulate Nintendo Switch Controllers over Bluetooth

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%