β‘ Live Web Flasher in action: Drag real-time biquad curve handles, audition in volatile RAM, or save to persistent hardware NVRAM in <50ms.
An open-source hardware DSP flashing suite, WebHID browser flasher, and host equalizer bridge for portable USB-C DAC dongles, DSP upgrade cables, and In-Ear Monitors (IEMs).
Save custom Parametric EQ profiles (including AutoEq targets from squig.link) directly into onboard non-volatile hardware memory (NVRAM). Settings persist natively across iPhones, Android, Macs, Windows, Linux PCs, iPads, and gaming consoles without running any background apps.
Run the full hardware flasher directly in your browser via WebHID (Chrome, Brave, Edge):
π Launch Web Flasher (GitHub Pages)
- 100% Client-Side & Private (no audio or device data leaves your browser).
- Real-time Interactive SVG Biquad Curve with draggable band handles.
- AutoEq Database Integration (search over 5,000+ headphone & IEM measurements).
- 2-Way Hardware Readback & Live Audition in RAM before saving to persistent NVRAM.
- Built-in Safety Guardrails: NVRAM Flash Wear-Out Tracker & Conexant fixed mask ROM protection.
Tip
Linux Users: Linux restricts /dev/hidraw* devices to root by default. See Linux WebHID & udev Setup below to enable browser access in 10 seconds.
Click to preview presentation & feature slides (5-Slide Infographic Deck)
| Slide 1: Overview & Value Proposition | Slide 2: The Status Quo vs Open Source |
|---|---|
![]() |
![]() |
| Slide 3: Web Flasher UI & Biquad Curve | Slide 4: Multi-Tier Hardware Protections |
|---|---|
![]() |
![]() |
See COMPATIBILITY.md for our full breakdown of all 35+ cataloged DACs across 4 status tiers:
| Status | Category | Highlighted Devices |
|---|---|---|
| π’ | Hardware Verified & Tested | CrinEar Protocol Micro & Max, Tanchjim SPACE Pro, Kiwi Ears Allegro Mini, Moondrop FreeDSP / May Cable, TANGZU Wan'er S.G II Cable, BASN BmasterX 6 Plug, TTGK CX31993, Rythflo WD01, Bluetrum AB13X |
| π‘ | Protocol Implemented (Awaiting Silicon Tester) | TRUTHEAR KEYX, Moondrop Chu II DSP, Tanchjim ONE DSP, FiiO / JadeAudio JA11, Fosi Audio DS3, FiiO LS-TC2, Celest Wyvern Abyss, Simgot EW300 DSP |
| π΅ | Protocol In Development (Help Wanted) | FiiO KA15, FiiO KA17, FiiO BTR13, ddHiFi Memory DSP |
| π΄ | Fixed Mask ROM (Host DSP & Qudelix Interop) | Qudelix-5K Profile Sync, Conexant CX31993 (TTGK, JCALLY JM6 Pro), Apple USB-C A2049, Moondrop Dawn Pro |
dac-peq-manager was built from reverse engineering physical hardware captures to eliminate common firmware bricking and volume lockout bugs:
- Hardware Volume Lockout Prevention:
- On KTMicro KT02H20 hardware (Kiwi Ears Allegro Mini), writing register
0x11(DAC reconstruction filter from JA11) or0x66(preamp) overwrites internal MCU codec attenuation registers, locking out physical volume buttons on iOS/Android. dac-peq-managerstrictly restricts writes to the 5 PEQ bands (0x26β0x2F) and Slot 3 (0x24), guaranteeing full native volume slider response on iPhone and YouTube Music.
- On KTMicro KT02H20 hardware (Kiwi Ears Allegro Mini), writing register
- Official Factory Reset (
0x43 CLEAR):- If volume controls are locked by other tools, zeroing bands will not restore them. The official vendor
0x43 CLEARcommand completely wipes corrupted NVRAM and soft-reboots the MCU. Available via CLI (dac-peq-manager reset -y) and the Web Flasher.
- If volume controls are locked by other tools, zeroing bands will not restore them. The official vendor
- Conexant CX31993 OTP Safety Lock:
- Conexant CX31993 devices use fixed mask ROM with One-Time Programmable (OTP) registers. Sending KTMicro HID register writes risks corrupting descriptors. Flashing is automatically blocked for Conexant hardware and safely routed to host-side DSP exporters.
- 2X Clock Divisor Auto-Detection:
- Automatically detects whether firmware has the 2X biquad clock divisor bug (
bcdDevice <= 0x0100), halving calculation frequencies (f / 2) where needed and running native clocks on modern firmwares.
- Automatically detects whether firmware has the 2X biquad clock divisor bug (
- Physical NVRAM Wear-Out Health Tracker:
- EEPROMs lack wear leveling (~10kβ100k cycles). The built-in counter tracks total flash commits per VID:PID and alerts users if writes exceed safe daily thresholds.
git clone https://github.com/JohnnyGuerra/openpeq.git
cd openpeq
pip install -e dac-peq-manager/# Scan and inspect connected USB DACs
openpeq scan
# Audition a preset in live RAM (instant, zero flash wear)
openpeq apply bmasterx6
# Permanently save preset into hardware NVRAM
openpeq flash bmasterx6
# Read active PEQ bands directly from DAC hardware
openpeq read
# Factory reset NVRAM and recover volume control
openpeq reset -y
# Check flash memory write endurance history
openpeq flash-history
# Export 10-band target profile for software equalizers
openpeq export-pipewire bmasterx6 --full-target
openpeq export-apo bmasterx6 --full-targetThe Web Flasher runs client-side in desktop Chromium browsers (Google Chrome, Brave, Microsoft Edge, Opera) using the official W3C WebHID API:
| Operating System | Setup Required | Admin / Driver Needed? | Notes |
|---|---|---|---|
| macOS (Apple Silicon & Intel) | Zero (Plug & Play) | β No | Handled automatically via IOKit. Plug in and click Connect. |
| Windows (10 & 11) | Zero (Plug & Play) | β No | Works out of the box. Note: Close any OEM companion software (e.g. Tanchjim PC app) if running, as Windows grants background apps exclusive HID locks. |
| ChromeOS (Chromebooks) | Zero (Plug & Play) | β No | Works natively in the ChromeOS browser. |
| Linux (Arch, Ubuntu, Fedora, Debian) | One-time udev rule | β No (after rule) | Linux restricts /dev/hidraw* to root by default. Run our one-line udev setup to grant desktop seat access (uaccess). |
| iOS / iPadOS / Android | Save once from PC | N/A | Apple WebKit does not expose WebHID to mobile browsers. Save your EQ curve once from a PC/Mac/Chromebook, and it remains permanently active in the DAC hardware on your phone. |
On Linux distributions (Arch, Ubuntu, Debian, Fedora), access to raw USB HID nodes (/dev/hidraw*) is restricted to root by default. If you encounter a NotAllowedError: Failed to open the device in Chrome/Edge, configure non-root user access via our udev rules:
sudo cp udev/99-dac-peq.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm triggerOr write the rule directly:
sudo tee /etc/udev/rules.d/99-dac-peq.rules << 'EOF'
SUBSYSTEM=="usb", ATTRS{idVendor}=="31b2", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="31b2", MODE="0666", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="3302", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3302", MODE="0666", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2972", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="2972", MODE="0666", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="0023", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="0023", MODE="0666", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="262a", TAG+="uaccess"
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="262a", MODE="0666", TAG+="uaccess"
EOF
sudo udevadm control --reload-rules && sudo udevadm triggerNote
Ubuntu / Debian Snap Warning: If you run Chromium or Chrome installed via Ubuntu Snap, Snap's AppArmor sandbox blocks access to /dev/hidraw* even with udev rules. Use the official .deb package or a Flatpak with device access permissions enabled.
We need your help testing devices and capturing USB packets!
- Read our CONTRIBUTING.md guide to see how to capture WebHID sendReport logs in Chrome DevTools or Wireshark.
- Own a device marked π‘? Submit a Hardware Verification Report!
- Want support for a new DAC? Open a New DAC Support Request.
- License: MIT License
- Disclaimer:
OpenPEQis an independent, community-driven open-source project. Not affiliated with KTMicro, Kiwi Ears, FiiO, Moondrop, Tanchjim, or Truthear.
If you use OpenPEQ, its reverse-engineered KTMicro/WalkPlay USB register maps, or the dac-peq-core Rust engine in your own project, fork, or research, please provide attribution:
Guerra, J. (2026). OpenPEQ: Universal hardware DSP flasher & Web equalizer for portable USB-C DACs and IEMs.
GitHub: https://github.com/JohnnyGuerra/openpeq
@software{guerra2026openpeq,
author = {Johnny Guerra},
title = {OpenPEQ: Universal hardware DSP flasher & Web equalizer for portable USB-C DACs and IEMs},
url = {https://github.com/JohnnyGuerra/openpeq},
year = {2026}
}



