Windows kernel-mode Bluetooth Profile & Filter Drivers for PS3 peripherals
See the code[!WARNING] No other official website exists for this project besides this GitHub repository (github.com/nefarius/BthPS3) and sites hosted on
*.nefarius.at(e.g. docs.nefarius.at, discord.nefarius.at).Anyone claiming otherwise is a scammer and a fraud. Do not trust other websites, download links, or people claiming to represent this project. Please be wary and only use the sources listed above.
Windows kernel‑mode Bluetooth profile and filter drivers for PS3 peripherals.
For end users who just want to use their PS3 controllers on Windows.
.msi).If you run into issues, carefully read the documentation and FAQ before opening a GitHub issue.
/biː θriː/
TL;DR: these drivers allow popular PlayStation(R) 3 gaming peripherals (SIXAXIS/DualShock 3, PS Move Navigation & Motion Controllers) to connect to Windows via Bluetooth without losing any standard functionality.
This set of Windows kernel‑mode drivers extends the standard (a.k.a. vanilla) Bluetooth stack (Microsoft/Broadcom/Toshiba/Intel/...) with an additional L2CAP server service (profile driver) and a Bluetooth lower‑filter driver, gracefully working around the reserved PSMs issue that causes PS3 peripheral connections to be denied on the default Windows stack. The profile driver attempts to distinguish incoming device types based on their reported remote names and exposes their HID Control and HID Interrupt channels via simple bus child devices (a.k.a. PDOs). The profile/bus driver supports both “regular” operation modes (requiring a proper function driver such as a HID minidriver) and “raw” mode (powering the PDO up without a function driver and exposing it to userland) for maximum flexibility and future‑proofing. The PSM filter attaches only to Bluetooth‑class devices and skips attachment if the underlying transport is neither USB nor the Bluetooth Extensibility Transport (BTHX, e.g. BthMini.sys-bound PCIe/UART radios).
The solution consists of the following individual projects:
BthPS3 – multipurpose kernel‑mode driver: function driver for service PDO exposed by BTHENUM (Microsoft), Bluetooth profile (L2CAP server service), and bus driver for PS3 wireless peripherals.BthPS3PSM – lower‑filter driver for Bluetooth host radios (USB via BTHUSB, or non‑USB via the Bluetooth Extensibility Transport/BthMini), patching L2CAP packets and rerouting L2CAP traffic to the profile driver.BthPS3CfgUI – userland GUI utility to safely edit driver settings.BthPS3Util – userland CLI utility to modify filter‑driver settings.BthPS3Installer – WiXSharp-based setup for driver installation and removal.This solution contains BSD‑3‑Clause and MIT licensed components:
BthPS3.sys, BthPS3PSM.sys) – BSD‑3‑ClauseBthPS3CfgUI.exe) – MITFor details, please consult the individual LICENSE files.
This is a community project and is not affiliated with Sony Interactive Entertainment Inc. in any way. “PlayStation”, “PSP”, “PS2”, “PS one”, “DUALSHOCK” and “SIXAXIS” are registered trademarks of Sony Interactive Entertainment Inc.
BthPS3 components can run on Windows 10 version 1507 or newer (x64, ARM64).
The BthPS3 profile driver and supported devices have been tested successfully with host devices following Link Manager Protocol (LMP) core specification version 3 (which corresponds to Bluetooth 2.0 + EDR) and higher. Anything lower than that is not recommended and is not supported. Check your particular chip firmware version in Device Manager prior to installing the drivers:

When loaded onto an unsupported host radio, device boot will fail with STATUS_DEVICE_POWER_FAILURE:

