/WireShock

Windows Bluetooth Host Driver for Sony DualShock Controllers

Primary LanguageCMIT LicenseMIT

WireShock

Windows Bluetooth Host Driver for Sony DualShock Controllers


This was a research project and an attempt of porting over the Bluetooth host stack from the C#-implementation used in ScpToolkit to a native C Windows kernel-mode bus driver. It has been discontinued in favour of better solutions. The code will stay up for anyone to use as either an inspiration or a negative example 😜 Do bear in mind, that the code may contain unaddressed issues! Compile and use at your own risk! No support or binaries provided!


Summary

WireShock is a Windows kernel-mode driver implementing a custom Windows Bluetooth Stack handling wireless communication with Sony DualShock 3 and 4 controllers. It acts as a function driver for a variety of USB host radios (see WireShock.inf) and a bus driver to expose connected controllers as HID devices to the system (see WireShockHidDevice.inf).

Architecture

Since the Sony DualShock 3 utilizes a butchered non-standard Bluetooth protocol incompatible with standard HID profiles a custom Bluetooth stack is required to establish a connection on the Windows platform. WireShock implements a compatible Bluetooth stack and also acts as a bus emulator allowing for multiple devices to connect and transmit. It's designed to work with most USB Bluetooth host devices obeying at least Core Version 2.1 + EDR standards.

The actual input and output reports are exposed by HID-compliant child PDOs using a custom report format to additionally present pressure axes to DirectInput.

Supported systems

The driver is built for Windows 7/8/8.1/10 (x86 and amd64).

Sources