v1.0.0 — On-device web config & bond management
·
70 commits
to ds5-linux-bridge
since this release
First stable release of DS5-Linux-Bridge, the Linux-focused fork of
awalol/DS5Dongle. This release consolidates
a large body of work: a self-hosted configuration web interface, paired-controller
management, dynamic USB descriptors that stay valid on Windows, and the RAM/audio
tuning that makes full-quality duplex audio stable.
Which firmware to flash
| File | Board | Notes |
|---|---|---|
ds5-bridge-v1.0.0.uf2 |
Raspberry Pi Pico 2 W (RP2350) | The standard build — flash this for a Pico 2 W. |
ds5-bridge-waveshare-v1.0.0.uf2 |
Waveshare RP2350B-Plus-W | USB-C / 16 MB-flash Pico 2 W alternative. Different RM2 GPIO wiring + Puya-flash XIP fix. |
ds5-bridge-debug-v1.0.0.uf2 |
Pico 2 W (diagnostics) | Same as standard plus verbose UART logging (GP0 TX, 115200 8N1). Use only when diagnosing. |
The legacy Raspberry Pi Pico W (RP2040) can be built from source
(-DPICO_W_BUILD=ON) but has no audio (gamepad + haptics only) and is not
shipped as a release asset.
Highlights
🌐 On-device web configuration (replaces WebHID)
- The adapter enumerates as a USB network adapter (CDC-NCM) and serves a single
self-contained page at http://10.55.55.105/ — no app, no browser API, no
internet, and no WebHID (which never worked in Firefox). - Configure controller mode, polling rate, audio buffer length, inactivity
timeout, auto-disconnect, onboard LED, and the page's own subnet. - Works in any browser on any OS.
🎮 Paired-controller (bond) management
- List, nickname (≤15 chars), forget, and forget all remembered
controllers from the page. - Forgetting disconnects the controller if connected and blacklists its
address so it can't silently auto-reconnect; re-pair with Share + PS to
restore it. The blacklist persists across power cycles. - Flash writes are audio-safe — the audio core is briefly parked during the
flash erase/program, so saving while a controller streams audio no longer
corrupts the stream (this was a latent issue in the shared codebase).
🔀 Dynamic USB descriptors, Windows-safe
- Full descriptor set (audio + gamepad + keyboard + config network) while a
controller is connected; minimal set when idle — no "ghost" devices in the OS,
while staying enumerated for remote wake. - The keyboard is pinned to a stable HID instance across both variants, which
eliminates a "rogue keyboard" that previously fired spurious keystrokes on
wake-from-sleep — without violating Windows' strict ascending-interface-number
requirement.
⚡ Audio & performance
- Critical Bluetooth/USB/audio hot paths and libopus relocated to RAM to kill
Flash XIP cache thrashing; runs at stock 150 MHz. - Lightweight boxcar + linear resampler instead of WDL.
- Volume fully yielded to the host OS mixer (RAM-only, never written to flash).
🐧 Linux-first integration
hid-playstationjack-detection wiring (HP_DETECT/MIC_DETECTpassthrough)
with kernel-version-aware notes for getting stereo audio routing working.- Driverless hybrid hardware mic mute with host UAC sync.
Notes
- Licensed under GPLv3; upstream MIT notice preserved (see
LICENSE-MIT). - Config web UI is on by default; disable with
-DENABLE_WEBCONFIG=OFF. - There is no USB serial — diagnostics are on UART0 (see the README's Debugging
section). - This fork diverged from upstream after the v0.6.0 line; earlier
v0.xtags in
the history are inherited from upstream and were never fork releases.