Skip to content

SquareDonut1/SPro2Win

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SPro2Win

Version: 0.2.0 (Public Release)

A Python-based driver that connects a Nintendo Switch 2 Pro Controller to a Windows PC via Bluetooth LE and emulates a standard Xbox 360 controller (XInput) for universal game compatibility.

This project is the result of a significant reverse-engineering effort. All input mappings and the core connection protocol were manually discovered and are made available here for the community.

Features

  • Full Input Mapping: All buttons, D-Pads and analog sticks are fully mapped and functional.
  • XInput Emulation: Appears to your PC and games as a standard Xbox 360 controller.
  • User-Friendly Device Discovery: Automatically scans for and filters nearby Bluetooth devices to only show potential Nintendo controllers, making setup quick and easy.

Current Limitations

This driver provides a complete solution for all gameplay inputs. However, advanced output features have not been implemented due to the complexity of the controller's proprietary protocols.

No HD Rumble No Gyro/Motion Controls No Battery Level Reporting The controller only sends updates every 60 ms, which causes noticeable latency.

This driver is intended as a functional Gamepad and a foundational resource for developers who know what they are doing

Requirements

  1. Windows 10/11.
  2. Python 3.7+.
  3. ViGEmBus Driver: You MUST install this system driver first.
  4. Python Libraries: Open a Command Prompt or PowerShell and run:
    pip install vgamepad bleak

How to Use

  1. Run the Driver: Execute the Python script. The console will open.
  2. Sync Mode: Press the small sync button on the top of your controller until the player lights start flashing.
  3. Select Your Controller: The script will scan and show a short, filtered list of potential Nintendo controllers. Enter the number corresponding to your controller and press Enter.
  4. Done! The script will connect, and the virtual Xbox 360 controller is now active. You can minimize the script window and play your games. To stop the driver, simply close the console window.

Lastly

This took me quite a while, as this is my first reverse engineering project, especially with anything Bluetooth-related. Please offer any advice you may have. I have ordered a GeeekPi nRF52840 from Amazon so I can get more in-depth packet data, so I will keep updating this repository as I get more info. Also, here's a video of it working: Switch 2 Pro Controller PC Driver Demo

License

This project is released under the MIT License. See the LICENSE file for more details. You are free to use, modify, and distribute this code, but please provide attribution.

About

A python Driver for Conecting a Switch 2 Pro Controller to PC

Resources

License

Stars

3 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors

Languages