Add DualSense Bluetooth audio and haptics streaming - #18
Conversation
|
Marking this ready for review — and since it is a sizeable PR for a small fork, a short note on what I am actually asking for. What it is: opt-in Bluetooth audio and haptics for first-party DualSense controllers — audio-derived haptics, rumble-to-haptics, and listening audio to the controller speaker/headphone jack. It uses the Bluetooth HID connection that DS4Windows already owns, via the controller's Why I think it is safe to consider:
Validation on my end: clean One CLI gotcha if you try to run the tests yourself: Happy to adjust:
Explicitly not part of this PR: the experimental Native Mode work in #19 (virtual USB device, usbip-win2, elevated helper). That is a separate draft/RFC and deliberately depends on nothing here. #19 should not block this one, and I am not asking you to review it on the same timeline. If you would rather not take a feature of this size at all, that is a completely fair answer — I would just appreciate knowing early. |
Summary
This adds opt-in Bluetooth audio and haptics streaming for first-party DualSense controllers.
From Device Options, users can now:
The feature is disabled by default. Listening audio defaults to 50% volume.
Implementation
The streamer uses the existing Bluetooth HID connection and sends the controller's 0x36 audio container with:
The existing DualSense output path continues to handle input, LEDs, and adaptive-trigger state. While advanced haptics are active, legacy rumble flags and stale motor bytes are suppressed because the controller cannot use both firmware modes simultaneously. Modes containing "Rumble To Haptics" preserve game rumble by synthesizing it into the haptic stream.
The capture path includes clock-drift correction, adaptive prebuffering, skipped late deadlines instead of catch-up bursts, decaying underrun fillers, resume fade-in, and an idle silence gate.
Settings are persisted per controller and the new UI strings are localized through the existing resource system.
Safe behavior
Validation
main:AppSettingsTests.CheckSettingsSaveProfileMigrationTests.CheckJaysProfileReadProfileTests.CheckWriteProfileDependencies and attribution
This adds:
THIRD-PARTY-NOTICES.txtrecords the applicable licenses and acknowledgments for Concentus, NAudio/Cockos WDL, DS5Dongle AutoHaptics, and the SAxense protocol research. The notice is copied into build and publish output.Scope
This PR contains only the standard DS4Windows Bluetooth streaming path. It does not include Native Mode, virtual USB devices, usbip-win2, kernel drivers, elevated helpers, or USB capture tooling.
Current limitations
Additional protocol and implementation details are documented in
doc/dev/dualsense_bluetooth_audio_haptics.md.