{"id":13993819,"url":"https://github.com/mart1nro/joycontrol","last_synced_at":"2025-05-16T03:06:50.993Z","repository":{"id":40518948,"uuid":"235756613","full_name":"mart1nro/joycontrol","owner":"mart1nro","description":"Emulate Nintendo Switch Controllers over Bluetooth","archived":false,"fork":false,"pushed_at":"2022-03-22T21:49:22.000Z","size":165,"stargazers_count":1273,"open_issues_count":59,"forks_count":272,"subscribers_count":45,"default_branch":"master","last_synced_at":"2025-04-08T13:14:11.927Z","etag":null,"topics":["bluetooth","emulated-controller","joycon","nintendo-switch","pro-controller","raspberry-pi"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mart1nro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-01-23T08:52:12.000Z","updated_at":"2025-04-06T14:25:37.000Z","dependencies_parsed_at":"2022-06-29T21:13:35.749Z","dependency_job_id":null,"html_url":"https://github.com/mart1nro/joycontrol","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mart1nro%2Fjoycontrol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mart1nro%2Fjoycontrol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mart1nro%2Fjoycontrol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mart1nro%2Fjoycontrol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mart1nro","download_url":"https://codeload.github.com/mart1nro/joycontrol/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254459088,"owners_count":22074605,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bluetooth","emulated-controller","joycon","nintendo-switch","pro-controller","raspberry-pi"],"created_at":"2024-08-09T14:02:34.316Z","updated_at":"2025-05-16T03:06:45.979Z","avatar_url":"https://github.com/mart1nro.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# joycontrol\nEmulate Nintendo Switch Controllers over Bluetooth.\n\nTested on Ubuntu 19.10, and with Raspberry Pi 3B+ and 4B Raspbian GNU/Linux 10 (buster)\n\n## Features\nEmulation of JOYCON_R, JOYCON_L and PRO_CONTROLLER. Able to send:\n- button commands\n- stick state\n- ~~nfc data~~ (removed, see [#80](https://github.com/mart1nro/joycontrol/issues/80))\n\n## Installation\n- Install dependencies\n\nUbuntu: Install the `dbus-python` and `libhidapi-hidraw0` packages\n```bash\nsudo apt install python3-dbus libhidapi-hidraw0\n```\n\nArch Linux Derivatives: Install the `hidapi` and `bluez-utils-compat`(AUR) packages\n\n\n- 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:\n```bash\nsudo pip3 install .\n```\n- Consider to disable the bluez \"input\" plugin, see [#8](https://github.com/mart1nro/joycontrol/issues/8)\n\n## Command line interface example\n- Run the script\n```bash\nsudo python3 run_controller_cli.py PRO_CONTROLLER\n```\nThis will create a PRO_CONTROLLER instance waiting for the Switch to connect.\n\n- Open the \"Change Grip/Order\" menu of the Switch\n\nThe Switch only pairs with new controllers in the \"Change Grip/Order\" menu.\n\nNote: If you already connected an emulated controller once, you can use the reconnect option of the script (-r \"\\\u003cSwitch Bluetooth Mac address\u003e\").\nThis does not require the \"Change Grip/Order\" menu to be opened. You can find out a paired mac address using the \"bluetoothctl\" system command.\n\n- After connecting, a command line interface is opened. Note: Press \\\u003center\u003e if you don't see a prompt.\n\nCall \"help\" to see a list of available commands.\n\n- If you call \"test_buttons\", the emulated controller automatically navigates to the \"Test Controller Buttons\" menu. \n\n\n## Issues\n- Some bluetooth adapters seem to cause disconnects for reasons unknown, try to use an usb adapter instead \n- Incompatibility with Bluetooth \"input\" plugin requires a bluetooth restart, see [#8](https://github.com/mart1nro/joycontrol/issues/8)\n- It seems like the Switch is slower processing incoming messages while in the \"Change Grip/Order\" menu.\n  This causes flooding of packets and makes pairing somewhat inconsistent.\n  Not sure yet what exactly a real controller does to prevent that.\n  A workaround is to use the reconnect option after a controller was paired once, so that\n  opening of the \"Change Grip/Order\" menu is not required.\n- ...\n\n## Thanks\n- Special thanks to https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering for reverse engineering of the joycon protocol\n- Thanks to the growing number of contributers and users\n\n## Resources\n\n[Nintendo_Switch_Reverse_Engineering](https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering)\n\n[console_pairing_session](https://github.com/timmeh87/switchnotes/blob/master/console_pairing_session)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmart1nro%2Fjoycontrol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmart1nro%2Fjoycontrol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmart1nro%2Fjoycontrol/lists"}