Skip to content

SundayMoments/DS5_Bridge

Repository files navigation

DS5 Bridge

DS5 Bridge mark

Build firmware status License: AGPL-3.0-only Latest release
Platform: Windows companion app and Raspberry Pi Pico 2 W firmware

Support me on Ko-fi

DS5 Bridge 1.0 is live.
The first stable release includes the Windows companion app, Pico 2 W firmware, profiles, visual button remapping, microphone support, and headphone-jack audio.

DS5 Bridge lets you use a real Sony DualSense or DualSense Edge controller wirelessly on a Windows PC through a Raspberry Pi Pico 2 W. The controller pairs to the Pico over Bluetooth, and the Pico plugs into your PC over USB.

The companion app gives you a clean place to adjust audio, haptics, trigger strength, lighting, button remaps, shortcuts, and other controller behavior without reflashing the Pico.

Quick Start

  1. Download the firmware .uf2 and Windows companion installer from Releases.
  2. With the Pico 2 W unplugged, hold BOOTSEL, then connect it to your PC.
  3. Copy the .uf2 file onto the Pico drive that appears in Windows.
  4. Put the DualSense controller into Bluetooth pairing mode.
  5. After the Pico restarts from flashing, wait for the controller to pair.
  6. Install and open DS5 Bridge to check the connection and adjust your settings.

Once the controller connects to the Pico, Windows sees it as a normal DualSense-compatible USB controller.

Features

  • Use a DualSense or DualSense Edge wirelessly through a Pico 2 W.
  • Tune audio, haptics, adaptive triggers, and lighting from the Windows app.
  • Save controller setups as profiles.
  • Remap controller buttons visually.
  • See Bluetooth signal quality at a glance.
  • Use Host Encoding for smoother controller speaker and headphone-jack audio.

Companion App Tour

The companion app is where you check the bridge, adjust the controller, and save the setup you actually want to play with.

Overview

See the connection, battery, audio route, Bluetooth signal quality, active profile, and the settings most likely to matter during play.

Overview dashboard in the DS5 Bridge companion app

Haptics

Adjust HD haptics and classic rumble strength, then test the feel before opening a game.

Haptics and rumble controls in the DS5 Bridge companion app

Audio

Control the controller speaker, headphone-jack audio, microphone level, and Host Encoding.

Audio controls in the DS5 Bridge companion app

Triggers

Set adaptive trigger strength and try sample effects without leaving the app.

Adaptive trigger controls in the DS5 Bridge companion app

Lighting

Choose lightbar brightness and color, or let the app manage lighting behavior for you.

Lighting controls in the DS5 Bridge companion app

Button Remapping

Change what each controller button does, then save the remap when you are happy with it.

Button remapping controls in the DS5 Bridge companion app

System

Manage profiles, mute button behavior, polling rate, and diagnostics.

System controls in the DS5 Bridge companion app

Settings

Set UI scale, startup behavior, power saving, shortcuts, idle disconnect, PC sleep disconnect, and the Pico LED.

Troubleshooting

  • Keep Host Encoding enabled if you use the controller speaker or plug headphones into the controller. Turning it off can cause stuttering or static.
  • Headphones through the controller headphone jack work best when DS5 Bridge is open and Host Encoding is enabled.
  • If controller audio sounds doubled, distorted, or too loud, restart your PC, reopen DS5 Bridge, and run the speaker test again.
  • Battery level may be inaccurate while the controller is charging.

Requirements

  • Raspberry Pi Pico 2 W.
  • Sony DualSense or DualSense Edge controller.
  • USB cable from the Pico 2 W to the PC.
  • Windows for the companion app.

For Developers

See docs/development.md for local build requirements, firmware build commands, companion app setup, host helper notes, and packaging steps.

Project Layout

Path Purpose
src/main.cpp Pico startup, watchdog handling, USB task loop, and HID report bridge.
src/bt.cpp Bluetooth inquiry, pairing, L2CAP HID channels, and report queueing.
src/audio.cpp USB audio ingestion, haptic resampling, Opus speaker encoding, and audio packet assembly.
src/companion.cpp Vendor HID companion protocol, status reports, command ACKs, and runtime setting dispatch.
src/usb.cpp TinyUSB audio control callbacks and runtime settings fallback.
src/usb_descriptors.c USB device, configuration, HID report, audio, and string descriptors.
companion/ Electron companion app source, protocol parser, HID service, assets, and UI.
companion/native/HostAudioHelper/ Windows host audio helper used by the companion app for host encoded audio.
.github/workflows CI and release builds.

Development Notes

  • The bridge presents itself to the host as a standard DualSense-compatible USB controller for compatibility.
  • The companion app requires firmware built with the companion HID interface enabled.
  • The project controls runtime behavior through the bridge and does not write controller-side profiles.
  • Battery level is not reported accurately while the controller is charging.
  • During development, Windows may keep stale controller or audio endpoint records after descriptor testing. Use docs/windows-device-cleanup.md only if you run into device or endpoint issues while testing.

License

This repository is distributed as AGPL-3.0-only. See LICENSE.

This project is derived from awalol/DS5Dongle, which is credited in NOTICE. Third-party submodules and package dependencies retain their own license terms.

DualSense controller overlay artwork is adapted from AL2009man/Gamepad-Asset-Pack and credited in NOTICE.

References

Disclaimer

This project was vibecoded, so the occasional peculiarity may show through. That said, it has been tested and edited with care.

About

Wireless DualSense and DualSense Edge bridge for Raspberry Pi Pico 2 W, with Windows companion app for tuning haptics, audio, triggers, lighting, and bridge settings.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors