You do not have permission to edit this page, for the following reason:
The action you have requested is limited to users in one of the groups: Users, Administrators.
Free text:
Emulate Nintendo Switch Controllers over Bluetooth w/ Amiibo Support through Python3. Based on [[Joycontrol-ms Switch|joycontrol-ms]]. Tested on Debian, Generic Hardware. == Features == * Emulation of JOYCON_R, JOYCON_L and PRO_CONTROLLER. ** button commands ** stick state ** nfc data ** controller keybinding ** controller macro recording, playback, deleting == Installation == Install dependencies: * Deb-systems: ** Install the <code>dbus-python</code> <code>libhidapi-hidraw0</code> and <code>keyboard</code> packages ** <code>sudo apt install python3-dbus libhidapi-hidraw0</code> ** <code>sudo pip3 install keyboard</code> * Arch Linux Derivatives: ** Install the <code>hidapi</code> and <code>bluez-utils-compat</code>(AUR) packages. Clone the repository and install the joycontrol package to get missing dependencies: * (Note: Controller script needs super user rights, so python packages must be installed as root.) * In the joycontrol folder run: <code>sudo pip3 install .</code> Disable the bluez "input" plugin, see [https://github.com/mart1nro/joycontrol/issues/8 #8]. ==User guide== === Command line interface example === Run the script: * <code>sudo python3 run_controller_cli.py PRO_CONTROLLER</code> * This will create a PRO_CONTROLLER instance waiting for the Switch to connect. Open the "Change Grip/Order" menu of the Switch: * The Switch only pairs with new controllers in the "Change Grip/Order" menu. * Note: If you already connected an emulated controller once, you can use the reconnect option of the script (-r "<Switch Bluetooth Mac address>"). This does not require the "Change Grip/Order" menu to be opened. You can find out a paired mac address using the "bluetoothctl" system command. After connecting, a command line interface is opened. Note: Press <enter> if you don't see a prompt. * Call "help" to see a list of available commands. * If you call "test_buttons", the emulated controller automatically navigates to the "Test Controller Buttons" menu. === CLI Readme === <pre> While running the cli, call "help" for an explanation of available commands. Usage: run_controller_cli.py <controller> [--device_id | -d <bluetooth_adapter_id>] [--spi_flash <spi_flash_memory_file>] [--reconnect_bt_addr | -r <console_bluetooth_address>] [--log | -l <communication_log_file>] [--nfc <nfc_data_file>] run_controller_cli.py -h | --help Arguments: controller Choose which controller to emulate. Either "JOYCON_R", "JOYCON_L" or "PRO_CONTROLLER" Options: -d --device_id <bluetooth_adapter_id> ID of the bluetooth adapter. Integer matching the digit in the hci* notation (e.g. hci0, hci1, ...) or Bluetooth mac address of the adapter in string notation (e.g. "FF:FF:FF:FF:FF:FF"). Note: Selection of adapters may not work if the bluez "input" plugin is enabled. --spi_flash <spi_flash_memory_file> Memory dump of a real Switch controller. Required for joystick emulation. Allows displaying of JoyCon colors. Memory dumps can be created using the dump_spi_flash.py script. -r --reconnect_bt_addr <console_bluetooth_address> Previously connected Switch console Bluetooth address in string notation (e.g. "FF:FF:FF:FF:FF:FF") for reconnection. Does not require the "Change Grip/Order" menu to be opened, -l --log <communication_log_file> Write hid communication (input reports and output reports) to a file. --nfc <nfc_data_file> Sets the nfc data of the controller to a given nfc dump upon initial connection. </pre> === Resources === *[https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering Nintendo_Switch_Reverse_Engineering.] *[https://github.com/timmeh87/switchnotes/blob/master/console_pairing_session console_pairing_session.] ==Known issues== * Some bluetooth adapters seem to cause disconnects for reasons unknown, try to use an usb adapter instead. * Incompatibility with Bluetooth "input" plugin requires a bluetooth restart, see [https://github.com/mart1nro/joycontrol/issues/8 #8]. * It seems like the Switch is slower processing incoming messages while in the "Change Grip/Order" menu. This causes flooding of packets and makes pairing somewhat inconsistent. Not sure yet what exactly a real controller does to prevent that. A workaround is to use the reconnect option after a controller was paired once, so that opening of the "Change Grip/Order" menu is not required. == External links == * GitHub - https://github.com/QueenLinuxGlitch/joycontrol-kb
Advertising: