Skip to content

v1.0.0 — On-device web config & bond management

Choose a tag to compare

@kungaa kungaa released this 17 Jun 08:48
· 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. ⚠️ Built and verified to compile, but not yet tested on hardware — feedback welcome.
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-playstation jack-detection wiring (HP_DETECT / MIC_DETECT passthrough)
    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.x tags in
    the history are inherited from upstream and were never fork releases.