Convert Figma logo to code with AI

nefarius logoDsHidMini

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

1,770
103
1,770
25

Top Related Projects

Windows kernel-mode driver emulating well-known USB game controllers.

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

1,504

Gaming Input Peripherals Device Firewall for Windows.

Windows Driver and XInput Wrapper for Sony DualShock 3/4 Controllers

Quick Overview

DsHidMini is an open-source Windows driver for DualShock 3 and DualShock 4 controllers. It aims to provide a seamless experience for using these PlayStation controllers on Windows systems, offering improved compatibility and features compared to the default Windows drivers.

Pros

  • Improved compatibility with a wide range of games and applications
  • Enhanced customization options for button mapping and controller behavior
  • Lower input latency compared to default Windows drivers
  • Active development and community support

Cons

  • Requires manual installation and setup, which may be challenging for less tech-savvy users
  • Potential conflicts with other controller drivers or software
  • Limited to DualShock 3 and DualShock 4 controllers, not supporting newer PlayStation controllers

Getting Started

  1. Download the latest release from the GitHub releases page.
  2. Extract the downloaded ZIP file.
  3. Run the DsHidMini.inf file to install the driver.
  4. Connect your DualShock controller via USB or Bluetooth.
  5. Use the DsHidMini Control Center application to configure and customize your controller settings.

For detailed installation and troubleshooting instructions, refer to the project's wiki.

Competitor Comparisons

Windows kernel-mode driver emulating well-known USB game controllers.

Pros of ViGEmBus

  • Broader compatibility with various virtual game controllers
  • More extensive documentation and community support
  • Actively maintained with frequent updates

Cons of ViGEmBus

  • More complex setup and configuration
  • Larger codebase, potentially harder to troubleshoot
  • May require additional drivers or software for full functionality

Code Comparison

ViGEmBus (C++):

