Skip to content

Glacier EQ

CI status Latest release License

Glacier EQ is a cross-platform parametric EQ editor for compatible USB DACs. It talks to the hardware over HID, stores edits locally, and works offline.

Use the web version at bukutsu.github.io/glacier-eq.

Glacier EQ desktop interface showing EQ graph, filter bands, and profile controls

Features

  • 10-band PEQ editor with preamp, undo and redo, graph preview, and target curves
  • Pull, RAM apply, push, verify, and rollback operations for supported DACs
  • Local profiles with search, import and export, copy and paste, and one-tap apply
  • Measurement overlays from local files or an optional offline Squiglink cache
  • Native AutoEQ matching for measurement and target curves
  • EQ protocol support for Walkplay/Savitech, Moondrop, and FiiO devices
  • Hardware controls for supported Walkplay/Savitech DACs, including DAC filter, amp mode, output gain, balance, mic monitor, and reset modes
  • Desktop and Android layouts, themes, diagnostics, and a dummy DAC for development

Installation

Download a build from the releases page.

On Arch Linux:

git clone https://github.com/Bukutsu/glacier-eq.git
cd glacier-eq
makepkg -si

The Arch package installs udev/99-glacier-eq.rules. Replug the DAC after installation so the Linux desktop build can open it without a polkit elevation prompt.

To run from source:

git clone https://github.com/Bukutsu/glacier-eq.git
cd glacier-eq
npm install
npm run tauri dev

CLI

The offline CLI supports scripts, piped profiles, and bulk AutoEQ jobs. It writes data to stdout and diagnostics to stderr.

See the CLI documentation for commands and examples.

Using the GUI

  1. Plug in a supported DAC.
  2. Open Glacier EQ.
  3. Select the DAC and connect.
  4. Pull the current hardware state.
  5. Edit the preamp, bands, filter type, frequency, gain, and Q.
  6. Push the changes to the device.

Supported devices

If your DAC is listed below, plug it in and check the device picker. A Family match means its USB family appears compatible, but the exact model still needs more hardware reports.

Status Device
Confirmed EPZ TP35 Pro
Confirmed TRN Black Pearl
Family match Audiocular Aura
Family match Fosi Audio DS2 / iBasso DC04 Pro
Family match JCally JM20 / Savitech Generic
Family match JCally JM20 Pro / Alt Savitech
Testing Moondrop Dawn Pro
Testing Moondrop Dawn Pro 2
Testing FiiO JA11
Testing JCally JM12
Testing FiiO KA Series
Testing Truthear KEYX

Discovery, validation, capabilities, and the device picker all use the registry in glacier-core/src/device/walkplay.rs.

Development

System dependencies

Building the Tauri desktop app on Linux requires GTK 3, WebKitGTK, pkg-config, and related build tools.

Debian / Ubuntu

sudo apt update
sudo apt install -y build-essential curl wget file libssl-dev libgtk-3-dev libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev pkg-config

Arch Linux

sudo pacman -S --needed base-devel curl wget file openssl gtk3 webkit2gtk-4.1 libappindicator-gtk3 librsvg pkg-config

Fedora

sudo dnf install @development-tools webkit2gtk4.1-devel openssl-devel curl wget file libappindicator-gtk3-devel librsvg2-devel gtk3-devel pkgconf-pkg-config

Useful commands:

npm run wasm:build       # build WASM module (glacier-core)
npm run dev              # frontend only
npm run tauri dev        # desktop app
npm run build            # TypeScript + Vite
cargo check              # Rust workspace
cargo test -p glacier-core

To enable the optional local check before pushing:

git config core.hooksPath .githooks

Android commands:

npm run android:doctor
npm run android:init
npm run android:dev
npm run android:apk

Release APK signing is not configured by default.

Roadmap

  • Real-time frequency response graph
  • AutoEQ matching
  • Desktop and Android builds
  • More DAC families beyond Walkplay/Savitech
  • Interactive filter adjustment from the graph
  • Full-screen Android filter adjustment
  • Command-line profile tools
  • Multi-device support
  • Localization

Linux HID permissions

On Linux, Chromium-based browsers and the desktop build may need udev access to raw USB HID devices. The packaged udev/99-glacier-eq.rules lets the desktop build open supported devices without a polkit elevation prompt. If the browser shows NotAllowedError: Failed to open the device while connecting:

  1. Create a udev rule file:

    sudo nano /etc/udev/rules.d/50-glacier-dac.rules
  2. Add these rules for compatible DACs:

    # Walkplay / FiiO / Moondrop / EPZ DACs
    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3302", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="262a", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="2fc6", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="2972", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0661", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0666", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="35d8", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="31b2", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0d8c", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
    
  3. Reload the udev rules, then replug the device:

    sudo udevadm control --reload-rules
    sudo udevadm trigger

Chromium Flatpak and Snap installations may also need USB access enabled in the sandbox permissions manager, such as Flatseal.

Project layout

glacier-core/       Rust EQ and device logic
src/                React frontend
src-tauri/          Tauri backend
tauri-plugin-hid/   Local HID plugin
scripts/            Helper scripts

Credits

License

Glacier EQ is licensed under GPL-3.0-only. See LICENSE.

About

Cross-platform parametric EQ editor for USB DACs. Offline, direct Tauri+React app for desktop and Android.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages