# DS5Dongle: turning a Raspberry Pi Pico 2 W into a DualSense 5 dongle

> The core firmware makes a wireless DualSense appear as a wired USB controller, with haptics, headset audio and microphone passthrough. Here is how it installs, what it does not do, and when a community fork is the better bet.

**awalol/DS5Dongle** — Turn your Pico 2 W into a DualSense 5 dongle.

- Repository: https://github.com/awalol/DS5Dongle
- Stars: 2,842 · Forks: 191
- Language: C++
- License: MIT
- Published: 2026-09-28 · Updated: 2026-09-28 · Language: en
- Canonical page: https://hysenlabs.com/projects/awalol-ds5dongle

## The problem DS5Dongle solves, and who it is for

Bluetooth on a desktop is a shared resource with a long history of driver quirks, and the DualSense is one of the controllers that suffers most from it. DS5Dongle sidesteps the host Bluetooth stack entirely. The Pico 2 W owns the wireless link to the controller, and the host sees a USB device. The README states the goal plainly: the repository "only implements the core functionality of DS5Dongle, making a wireless controller appear as a wired connection."

The intended user is someone with a Pico 2 W (or a compatible board such as the Waveshare RP2350B-Plus-W) who wants DualSense features that a generic Bluetooth pairing does not deliver: HD haptics, controller speaker and 3.5 mm jack output, and the controller microphone exposed as a USB audio input. The README also notes a Pico W variant, with a real limitation attached: "Pico W only has haptics support, no speaker." If audio output matters to you, the plain Pico W is the wrong board. This is a hardware purchase decision before it is a software one.

## How the bridge works: Bluetooth in, USB out

The architecture is a bridge in the literal sense. The firmware runs on the Pico and drives its Bluetooth radio as the central side of the link, while the Pico's USB peripheral enumerates on the host as a controller. The README describes the result as a wireless adapter for the DualSense, and the notes add a behavioural detail worth internalising: "The Pico device will only be visible to the system after the controller is connected." That is a deliberate design, not a bug, but it changes how you debug. If nothing appears on the host, the first thing to check is the controller link, not the USB cable.

The repository layout reflects a normal Pico SDK C++ project: CMakeLists.txt, pico_sdk_import.cmake, a src/ directory, a lib/ directory for dependencies, and a boards/ directory, which is where the per-board build variants come from. The README also warns that "some behaviors depend on reconnection cycles to take effect," so a setting changed over the web config may not be observable until the controller link is re-established. There is no host-side daemon described anywhere in the README; the bridge is self-contained on the microcontroller.

## Flashing the firmware and pairing a DualSense

The fastest path is the pre-built binary. The README says to grab the newest release build, named ds5-bridge-<version>.uf2, with other board builds bundled in other board.zip and config_tool.py attached to the same release. No toolchain is required for this route.

Flashing is the standard UF2 drag and drop. Hold BOOTSEL, connect the Pico over USB, and the device mounts as a USB storage device. The README describes dragging the .uf2 firmware file onto the mounted device; the mount point name depends on your operating system, so use whatever file manager your system provides.

Once the firmware is running, put the DualSense into Bluetooth pairing mode and wait for the Pico to detect it. The README adds a caveat in bold: "You may need to replug the Pico when the controller is in pairing mode." Do not treat that as optional troubleshooting; it is documented behaviour.

After the first pairing you rarely need to unplug anything. The BOOTSEL button doubles as a control while the firmware runs. A short click disconnects the current controller but keeps its pairing, or starts a 30 second scan if nothing is connected. A double click reboots the Pico. A triple click reboots into BOOTSEL so you can drag on a new .uf2. A long press of about 1.5 seconds forgets every paired controller and blacklists them so they do not silently reconnect across a power cycle; the onboard LED flashes six times to confirm.

## Web configuration and the microphone gotcha

Settings live in a web config rather than a desktop application. The README lists two endpoints: https://ds5.awalol.eu.org for release firmware and https://ds5-dev.awalol.eu.org for development builds. The same page exposes a Reboot to Bootloader button, which is the software equivalent of the triple-click gesture.

The microphone is where most first-time users will lose an hour. The controller mic is exposed as a USB audio input, called "Headset Microphone" on Windows. The README states that Windows in particular often defaults the input level to 0 or very low, "which makes the mic seem dead even though it is working." The fix is in the OS sound settings, not in the firmware. If you test the mic and hear nothing, raise the capture level before assuming the bridge failed.

There is also a battery warning behaviour to know about. When the connected DualSense reports 10% or below and is not charging, the onboard LED switches from solid-on to a 1 Hz blink, and returns to solid-on once the controller is plugged in or the level rises. The README notes this blink fires even when disable_pico_led is set, because the warning overrides the LED-off preference. The README states that to opt out at build time you configure with -DENABLE_BATT_LED=OFF, and that the default is ON. That is the only build flag documented in the excerpt, so treat it as the exception rather than a sign of a large configuration surface.

## What DS5Dongle deliberately does not do

The clearest limitation is stated by the project itself. This repository implements the core bridge only, and the README directs anyone wanting more to a Community Fork section. That is an honest boundary, but it means the upstream project is not the right choice if your wish list includes audio-driven haptics, button remapping, trigger strength tuning or an on-device display. Those exist, but in forks.

The forks are described concretely enough to pick from. Audio Auto Haptics (loteran/DS5Dongle) generates haptics from the game audio stream, converting bass and impact sounds into rumble without game-side support. DS5_Bridge (SundayMoments/DS5_Bridge) adds audio, haptics, trigger strength, lighting, button remapping and shortcuts. OLED Edition (MarcelineVPQ/DS5Dongle-OLED-Edition) adds a Pico-OLED-1.3 128x64 display with eleven screens covering status, multi-controller pairing, lightbar colour picking, trigger test, gyro tilt, touchpad, diagnostics and audio VU meters. artzox/DS5Dongle and zurce/DS5Dongle-OLED extend the same line further.

Two more constraints matter. The Pico W, as noted, has no speaker, so headset audio output is off the table on that board. And the README's note that some behaviours need a reconnection cycle means you should not judge a settings change until the controller has reconnected. Neither constraint is a defect, but both shape what you can expect on day one.

## DS5Dongle against DS4Dongle and the fork family

The nearest real alternative inside the same ecosystem is DS4Dongle (snipem/DS4Dongle), firmware for the Raspberry Pi Pico 2 W that targets the DualShock 4 instead of the DualSense. The README describes it as "inspired by DS5Dongle with headset and microphone support and configuration abilities." The difference is the controller generation, not the architecture: same board, same bridge idea, different device. If you own a DualShock 4, DS5Dongle is simply not the tool, and DS4Dongle is.

The other alternative is not a different project but a different branch of this one. Choosing between upstream DS5Dongle and, say, DS5_Bridge is a choice between a minimal core and a larger feature surface, with the maintenance implications that follow from tracking a fork instead of the upstream releases. The README does not document a merge or upgrade path from a fork back to upstream, so if you start on a fork you should expect to stay there or reflash deliberately.

## Licence, build cost and maintenance

DS5Dongle is MIT licensed, which is permissive and places few obligations on anyone reusing the code, including the forks listed in the README. That is likely part of why the fork ecosystem is as broad as it is. This is a description of the licence text, not legal advice; read the LICENSE file in the repository root if the terms matter to your use.

Maintenance looks current. The last push to the default branch was on 2026-09-16, and the most recent release is v0.7.2-hotfix from 2026-06-20, preceded by v0.7.1 and v0.7.0 in June 2026. The hotfix naming suggests the maintainer ships corrections quickly rather than holding them for a version bump.

Upgrade cost is low if you use the release artifacts. Triple-click the BOOTSEL button to re-enter the bootloader, drag the new .uf2 on, and re-pair if the long-press forget was used. Builds from source add a CMake and Pico SDK toolchain step, and the README notes Windows users get a one-command script. The one thing to watch across upgrades is board-specific builds: the release bundles other board variants in other board.zip, so a firmware built for the wrong board is a plausible mistake.

## Conclusion

Adopt DS5Dongle if you want the DualSense treated as a wired USB controller on a PC or console, and you are willing to flash a Pico 2 W and use the web config for settings. Skip it if you need a graphical desktop app, native Bluetooth on the host, or a feature set beyond the core bridge, since the README points those users at community forks. Verify before ordering hardware: which board build you need from the release assets, whether your target OS exposes the headset microphone and at what capture level, and whether the feature you actually want lives upstream or in a fork.

## FAQ

### How do I configure the DS5Dongle?

Settings are changed through the web config, with a release endpoint at https://ds5.awalol.eu.org and a development endpoint at https://ds5-dev.awalol.eu.org. The same page includes a Reboot to Bootloader button. Note that the README says some behaviours depend on reconnection cycles to take effect.

### How do I connect my PS5 controller to DS5Dongle over Bluetooth?

Put the DualSense into Bluetooth pairing mode and wait for the Pico 2 W to detect and connect. The README warns that you may need to replug the Pico while the controller is in pairing mode. If nothing is connected, a short BOOTSEL press starts a 30 second scan.

### Does DS5Dongle work on Windows?

The README describes Windows-specific behaviour rather than a platform restriction: the controller microphone appears as a USB audio input called "Headset Microphone," and Windows often defaults its input level to 0 or very low, making the mic seem dead until you raise the capture level. Windows users also get a one-command build script.

### What kind of dongle can I use to connect my PS5 controller to my PC?

DS5Dongle turns a Raspberry Pi Pico 2 W, or a compatible board such as the Waveshare RP2350B-Plus-W, into that dongle. It bridges the DualSense over Bluetooth and presents it to the host as a USB connection, with haptics, headset audio and microphone passthrough. A plain Pico W works for haptics only, with no speaker support.

### What is the difference between DS5Dongle and DS5_Bridge?

DS5_Bridge is listed in the README's Community Fork section as a fork of DS5Dongle that adds more customisation, including adjusting audio, haptics, trigger strength, lighting, button remapping and shortcuts. Upstream DS5Dongle implements the core bridge only, making a wireless controller appear as a wired connection.

## Sources

- [awalol/DS5Dongle on GitHub](https://github.com/awalol/DS5Dongle)
- [Issues](https://github.com/awalol/DS5Dongle/issues)
- [License: MIT](https://github.com/awalol/DS5Dongle/blob/master/LICENSE)
- [README](https://github.com/awalol/DS5Dongle/blob/master/README.md)
- [Releases](https://github.com/awalol/DS5Dongle/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/awalol-ds5dongle
