Skip to content

azaz4z/cpp-dualsense-driver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cpp-dualsense-driver

⚠️ This project is experimental and may not work on all systems, Bluetooth adapters, or DualSense firmware versions.

A C++ | C++/CLI Bluetooth-focused DualSense driver and control panel.

This project communicates directly with a DualSense controller over Bluetooth, reads input reports, sends output reports, controls LEDs, player indicators, mute light, audio/haptics reports, and can emulate an Xbox 360 controller through ViGEmBus.

Some features are already present in the codebase, but they are not fully implemented yet. Coming soon!

Features

Feature Status Notes
Lightbar RGB ✔️ Full control
Player Indicator LEDs ✔️ Full control
Mute Light ✔️ On / Off / Breathing
Adaptive Triggers ✔️ Various modes
Haptics / Speaker Audio ⚠️ Experimental Opus audio support
Touchpad Input ✖️ Coming soon!
Gyro / Accelerometer ✖️ Coming soon!
Battery Status ✖️ Coming soon!
USB Support ✖️ Not implemented
Xbox 360 Emulation ✔️ Through ViGEmBus
Windows Forms Control Panel ✔️ C++/CLI UI

Requirements

  • Windows
  • Visual Studio with C++/CLI support
  • Windows SDK
  • ViGEmBus driver installed
  • ViGEmClient library
  • Opus library
  • A DualSense controller connected through Bluetooth

How it works

The program connects to a DualSense controller over Bluetooth and exchanges HID reports with it.

Input reports are used to read controller state:

  • Buttons
  • D-Pad
  • Sticks
  • Triggers
  • Touchpad
  • Gyro / accelerometer
  • Battery status

Output reports are used to control the controller:

  • RGB lightbar
  • Player indicator LEDs
  • Mute light
  • Trigger effects
  • Audio / haptics data

Credits

https://github.com/nefarius/ViGEmBus https://controllers.fandom.com/wiki/Sony_DualSense/Data_Structures https://github.com/awalol/DS5Dongle