For a list of tested devices, consult the extended documentation.
| LMP | Bluetooth version |
|---|---|
| 0 | Bluetooth 1.0b |
| 1 | Bluetooth 1.1 |
| 2 | Bluetooth 1.2 |
| 3 | Bluetooth 2.0 + EDR |
| 4 | Bluetooth 2.1 + EDR |
| 5 | Bluetooth 3.0 + HS |
| 6 | Bluetooth 4.0 |
| 7 | Bluetooth 4.1 |
| 8 | Bluetooth 4.2 |
| 9 | Bluetooth 5 |
| 10 | Bluetooth 5.1 |
| 11 | Bluetooth 5.2 |
Prebuilt binaries and installation instructions are provided by Nefarius Software Solutions e.U. and are available via the setup. Official support covers Windows 10/11 x64/ARM64 only; issues filed for any other version or architecture will be discarded.
Check out the companion solution DsHidMini for using the controller in games.
Knowledge of how to build and (test-)sign Windows drivers is required for creating usable builds. This is outside the scope of the project documentation.
Workloads tab under Desktop & Mobile, select at least .NET desktop development and Desktop development with C++.
Individual components tab, search for and select the Spectre-mitigate libs (Latest) for all architectures you wish to build for, plus Windows Driver Kit.
Building and signing the setup MSI is CI-only (see Setup/README.md); no local WiX Toolset install is needed.
You can build individual projects of the solution within Visual Studio.
The project uses the following branch strategy:
master – stable code base, in sync with tagged public releasesdevel – work‑in‑progress changes, mostly larger changes spanning a couple of PRsTagged CI builds are mirrored to the buildbot web server; use at your own risk, no support provided.
Everything you need to know is documented on the project page. Please read it carefully before considering filing an issue.
Not being able to connect your controller is not a bug report. Read the FAQ and accept what is written there.
The diagram below visualizes the relationships between the drivers and devices involved (host hardware at the bottom, exposed child devices towards the top):
+----------------------+ +----------------------+
| Navigation PDO +<----------+ +--------->+ Motion PDO |
+----------------------+ | | +----------------------+
| |
| |
| |
| |
| |
+----------------------+ +-----+---------+------+ +----------------------+
| SIXAXIS PDO +<---------+ Profile & Bus Driver +-------->+ Wireless PDO |
+----------------------+ | (BthPS3.sys) | +----------------------+
+----------+-----------+
^
|
v
+----------+-----------+
| Bluetooth Enumerator |
| (bthenum.sys) |
+----------+-----------+
^
|
v
+----------+-----------+
| bthport.sys |
+----------+-----------+
^
|
+-----------------------+-----------------------+
| |
v v
+----------+-----------+ +----------+-----------+
| bthusb.sys | | BthMini.sys |
+----------+-----------+ +----------+-----------+
^ ^
| |
v v
+----------+-----------+ +----------+-----------+
| BthPS3PSM.sys filter | | BthPS3PSM.sys filter |
+----------+-----------+ +----------+-----------+
^ ^
| |
v v
+----------+-----------+ +----------+-----------+
| USB Stack | | Vendor transport PDO |
+----------+-----------+ | (e.g. iBtPciBus, |
^ | UART, ...) |
| +----------------------+
v
+----------+-----------+
| USB Bluetooth dongle |
+----------------------+
This application benefits from these awesome projects ❤ (in no particular order):
C
55.3%
PowerShell
18.7%
C#
17.3%
C++
4.6%
Roff
3.7%
Windows kernel-mode Bluetooth Profile & Filter Drivers for PS3 peripherals
See the code[!WARNING] No other official website exists for this project besides this GitHub repository (github.com/nefarius/BthPS3) and sites hosted on
*.nefarius.at(e.g. docs.nefarius.at, discord.nefarius.at).Anyone claiming otherwise is a scammer and a fraud. Do not trust other websites, download links, or people claiming to represent this project. Please be wary and only use the sources listed above.
Windows kernel‑mode Bluetooth profile and filter drivers for PS3 peripherals.
For end users who just want to use their PS3 controllers on Windows.
.msi).If you run into issues, carefully read the documentation and FAQ before opening a GitHub issue.
/biː θriː/
TL;DR: these drivers allow popular PlayStation(R) 3 gaming peripherals (SIXAXIS/DualShock 3, PS Move Navigation & Motion Controllers) to connect to Windows via Bluetooth without losing any standard functionality.
This set of Windows kernel‑mode drivers extends the standard (a.k.a. vanilla) Bluetooth stack (Microsoft/Broadcom/Toshiba/Intel/...) with an additional L2CAP server service (profile driver) and a Bluetooth lower‑filter driver, gracefully working around the reserved PSMs issue that causes PS3 peripheral connections to be denied on the default Windows stack. The profile driver attempts to distinguish incoming device types based on their reported remote names and exposes their HID Control and HID Interrupt channels via simple bus child devices (a.k.a. PDOs). The profile/bus driver supports both “regular” operation modes (requiring a proper function driver such as a HID minidriver) and “raw” mode (powering the PDO up without a function driver and exposing it to userland) for maximum flexibility and future‑proofing. The PSM filter attaches only to Bluetooth‑class devices and skips attachment if the underlying transport is neither USB nor the Bluetooth Extensibility Transport (BTHX, e.g. BthMini.sys-bound PCIe/UART radios).
The solution consists of the following individual projects:
BthPS3 – multipurpose kernel‑mode driver: function driver for service PDO exposed by BTHENUM (Microsoft), Bluetooth profile (L2CAP server service), and bus driver for PS3 wireless peripherals.BthPS3PSM – lower‑filter driver for Bluetooth host radios (USB via BTHUSB, or non‑USB via the Bluetooth Extensibility Transport/BthMini), patching L2CAP packets and rerouting L2CAP traffic to the profile driver.BthPS3CfgUI – userland GUI utility to safely edit driver settings.BthPS3Util – userland CLI utility to modify filter‑driver settings.BthPS3Installer – WiXSharp-based setup for driver installation and removal.This solution contains BSD‑3‑Clause and MIT licensed components:
BthPS3.sys, BthPS3PSM.sys) – BSD‑3‑ClauseBthPS3CfgUI.exe) – MITFor details, please consult the individual LICENSE files.
This is a community project and is not affiliated with Sony Interactive Entertainment Inc. in any way. “PlayStation”, “PSP”, “PS2”, “PS one”, “DUALSHOCK” and “SIXAXIS” are registered trademarks of Sony Interactive Entertainment Inc.
BthPS3 components can run on Windows 10 version 1507 or newer (x64, ARM64).
The BthPS3 profile driver and supported devices have been tested successfully with host devices following Link Manager Protocol (LMP) core specification version 3 (which corresponds to Bluetooth 2.0 + EDR) and higher. Anything lower than that is not recommended and is not supported. Check your particular chip firmware version in Device Manager prior to installing the drivers:

