No description
  • Rust 99.2%
  • Makefile 0.8%
Find a file
Rémy Sanchez 507f2149ec Clarify Pico 2 compatibility expectations in BOM
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.
2026-05-10 22:12:59 +02:00
common Add scale inversion feature to flip volume direction 2026-05-07 00:57:45 +02:00
doc Clarify Pico 2 compatibility expectations in BOM 2026-05-10 22:12:59 +02:00
firmware Add scale inversion feature to flip volume direction 2026-05-07 00:57:45 +02:00
hardware Adding STL files 2026-05-10 20:49:44 +02:00
host Add scale inversion feature to flip volume direction 2026-05-07 00:57:45 +02:00
simulator Introduce physically and logically driven system modes 2026-04-21 20:03:05 +02:00
.gitignore Reorganize documentation as a Zensical static site 2026-05-10 21:37:06 +02:00
.prettierrc [LOG-NONE] Implement persistent calibration storage and host-driven calibration 2026-04-21 20:58:46 +02:00
Cargo.toml Internal PID controller lib 2026-04-20 01:57:58 +02:00
Makefile Reorganize documentation as a Zensical static site 2026-05-10 21:37:06 +02:00
README.md Fix GitHub links to point to develop instead of master 2026-05-10 21:57:54 +02:00

DHD — Dial Hifi Device

DHD — a physical motorized fader for computer volume control

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.