{"id":16783930,"url":"https://github.com/nefarius/bthps3","last_synced_at":"2025-05-15T12:04:40.831Z","repository":{"id":39590519,"uuid":"209748405","full_name":"nefarius/BthPS3","owner":"nefarius","description":"Windows kernel-mode Bluetooth Profile \u0026 Filter Drivers for PS3 peripherals","archived":false,"fork":false,"pushed_at":"2025-04-30T20:49:22.000Z","size":20167,"stargazers_count":735,"open_issues_count":3,"forks_count":33,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-04-30T21:39:01.525Z","etag":null,"topics":["bluetooth","driver","dualshock3","playstation","windows"],"latest_commit_sha":null,"homepage":"https://docs.nefarius.at/projects/BthPS3/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nefarius.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"nefarius","patreon":"nefarius","liberapay":"Nefarius","custom":["https://www.buymeacoffee.com/Nefarius","https://paypal.me/NefariusMaximus","https://docs.nefarius.at/Donations/"]}},"created_at":"2019-09-20T08:58:33.000Z","updated_at":"2025-04-30T20:49:27.000Z","dependencies_parsed_at":"2024-06-26T16:10:46.505Z","dependency_job_id":"d5a37d2d-0d6d-43e1-a7bb-0aecbeaa9942","html_url":"https://github.com/nefarius/BthPS3","commit_stats":{"total_commits":960,"total_committers":3,"mean_commits":320.0,"dds":"0.18437499999999996","last_synced_commit":"303354d7d38f6603b570d7b0af57cb2f9c2b049f"},"previous_names":["nefarius/bthps3"],"tags_count":81,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nefarius%2FBthPS3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nefarius%2FBthPS3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nefarius%2FBthPS3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nefarius%2FBthPS3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nefarius","download_url":"https://codeload.github.com/nefarius/BthPS3/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254337612,"owners_count":22054253,"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","driver","dualshock3","playstation","windows"],"created_at":"2024-10-13T07:52:45.685Z","updated_at":"2025-05-15T12:04:35.795Z","avatar_url":"https://github.com/nefarius.png","language":"HTML","readme":"# \u003cimg src=\"icon.png\" align=\"left\" /\u003eBthPS3\n\n[![Build status](https://ci.appveyor.com/api/projects/status/lna6ewnbck5diu6l/branch/master?svg=true)](https://ci.appveyor.com/project/nefarius/bthps3/branch/master)\n[![GitHub All Releases](https://img.shields.io/github/downloads/ViGEm/BthPS3/total)](https://somsubhra.github.io/github-release-stats/?username=ViGEm\u0026repository=BthPS3)\n[![Discord](https://img.shields.io/discord/346756263763378176.svg)](https://discord.nefarius.at)\n[![GitHub followers](https://img.shields.io/github/followers/nefarius.svg?style=social\u0026label=Follow)](https://github.com/nefarius)\n[![Mastodon Follow](https://img.shields.io/mastodon/follow/109321120351128938?domain=https%3A%2F%2Ffosstodon.org%2F\u0026style=social)](https://fosstodon.org/@Nefarius)\n\nWindows kernel-mode Bluetooth Profile \u0026 Filter Drivers for PS3 peripherals.\n\n## Pronunciation\n\n`/biː θriː/`\n\n## About\n\n**TL;DR:** these drivers allow popular PlayStation(R) 3 gaming peripherals (SIXAXIS/DualShock 3, PS Move Navigation \u0026 Motion Controllers) to connect to Windows via Bluetooth without losing any standard functionality. 😊\n\nThis set of Windows kernel-mode drivers enhances the standard (a.k.a. vanilla) Bluetooth stack (Microsoft/Broadcom/Toshiba/Intel/...) with an additional L2CAP server service (profile driver) and a USB lower filter driver [gracefully working around the reserved PSMs issue](https://nadavrub.wordpress.com/2015/07/17/simulate-hid-device-with-windows-desktop/) causing the PS3 peripherals connections to get denied on the default Windows stack. The profile driver attempts to distinguish the 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 like a HID-minidriver) and \"raw\" mode (powering the PDO up without a function driver and exposing it to user-land) for maximum flexibility and future-proofing. The PSM filter only attaches to Bluetooth class devices and unloads itself if the underlying enumerator isn't USB.\n\nThe solution consists of the following individual projects:\n\n- [`BthPS3`](/BthPS3) - Multi-purpose kernel-mode driver. Function driver for service PDO exposed by `BTHENUM` (Microsoft), Bluetooth profile (L2CAP server service) and bus driver for PS3 wireless peripherals.\n- [`BthPS3PSM`](/BthPS3PSM) - Lower filter driver for `BTHUSB`, patching L2CAP packets. Reroutes L2CAP traffic to profile driver.\n- [`BthPS3CfgUI`](/BthPS3CfgUI) - User-land GUI utility to safely edit driver settings.\n- [`BthPS3Util`](/BthPS3Util) - User-land CLI utility to modify filter driver settings.\n- [`BthPS3Installer`](/BthPS3Installer) - [WiXSharp](https://github.com/oleg-shilo/wixsharp)-based setup for driver installation and removal.\n\n## Licensing\n\nThis solution contains **BSD-3-Clause** and **MIT** licensed components:\n\n- Drivers (BthPS3.sys, BthPS3PSM.sys) - **BSD-3-Clause**\n- [Installer](/BthPS3Installer)/[Setup](/Setup) (WiXSharp project and assets) - **BSD-3-Clause**\n- User-land utilities (BthPS3CfgUI.exe) - **MIT**\n\nFor details, please consult the individual `LICENSE` files.\n\nThis is a community project and 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.\n\n## Environment\n\nBthPS3 components can run on **Windows 10 version 1507 or newer** (x64, ARM64).\n\n\u003cdetails\u003e\n\n\u003csummary\u003eSupported Bluetooth host devices\u003c/summary\u003e\n\n## Supported Bluetooth host devices\n\nThe BthPS3 profile driver and supported devices have been tested successfully with host devices following [Link Manager Protocol (LMP)](https://www.bluetooth.com/specifications/assigned-numbers/link-manager/) core specification\nversion **3** (which equals **Bluetooth 2.0 + EDR**) and higher. Anything lower than that is not advised and not supported. Check your particular chip firmware version in Device Manager prior to installing the drivers:\n\n![MB0xeRakoP.png](docs/MB0xeRakoP.png)\n\nWhen loaded onto an unsupported host radio, device boot will fail with `STATUS_DEVICE_POWER_FAILURE`:\n\n![P37N2cgWdG.png](docs/P37N2cgWdG.png)\n\nFor a list of tested devices [consult the extended documentation](https://docs.nefarius.at/projects/BthPS3/Compatible-Bluetooth-Devices/).\n\n### Link Manager Versions\n\n| LMP | Bluetooth Version   |\n| --- | ------------------- |\n| 0   | Bluetooth 1.0b      |\n| 1   | Bluetooth 1.1       |\n| 2   | Bluetooth 1.2       |\n| 3   | Bluetooth 2.0 + EDR |\n| 4   | Bluetooth 2.1 + EDR |\n| 5   | Bluetooth 3.0 + HS  |\n| 6   | Bluetooth 4.0       |\n| 7   | Bluetooth 4.1       |\n| 8   | Bluetooth 4.2       |\n| 9   | Bluetooth 5         |\n| 10  | Bluetooth 5.1       |\n| 11  | Bluetooth 5.2       |\n\n\u003c/details\u003e\n\n## Installation\n\nPre-built binaries and instructions are provided by `Nefarius Software Solutions e.U.` and [available via setup](https://github.com/nefarius/BthPS3/releases/latest). Official support covers **Windows 10/11 x64/ARM64** only, filing issues about any other version or architecture will be discarded.\n\nCheck out the companion solution [DsHidMini](https://github.com/nefarius/DsHidMini) for using the controller in games!\n\n## How to build\n\nKnowledge on how to build and (test-)sign Windows drivers is required for creating usable builds. This is outside of the scope of the project documentation.\n\n\u003cdetails\u003e\n\n\u003csummary\u003eBuild instructions and details\u003c/summary\u003e\n\n### Prerequisites\n\n- [Step 1: Install Visual Studio 2022](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk#download-icon-step-1-install-visual-studio-2022)\n  - On the `Workloads` tab under `Desktop \u0026 Mobile` select *at least* `.NET desktop development` and `Desktop development with C++`.  \n    ![workloads.png](assets/workloads.png)\n  - On the `Individual components` tab search for and select the `Spectre-mitigate libs (Latest)` for all architectures you wish to build for.  \n    ![components.png](assets/components.png)\n- [Step 2: Install Windows 11, version 22H2 SDK](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk#download-icon-step-2-install-windows-11-version-22h2-sdk)\n- [Step 3: Install Windows 11, version 22H2 WDK](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk#download-icon-step-3-install-windows-11-version-22h2-wdk)\n- [Step 4: Install the WiX Toolset **v3.14.0.6526**](https://wixtoolset.org/releases/v3-14-0-6526/) (or newer)\n- [Step 5: Setup and build Microsoft DMF](https://github.com/Microsoft/DMF/blob/master/Dmf/Documentation/Driver%20Module%20Framework.md#simplifying-compilation-and-linking-with-dmf)\n- [Step 6: Setup and build Domito](https://git.nefarius.at/nefarius/Domito#how-to-use)\n\nYou can build individual projects of the solution within Visual Studio.\n\n### Branches\n\nThe project uses the following branch strategies:\n\n- `master` - stable code base, in sync with tagged public releases\n- `devel` - work-in-progress changes, mostly bigger changes spanning a couple PRs\n\n### Build artifacts\n\nTagged CI builds get mirrored [to the buildbot web server](https://buildbot.nefarius.at/builds/BthPS3/), use at your own risk, no support provided whatsoever!\n\n\u003c/details\u003e\n\n## Support \u0026 Documentation\n\nEverything you need to know is documented [on the project page](https://docs.nefarius.at/projects/BthPS3/), read carefully before considering filing an issue.\n\n\u003cdetails\u003e\n\n\u003csummary\u003eArchitecture overview\u003c/summary\u003e\n\n## Device tree\n\nBelow representation attempts to visualize the relationships between the drivers and devices involved (near host hardware on the bottom, towards exposed child devices on top):\n\n```text\n     +----------------------+                                +----------------------+\n     |    Navigation PDO    +\u003c----------+         +---------\u003e+      Motion PDO      |\n     +----------------------+           |         |          +----------------------+\n                                        |         |\n                                        |         |\n                                        |         |\n                                        |         |\n                                        |         |\n+----------------------+          +-----+---------+------+         +----------------------+\n|      SIXAXIS PDO     +\u003c---------+ Profile \u0026 Bus Driver +--------\u003e+     Wireless PDO     |\n+----------------------+          |     (BthPS3.sys)     |         +----------------------+\n                                  +----------+-----------+\n                                             ^\n                                             |\n                                             v\n                                  +----------+-----------+\n                                  | Bluetooth Enumerator |\n                                  |    (bthenum.sys)     |\n                                  +----------+-----------+\n                                             ^\n                                             |\n                                             v\n                                  +----------+-----------+\n                                  |     bthport.sys      |\n                                  +----------+-----------+\n                                             ^\n                                             |\n                                             v\n                                  +----------+-----------+\n                                  |      bthusb.sys      |\n                                  +----------+-----------+\n                                             ^\n                                             |\n                                             v\n                                  +----------+-----------+\n                                  | BthPS3PSM.sys filter |\n                                  +----------+-----------+\n                                             ^\n                                             |\n                                             v\n                                  +----------+-----------+\n                                  |       USB Stack      |\n                                  +----------+-----------+\n                                             ^\n                                             |\n                                             v\n                                  +----------+-----------+\n                                  | USB Bluetooth dongle |\n                                  +----------------------+\n\n```\n\n\u003c/details\u003e\n\n## Sources \u0026 3rd party credits\n\nThis application benefits from these awesome projects ❤ (appearance in no special order):\n\n- [ViGEm Forums - Bluetooth Filter Driver for DS3-compatibility - research notes](./Research)\n- [Arduino - felis/USB_Host_Shield_2.0 - PS3 Information](https://github.com/felis/USB_Host_Shield_2.0/wiki/PS3-Information#Bluetooth)\n- [Emulate HID Device with Windows Desktop](https://nadavrub.wordpress.com/2015/07/17/simulate-hid-device-with-windows-desktop/)\n- [microsoft/Windows-driver-samples - Bluetooth Echo L2CAP Profile Driver](https://github.com/Microsoft/Windows-driver-samples/tree/master/bluetooth/bthecho)\n- [Microsoft Bluetooth DDI - Reserved PSMs](https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/bthddi/ns-bthddi-_brb_psm#members)\n- [Eleccelerator Wiki - DualShock 3](http://eleccelerator.com/wiki/index.php?title=DualShock_3)\n- [Link Manager Protocol (LMP)](https://www.bluetooth.com/specifications/assigned-numbers/link-manager/)\n- [Nefarius' Domito Library](https://git.nefarius.at/nefarius/Domito)\n- [NUKE Build Automation](https://nuke.build/)\n- [Nefarius.Tools.WDKWhere](https://github.com/nefarius/wdkwhere)\n- [Nefarius.Utilities.Bluetooth](https://github.com/nefarius/Nefarius.Utilities.Bluetooth)\n- [WixSharp (WixSharp) - managed interface for WiX](https://github.com/oleg-shilo/wixsharp)\n","funding_links":["https://github.com/sponsors/nefarius","https://patreon.com/nefarius","https://liberapay.com/Nefarius","https://www.buymeacoffee.com/Nefarius","https://paypal.me/NefariusMaximus","https://docs.nefarius.at/Donations/"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnefarius%2Fbthps3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnefarius%2Fbthps3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnefarius%2Fbthps3/lists"}