When loaded onto an unsupported host radio, device boot will fail with STATUS_DEVICE_POWER_FAILURE:

For a list of tested devices, consult the extended documentation.
| LMP | Bluetooth version |
|---|---|
| 0 | Bluetooth 1.0b |
| 1 | Bluetooth 1.1 |
| 2 | Bluetooth 1.2 |
| 3 | Bluetooth 2.0 + EDR |
| 4 | Bluetooth 2.1 + EDR |
| 5 | Bluetooth 3.0 + HS |
| 6 | Bluetooth 4.0 |
| 7 | Bluetooth 4.1 |
| 8 | Bluetooth 4.2 |
| 9 | Bluetooth 5 |
| 10 | Bluetooth 5.1 |
| 11 | Bluetooth 5.2 |
Prebuilt binaries and installation instructions are provided by Nefarius Software Solutions e.U. and are available via the setup. Official support covers Windows 10/11 x64/ARM64 only; issues filed for any other version or architecture will be discarded.
Check out the companion solution DsHidMini for using the controller in games.
Knowledge of how to build and (test-)sign Windows drivers is required for creating usable builds. This is outside the scope of the project documentation.
Workloads tab under Desktop & Mobile, select at least .NET desktop development and Desktop development with C++.
Individual components tab, search for and select the Spectre-mitigate libs (Latest) for all architectures you wish to build for, plus Windows Driver Kit.
Building and signing the setup MSI is CI-only (see Setup/README.md); no local WiX Toolset install is needed.
You can build individual projects of the solution within Visual Studio.
The project uses the following branch strategy:
master – stable code base, in sync with tagged public releasesdevel – work‑in‑progress changes, mostly larger changes spanning a couple of PRsTagged CI builds are mirrored to the buildbot web server; use at your own risk, no support provided.
Everything you need to know is documented on the project page. Please read it carefully before considering filing an issue.
Not being able to connect your controller is not a bug report. Read the FAQ and accept what is written there.
The diagram below visualizes the relationships between the drivers and devices involved (host hardware at the bottom, exposed child devices towards the top):
+----------------------+ +----------------------+
| Navigation PDO +<----------+ +--------->+ Motion PDO |
+----------------------+ | | +----------------------+
| |
| |
| |
| |
| |
+----------------------+ +-----+---------+------+ +----------------------+
| SIXAXIS PDO +<---------+ Profile & Bus Driver +-------->+ Wireless PDO |
+----------------------+ | (BthPS3.sys) | +----------------------+
+----------+-----------+
^
|
v
+----------+-----------+
| Bluetooth Enumerator |
| (bthenum.sys) |
+----------+-----------+
^
|
v
+----------+-----------+
| bthport.sys |
+----------+-----------+
^
|
+-----------------------+-----------------------+
| |
v v
+----------+-----------+ +----------+-----------+
| bthusb.sys | | BthMini.sys |
+----------+-----------+ +----------+-----------+
^ ^
| |
v v
+----------+-----------+ +----------+-----------+
| BthPS3PSM.sys filter | | BthPS3PSM.sys filter |
+----------+-----------+ +----------+-----------+
^ ^
| |
v v
+----------+-----------+ +----------+-----------+
| USB Stack | | Vendor transport PDO |
+----------+-----------+ | (e.g. iBtPciBus, |
^ | UART, ...) |
| +----------------------+
v
+----------+-----------+
| USB Bluetooth dongle |
+----------------------+
This application benefits from these awesome projects ❤ (in no particular order):
C
55.3%
PowerShell
18.7%
C#
17.3%
C++
4.6%
Roff
3.7%