NTSTATUS
Bus_EvtDeviceAdd(
    _In_ WDFDRIVER Driver,
    _Inout_ PWDFDEVICE_INIT DeviceInit
)
{
    NTSTATUS status;
    WDFDEVICE device;
    PDEVICE_CONTEXT deviceContext;

DsHidMini (C):

NTSTATUS
DsHidMini_EvtDeviceAdd(
    _In_ WDFDRIVER Driver,
    _Inout_ PWDFDEVICE_INIT DeviceInit
)
{
    NTSTATUS status;
    WDF_OBJECT_ATTRIBUTES attributes;
    WDFDEVICE device;

Both projects aim to enhance game controller support on Windows, but ViGEmBus focuses on creating virtual game controllers, while DsHidMini specifically targets DualShock controllers. ViGEmBus offers more flexibility and broader compatibility, but may be more complex to set up. DsHidMini is more specialized and potentially easier to use for its specific purpose. The code structures are similar, reflecting their shared goal of device management on Windows.

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

Pros of DsHidMini

  • Provides enhanced functionality for DualShock controllers on Windows
  • Supports both DualShock 3 and DualShock 4 controllers
  • Offers customizable button mapping and sensitivity settings

Cons of DsHidMini

  • May require additional setup and configuration
  • Potential compatibility issues with some games or applications
  • Limited support for newer PlayStation controller models

Code Comparison

Both repositories contain the same codebase, as they are the same project. Here's a sample of the code structure:

// DsHidMini.c
NTSTATUS
DriverEntry(
    _In_ PDRIVER_OBJECT  DriverObject,
    _In_ PUNICODE_STRING RegistryPath
)
{
    // Driver initialization code
}

The code is identical in both repositories, focusing on driver implementation for DualShock controllers on Windows systems. The project aims to provide a lightweight and efficient driver solution for PlayStation controllers, enhancing their functionality and compatibility with Windows PCs.

1,504

Gaming Input Peripherals Device Firewall for Windows.

Pros of HidHide

  • More versatile, can hide any HID-compliant device
  • Simpler to use for general device hiding purposes
  • Actively maintained with regular updates

Cons of HidHide

  • Less specialized for DualShock controllers
  • May require more manual configuration for specific use cases
  • Doesn't provide advanced features for DualShock emulation

Code Comparison

HidHide:

NTSTATUS HidHide_CreateDevice(_Inout_ PWDFDEVICE_INIT DeviceInit)
{
    WDF_OBJECT_ATTRIBUTES deviceAttributes;
    WDFDEVICE device;
    NTSTATUS status;

DsHidMini:

NTSTATUS
DsHidMini_CreateDevice(
    _Inout_ PWDFDEVICE_INIT DeviceInit
)
{
    WDF_OBJECT_ATTRIBUTES   deviceAttributes;

Summary

HidHide is a more general-purpose tool for hiding HID devices, while DsHidMini is specifically designed for DualShock controllers. HidHide offers broader compatibility and easier use for general device hiding, but DsHidMini provides more specialized features for DualShock emulation. The code structures are similar, reflecting their shared focus on device management, but DsHidMini's implementation is tailored to DualShock specifics.

Windows Driver and XInput Wrapper for Sony DualShock 3/4 Controllers

Pros of ScpToolkit

  • Supports a wider range of PlayStation controllers (PS3, PS4)
  • Includes a graphical user interface for easier configuration
  • More established project with a larger user base

Cons of ScpToolkit

  • No longer actively maintained or updated
  • May have compatibility issues with newer Windows versions
  • Requires additional drivers and services, potentially impacting system performance

Code Comparison

ScpToolkit (C#):

public static Boolean IsValidSerial(String Serial)
{
    return !String.IsNullOrEmpty(Serial) && Serial.Length == 12 && Serial.All(Char.IsLetterOrDigit);
}

DsHidMini (C):

NTSTATUS
DsHidMini_EvtDevicePrepareHardware(
    _In_ WDFDEVICE Device,
    _In_ WDFCMRESLIST ResourceList,
    _In_ WDFCMRESLIST ResourceListTranslated
)
{
    // Device initialization code
}

DsHidMini is a more modern, lightweight alternative to ScpToolkit, focusing specifically on DualShock 3 controllers. It uses a different approach, implementing a virtual HID device instead of emulating an Xbox 360 controller. This results in better compatibility with modern Windows systems and improved performance. However, DsHidMini has a steeper learning curve and lacks a graphical interface, which may be challenging for less technical users.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

[!WARNING] No other official website exists for this project besides this GitHub repository (github.com/nefarius/DsHidMini) 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.


DsHidMini logoDsHidMini

Build status GitHub All Releases GitHub issues Discord Website

Virtual HID Mini user-mode driver for Sony DualShock 3 controllers on Windows 10/11.

Version 3 (Stable)

Version 3 is the current stable release. Get the latest build from releases. Highlights: new installer and configuration app, ARM64 and Windows 11 support, LED/dead-zone/rumble customization, Xbox One emulation, and more. Support and updates on Discord or Mastodon.

Repository activity

Repository activity

Summary

DsHidMini is a self-contained user-mode driver for Windows 10/11 that presents Sony DualShock 3 controllers as configurable, standard-compliant HID devices. Games and apps can use DirectInput, Raw Input, the HID API, or XInput (via the optional XInput Bridge). The driver supports USB and Bluetooth (with BthPS3); a configuration app lets you tune modes and behavior. Full documentation: docs.nefarius.at/projects/DsHidMini.

Features

  • Bluetooth with BthPS3 (v2.0.144+); auto-pairing and idle disconnect (5 min); quick disconnect: L1 + R1 + PS for 1+ second
  • HID modes: single Gamepad (including pressure-sensitive buttons), split/multi device, Sony sixaxis emulation, DualShock 4 (for DS4Windows), Xbox / XInput for modern games
  • Rumble exposed as Force Feedback
  • LED indicates battery (wired: charging 1–4; wireless: 4 = full, 1 = low)
  • Compatibility: PCSX2, RPCS3, DS4Windows (v2.2.10+), RetroArch, x360ce, Dolphin, DuckStation; see issue #40 for XInput/DS4 notes

What's missing

See the issue tracker for known bugs and in-progress work. Not currently supported (contributions welcome where noted):

  • Motion (SIXAXIS) — gyro/accelerometer (#217)
  • Navigation Controller — mostly done (#48)
  • Motion Controller — not in scope

Repository layout

PathDescription
driver/UMDF driver: HID modes, USB/Bth, config, build (WDK, DMF)
XInputBridge/XInput proxy DLL (XInput1_3.dll), extended API for DS3 pressure data
setup/MSI installer (WixSharp), release packaging
ControlApp/Configuration app (WPF)
docs/R&D notes; official docs at docs.nefarius.at

For how the driver works (UMDF, DMF, config) and build prerequisites (Visual Studio, WDK, DMF), see driver/README.md. For the XInput Bridge build, see XInputBridge/README.md.

Building

From the repo root, run build.cmd or open dshidmini.sln in Visual Studio. Driver and bridge build steps are in driver/README.md and XInputBridge/README.md.

Licensing

This solution contains BSD-3-Clause and other licensed components; see the individual LICENSE files. Community project, not affiliated with Sony Interactive Entertainment Inc. "PlayStation", "PSP", "PS2", "PS one", "DUALSHOCK", and "SIXAXIS" are registered trademarks of Sony Interactive Entertainment Inc.

Documentation

Project page — user guides, HID modes, installation.

Installation

Pre-built binaries and instructions: releases. Installation steps: How to Install.

Support

Community support guidelines.

Sponsors

JetBrains

Sources & credits