User-mode filter driver for Sony DualShock 3 controllers. This project builds the kernel component of DsHidMini that presents the controller as configurable HID devices (GamePad, Joystick, Sixaxis, DS4, XInput) over USB and Bluetooth.
- Framework: UMDF (User-Mode Driver Framework), sitting below
mshidumdf.sys - Core HID: DMF Virtual Hid Mini for virtual HID report handling
- Transports: USB (
DsUsb) and Bluetooth via BthPS3 (DsBth) - Configuration: Primarily via a JSON config file and IPC (memory-mapped file) used by the configuration app
The driver is a filter below mshidumdf.sys, acting as a function driver for USB and Bluetooth via the User-mode Driver Framework Reflector. It translates HID I/O to USB/Bluetooth I/O and presents the device as user-configurable HID modes. On Bluetooth with BthPS3 it replaces the need for Shibari. Core HID handling is provided by DMF Virtual Hid Mini.
Designed for Windows 10 version 1809 or newer (x64, ARM64). Dependencies are not available on Windows 7/8/8.1, so those are unsupported.
| Area | Description |
|---|---|
Driver.c / Device.c |
WDF driver/device lifecycle, device add, cleanup |
DsUsb.c, DsBth.c |
USB and Bluetooth transport; Bth uses BthPS3 stack |
Ds3.c, DsHid.c |
DualShock 3 protocol and HID translation |
Configuration.c |
Loading/saving device configuration (dead zones, LED, mode, etc.) |
HID/ |
HID report descriptors (GamePad, Joystick, Sixaxis, DS4, XInput) |
HID.Reports.c, InputReport.c, OutputReport.c |
Report assembly and handling |
HID.FeatureReport.c |
Feature report handling (e.g. configuration) |
PID/ |
Force Feedback (rumble) report definitions and types |
IPC.c, IPC.Device.c |
IPC for configuration app (shared memory, events) |
JSON/ |
cJSON for config parsing |
Power.c |
Power state (D0/D3) and idle disconnect (Bluetooth) |
- Visual Studio 2022
- Windows 11 22H2 SDK
- Windows 11 22H2 WDK
- Driver Module Framework (DMF) v1.1.83 or newer, cloned as a sibling of the DsHidMini repo and built (e.g. build
DmfUfor Release/Debug, x64 and Win32 as needed)
Open the solution (e.g. dshidmini.sln in the repo root) in Visual Studio and build the driver project, or use the repo’s build scripts. Supported platforms: x64, ARM64.
Pre-built binaries and installation steps are on the releases page and in the main README. Do not install a self-built driver unless you are testing or developing; use signed builds from the project.
- Main README — project summary, features, build from root
- Project docs — user and installation guides