- Rust 99.2%
- Makefile 0.8%
The previous note vaguely said "any Raspberry Pi Pico should do the job" while being "totally untested", which was misleading. Replace it with specific guidance: - Pico 2 (non-W) is the tested target - Pico 1 requires a firmware retarget due to the RP2040 vs RP2350 difference - Pico 2 W shares the same chip but is untested, with potential USB/power concerns from the wireless hardware This sets clearer expectations for anyone sourcing parts. |
||
|---|---|---|
| common | ||
| doc | ||
| firmware | ||
| hardware | ||
| host | ||
| simulator | ||
| .gitignore | ||
| .prettierrc | ||
| Cargo.toml | ||
| Makefile | ||
| README.md | ||
DHD — Dial Hifi Device
A physical motorized fader for seamless computer volume control.
Documentation · Assembly Guide · STL Files
Move the fader by hand to adjust volume. Change volume from your computer and watch the fader glide to match. Bidirectional, seamless, satisfying.
The DHD uses a Bourns PSL60 motorized fader with a PID-controlled DC motor, driven by a Raspberry Pi Pico 2 and a DRV8833 motor driver. The host daemon on Linux integrates with PulseAudio/PipeWire for system volume control.
The enclosure is designed as a GEN2 drawer — it slides directly into the GEN2 modular system with no custom fixation needed.
Features
- Bidirectional control — physical fader ↔ software volume, always in sync
- Auto-calibration — PID controller tunes itself to your hardware
- GEN2 compatible — standard drawer form factor, mounts in seconds
- Plug and play — USB auto-discovery, no configuration needed
- Persistent — calibration saved to flash, survives reboots
Quick Start
See the full documentation for detailed assembly and installation instructions.
# Clone
git clone https://github.com/Xowap/dhd.git
cd dhd
# Flash firmware (hold BOOTSEL while plugging in Pico)
rustup target add thumbv8m.main-none-eabihf
cd firmware && cargo run --release && cd ..
# Install host daemon
cd host && cargo run --release -- install && cd ..
Project Structure
dhd/
├── common/ # Shared library — protocol + PID controller (no_std)
├── firmware/ # Embassy async firmware for RP2350
├── host/ # Linux host daemon (Tokio + PulseAudio + systray)
├── simulator/ # TUI PID simulator for tuning without hardware
├── hardware/
│ ├── kicad/ # PCB schematics
│ └── stl/ # 3D printable parts
└── doc/ # Documentation source (Zensical)
Documentation
The full documentation is published at offworld-nexus-dhd.surge.sh and covers:
- Assembly instructions (BOM, PCB, 3D printing, step-by-step)
- Host software reference (installation, usage, protocol)
- Internals (PID control, motor driver, wiring)
License
This project is open source. Hardware (KiCad + STL), firmware, and host software are all available in this repository.