• Stars
    star
    1,174
  • Rank 39,823 (Top 0.8 %)
  • Language
    C
  • License
    BSD 3-Clause "New...
  • Created over 4 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Virtual HID Mini-user-mode-driver for Sony DualShock 3 Controllers

DsHidMini

Virtual HID Mini-user-mode driver for Sony DualShock 3 Controllers

Build status GitHub All Releases GitHub issues Discord Website

🚨 What to expect with Version 3 🚨

Next major version is in progress! Here's an overview of what you'll get:

  • New driver installer
  • New configuration app
  • ARM64 support
  • Full Windows 11 compatibility
  • Complete LED customization
  • Customize dead-zone thresholds
  • Customize HAT/POV behaviour
  • Adjust rumble strengths
  • Switch DPad to individual buttons
  • Customize the Quick-Disconnect button combination
  • Configure flipping/inverting axes
  • ...and maybe more?

Stay tuned!

Summary

DsHidMini is a self-contained, low footprint and feature-rich user-mode driver for Microsoft Windows 10/11. It presents the controller as a configurable variety of fully standard-compliant HID devices to the system and all games built on common APIs like DirectInput, Raw Input and the low-level HID API. XInput-emulation further increases the support in modern games built with only Xbox controllers in mind. The driver supports both wired connections by handling USB communication and wireless connections by building upon the BthPS3 driver suite. An optional .NET configuration tool is provided to alter driver behavior to fine-tune it to specific games or other use-cases.

Features

  • Bluetooth support if used in conjunction with BthPS3 (requires at least v2.0.144 or newer)
  • Automatically pairs the controller to Windows Bluetooth (if Bluetooth host radio is present)
  • Multiple configurable HID Report Descriptors for wide range of compatibility
    • Single Gamepad device exposing all controls including pressure sensitive buttons
    • Split/multi device emulation to overcome DirectInput axis limits
    • Sony sixaxis.sys emulation (both wired and wireless)
    • DualShock 4 emulation for compatibility with DS4Windows
    • Xbox Controller emulation (XInput) for best compatibility with most modern games
  • Quick disconnect (on Bluetooth) by pressing L1 + R1 + PS together for over one second
  • Automatic disconnect (on Bluetooth) after idle timeout (5 minutes) expired to conserve battery
  • Custom LED states indicate battery charge level
    • Wired: Charging will cycle through 1 to 4, if fully charged will stay on 4
    • Wireless: 4 = Full, 3 = High, 2 = Medium/low, 1 = Low/dying
  • Rumble exposure via Force Feedback
    • The rumble motors are exposed as Force Feedback effects, allowing for great game compatibility
  • Supports the PCSX2 PlayStation 2 Emulator
    • Controller gets picked up by LilyPad plugin with all device features
  • Supports the RPCS3 PlayStation 3 Emulator
    • Controller gets picked up by DualShock 3 handler with all device features
  • Supports DS4Windows (requires at least Version 2.2.10 or newer)
    • Controller gets presented as a DualShock 4 compatible variant
    • Read #40 for details about XInput and DS4 emulation
  • Supports RetroArch emulation platform
  • Supports x360ce for XInput emulation
  • Supports Dolphin Emulator
  • Supports DuckStation - PlayStation 1, aka. PSX Emulator

What's missing

Check the ⚑ issue tracker ⚑ for work-in-progress or known bugs!

