NXBT Switch
More actions
| NXBT | |
|---|---|
| General | |
| Author | Brikwerk |
| Type | PC Utilities |
| Version | 0.1.4 |
| License | MIT License |
| Last Updated | 2021/10/04 |
| Links | |
| Download | |
| Website | |
| Source | |
NXBT is a utility written in Python that lets you control your Nintendo Switch via a web browser, terminal, or custom macros.
Features
- Use your favourite web browser to control a Nintendo Switch with any keyboard or gamepad.
- Use your terminal to control a Nintendo Switch with a keyboard.
- Use a macro from your terminal, browser, or Python script
- Use the NXBT Python API to write programs to control your Nintendo Switch.
- Primitive loop support in macros.
- In-depth command line interface.
- Support for emulating multiple controllers at once.
- Support for fast connection or reconnection to a Nintendo Switch.
- Emulated ontrollers support thread-safe access.
Installation
Linux: sudo pip3 install nxbt (Note: NXBT needs root privileges to toggle the BlueZ Input plugin. If you're not comfortable running this program as root, you can disable the Input plugin manually, and install NXBT as a regular user.)
Windows and macOS: See the installation guide here.
Media
How I Play Nintendo Switch 2 Without Having the Console (Sir Spudly)
Known issues
- Switching from the slow frequency mode on the "Change Grip/Order" menu to the full input report frequency is still a bit of a frail process. Some game start menus have a frequency of 15Hz but specifically only allow exiting by pressing the A button. The "Change Grip/Order" menu allows for exiting with A, B, or the Home button, however.
- The webapp can sometimes have small amounts of input lag (<8ms).
Changelog
v0.1.4
- Additions and Changes
- SwitchOS v12 and v13 compatibility.
- A new, more efficient communication strategy.
- Added a remote_tui option to the CLI for explicit use over remote connections.
- Added a test option to the CLI for better debugging support.
- Overriding the bluetooth service is done in a much cleaner way (#19).
- Added support for Windows and MacOS with Vagrant-configured Virtual Machines. See the Installation section in the README for more details.
- Added a --usessl argument for use with the web app. A secure context (SSL) will be required for gamepad use in the web app due to upcoming browser changes. Please Note: the SSL certificates generated in this mode are completely insecure and are not meant for any kind of production or non-local use. Your browser will warn you as such, if you choose to use them.
- Added input sampling method selection to the web app. Depending on which browser you use, some of the selections will be more responsive than others.
- Added Controller Restart functionality to the web app.
- Bugfixes
- Fixed a bug preventing proper reconnection after an active connection was killed.
- Fixed a bug where resources wouldn't be freed after a controller was shutdown from within the web app.
- Fixed crashes in certain scenarios when reconnecting.
v0.1.3
- The frequency for the direct TUI input loop has been increased from 30Hz to 120Hz. This matches the input frequency of the controller and should promote more responsive input.
- An issue with Socket.IO protocol incompatibility which resulted in dropped webapp connections has been resolved (#6).
- Critical dependency versions have been pinned
v0.1.2
- Fixed an issue with webapp static resources not being included when packaging NXBT for the Python Package Index.
v0.1.1
- Added CLI options to set the IP and port of the webapp.
- Set default IP and port options to allow for access on the local network (IP: 0.0.0.0, Port: 8000).
v0.1
- First Release.
Credits
A big thank you goes out to all the contributors at the dekuNukem/Nintendo_Switch_Reverse_Engineering repository! Almost all information pertaining to the innerworkings of the Nintendo Switch Controllers comes from the documentation in that repo. Without it, NXBT wouldn't have been possible.