The following features are not available (and most probably won't in the near future until more contributors join the party):

  • Motion controls a.k.a. SIXAXIS (Gyroscope, Accelerometer)
    • Contributions welcome!
    • See #217
  • Navigation Controller
    • Majority is done
  • Motion Controller
    • Not considered in design at all

For in-progress features and bug-fixes please consult the issue tracker.

How it works

DsHidMini is a filter driver sitting below mshidumdf.sys and acts as a function driver for USB and Bluetooth through the User-mode Driver Framework Reflector, handling translation of incoming HID I/O traffic to underlying USB/Bluetooth I/O and vice versa. On USB it replaces the Windows stock drivers for the Sony hardware and presents the device as a variety of user-configurable HID devices (see documentation). On Bluetooth in conjunction with BthPS3 it replaces the need for Shibari as the driver directly communicates over wireless channels and takes care of the necessary translation logic. As a user-mode driver it has limited access to the registry, therefore device-specific settings are stored and retrieved using the Unified Device Property Model API. Most of the core HID heavy lifting is done by the amazing DMF_VirtualHidMini module which greatly reduced the need for boilerplate code and sped up development tremendously.

Licensing

This solution contains BSD-3-Clause and other licensed components. For details, please consult the individual LICENSE files.

This 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.

Environment

DsHidMini components (drivers, utilities) are designed for Windows 10, version 1809 or newer (x86, x64).

The dependencies used in DsHidMini don't exist in Windows 7/8/8.1 so they can't be supported.

How to build

Prerequisites

You can build individual projects of the solution within Visual Studio.

Documentation

Take a look at the project page for more information.

Installation

Pre-built binaries and instructions are provided on the releases page.

Support

To get support please follow these guidlines.

Sponsors

JetBrains

Sources & 3rd party credits

The following awesome resources have made this project possible.

Related projects

Dependencies

Tools & references

More Repositories

1

ScpToolkit

Windows Driver and XInput Wrapper for Sony DualShock 3/4 Controllers
C#
3,025
star
2

ViGEmBus

Windows kernel-mode driver emulating well-known USB game controllers.
C++
2,582
star
3

HidHide

Gaming Input Peripherals Device Firewall for Windows.
C++
888
star
4

BthPS3

Windows kernel-mode Bluetooth Profile & Filter Drivers for PS3 peripherals
HTML
630
star
5

Injector

Command line utility to inject and eject DLLs
C++
375
star
6

Indicium-Supra

DirectX API-hooking framework
C++
300
star
7

FireShock

Windows USB Driver for Sony DualShock 3 Controllers
C
210
star
8

Legacinator

The one and only Legacinator
C#
173
star
9

HidGuardian

Windows kernel-mode driver for controlling access to various input devices.
C
171
star
10

Shibari

Gaming input peripherals prototyping platform for Windows
C#
139
star
11

ViGEmClient

ViGEm Client SDK for feeder development.
C
128
star
12

ViGEm.NET

.NET bindings for the ViGEmClient library.
C#
99
star
13

VDX

XInput/x360ce to ViGEm sample application
C++
88
star
14

ViGEm.github.io

Sources of ViGEm Website.
HTML
74
star
15

vicius

Nefarius' nŏvīcĭus universal software updater agent for Windows.
C++
49
star
16

nefcon

Windows device driver installation and management tool.
C++
45
star
17

ScpVBus

Scarlett.Crush Productions Virtual Bus Driver
C
40
star
18

AirBender

Windows Bluetooth Host Driver for Sony DualShock Controllers
C
39
star
19

socksifier

One DLL to redirect them all to a SOCKS5 server.
C
35
star
20

sm-ext-socket

This extension provides networking functionality for SourceMod scripts.
C++
33
star
21

XInputHooker

XInput reverse-engineering tools and documentation
C++
30
star
22

Nefarius.Utilities.DeviceManagement

Managed wrappers around SetupAPI, Cfgmgr32, NewDev and DrvStore native APIs on Windows.
C#
30
star
23

Identinator

Rewrites hardware identification properties of USB devices on Microsoft Windows
C#
28
star
24

docs.nefarius.at

Sources of Nefarius' Knowledge-Base Website
HTML
20
star
25

WpfRichText.Ex

Simple WYSIWYG HTML editor control for WPF
C#
19
star
26

Nefarius.DSharpPlus.Extensions.Hosting

Glues .NET Core Hosting and DSharpPlus together for use with DI.
C#
15
star
27

MACAddressChanger

Easily change your network adapters MAC address with this little tool.
C++
13
star
28

CntlmUI

Graphical User Interface and Startup-Agent for the Cntlm Authorization Proxy
C#
12
star
29

DLLSpy

DLL Hijacking Detection Tool
C++
11
star
30

Nefarius.Drivers.WinUSB

WinUSB .NET wrapper library
C#
11
star
31

rtmp-server

Self-hosted RTMP streaming server with web player
HTML
10
star
32

libsbc

Bluetooth low-complexity, subband codec (SBC) library
C
10
star
33

Nefarius.Drivers.HidHide

Managed API for configuring HidHide.
C#
10
star
34

Nefarius.Utilities.Bluetooth

Utility library for unconventional Bluetooth tasks on Windows.
C#
9
star
35

WorkshopMapLoader

Advanced Workshop Map Loader and Game Type Adjuster
SourcePawn
9
star
36

Nefarius.Utilities.WindowsVersion

Utility classes to get detailed Windows version and some extras like UEFI and BCD properties.
C#
8
star
37

udpflood

Simple network stress test tool which penetrates a target host with random UDP packages.
C
8
star
38

WinApiSniffer

Windows API sniffer and dumper utility for reverse engineering.
C
8
star
39

WinDbgSymbolsCachingProxy

WinDbg Symbols Caching Proxy.
C#
8
star
40

HideDS4

A small helper-library which prevents a process from accessing a connected DualShock 4 controller
C++
7
star
41

Nefarius.Peripherals.SerialPort

P/Invoke wrapper for Win32API serial port
C#
7
star
42

Nefarius.Utilities.HIDReportKit

Managed types and utility classes for HID report parsing and transforming.
C#
7
star
43

AnnoyingFlooder

Wanna make a little prank to your IT-Friends? Use this tool and fill his hard drive with hidden garbage files!
C#
6
star
44

WDF-Utils

Windows Device Driver Development Utilities Collection
C
6
star
45

WireShock

Windows Bluetooth Host Driver for Sony DualShock Controllers
C
6
star
46

TrueMount-2

Automounter for TrueCrypt.
C#
5
star
47

HidCerberus

Companion service to manage HidGuardian device blocking and process whitelisting.
C#
5
star
48

GotifySmtpForwarder

Forwards e-mails to a Gotify application.
C#
4
star
49

ViGEm.Setup

Resources for builing a setup to redistribute a device driver reliably.
C#
4
star
50

EPPT

A simple, self-contained Windows tool to display and toggle "Enhanced Pointer Precision" a.k.a. mouse acceleration.
C++
4
star
51

ViGEm.Management

Tools for distribution, installation and management of the ViGEm framework drivers.
C#
4
star
52

StreamsFinder

MicrosoftΒ΄s new technology file system has a pretty unknown feature called data streams. Find hidden ones easily with this tool!
C#
4
star
53

putty-tunnel-manager

Automatically exported from code.google.com/p/putty-tunnel-manager
C#
4
star
54

ViGEmClient.vcpkg

Vcpkg portfile for native ViGEm Client library
CMake
3
star
55

SourceSec

Proof-of-concept RSA SourceMod extension
C++
3
star
56

TrueMount-3

Automounter for TrueCrypt
C#
3
star
57

XInputPlayerToDevicePath

XInput User Index to Device Instance ID PoC
C++
3
star
58

Nefarius.Utilities.SessionNotification

Utility classes to get notified about session state changes on Windows.
C#
3
star
59

CitrixConfigurator

Edit the registry-stored configuration of the Citrix Online Plug-in with this small tool.
C#
3
star
60

garbage-and-scam-sites

My personal little rule set for uBlacklist blocking useless and scam trash sites 🚯
3
star
61

vpatch

Versioning helper command line utility
C#
3
star
62

AppVeyorArtifactsReceiver

Web service listening for deployment webhook calls from AppVeyor CI/CD.
C#
3
star
63

Nefarius.Utilities.Registry

Registry Export File (.reg) Parser
C#
3
star
64

Mana

A tiny work-in-progress Kibana replacement using Blazor.
C#
3
star
65

Nefarius.Utilities.GitHubUpdater

Utility classes to perform application update checks using GitHub repositories.
C#
3
star
66

LupuServ

E-Mail to SMS Gateway service for Lupusec XT1 alarm system
C#
2
star
67

IgorBot

Advanced Discord bot to automate new Member on-boarding.
C#
2
star
68

Libarius

Collection of utility classes for common .NET tasks
C#
2
star
69

ManagedDevcon

Managed wrapper around various SetupAPI functions.
C#
2
star
70

ds4sniffer

DLL performing API-hooking to find which process is talking to the DS4.
C++
2
star
71

AdvancedUpdaterGitHubProxy

Builds an Advanced Installer Updater Configuration File from GitHub Releases.
C#
2
star
72

POCO-Windows

NuGet build scripts for POCO C++ libraries
PowerShell
2
star
73

foxx-filestore

File Storage Foxx Microservice for ArangoDB
JavaScript
2
star
74

Nefarius.Standards.CAMT

Utility classes to help decoding "Bank-to-Customer Cash Management Swiss Payment Standards" a.k.a. CAMT XML files.
C#
2
star
75

CSGOLauncher

Small .NET GUI launcher for CS:GO Windows server
C#
2
star
76

Symphonia

Simple DLNA-compatible music player
C#
2
star
77

NuGetCachingProxy

A very simple caching proxy for NuGet packages
C#
2
star
78

Nefarius.Utilities.AspNetCore

My opinionated collection of utilities for ASP.NET Core applications.
C#
2
star
79

Nefarius.Utilities.DotNetInstaller

Utility classes to download and install modern .NET runtimes.
C#
1
star
80

docker-node-service-host

Provides a convenience Docker image to run Node services under Supervisord.
Dockerfile
1
star
81

Nefarius.Utilities.NtDll

Managed wrappers around NTDLL native APIs on Windows.
C#
1
star
82

metamodmmt

Proxy DLL for Metamod for Half-Life 1 enabling Windows high-resolution timers
C++
1
star
83

nefarius

My GitHub public profile!
1
star
84

SCD

To Secure, Contain, and Deny
C
1
star
85

SIF

Squid Image Fetcher
Python
1
star
86

Updater

Automatically updates SourceMod plugins and files
SourcePawn
1
star
87

ServerHibernateFix

A Sourcemod Plugin to work-around the workshop map server hibernate problem
SourcePawn
1
star
88

MightyDsHidMini

Crude quick 'n' dirty benchmark tool for DsHidMini
C#
1
star
89

ScpSamples

Sample Add-Ons for the ScpServer
C#
1
star
90

ViGEm.Jaeger

Benchmark tool for the client SDK using Jaeger Tracing
C++
1
star
91

Arduino_Uno_Audio_PWM_Modulator

Arduino
1
star
92

honestus

Versioning helper command line utility
C#
1
star
93

ReactiveProtobuf

Protobuf protocol implementation for ReactiveSockets
C#
1
star
94

Nefarius.Utilities.EnglishExceptions

Unlocalizes non-English exception messages in any .NET application.
C#
1
star
95

nefarius-vcpkg-registry

My vcpkg packages registry.
PowerShell
1
star
96

Nefarius.Utilities.WixSharp

C#
1
star
97

Nefarius.Steam.PartnerWebApi

Steamworks Web API wrapper for .NET using Refit.
C#
1
star
98

docker-mdwiki

Docker container for hosting and auto-updating an MDwiki instance.
HTML
1
star
99

CentralisedOutlookSignature

C#
1
star
100

Nefarius.HttpClient.LiteDbCache

Adds disk-based response caching to HttpClient named instances using LiteDB.
C#
1
star