Skip to content

SleepyRemedy/evo4-linux-control

Repository files navigation

EVO 4 Linux Control

A small tool to control the Audient EVO 4 USB audio interface on Linux, with a GUI, persistent settings, and automatic restore at login.

Audient's official control app is Windows/macOS only. On Linux the hardware gain resets when you fully power-cycle the device, because nothing restores your values. This tool fixes that.

Unlike the raw-USB / kernel-module approaches out there, this one talks to the device through ALSA (the same layer PipeWire uses). That means:

  • No kernel module
  • No detaching the device from the audio driver
  • No device reset, no "gain jumps to 0"
  • Your audio never disappears while the tool runs

Features

  • GUI (CustomTkinter, neon/cyberpunk styling) with percent sliders (0–100) for Mic Gain and Output/Headphone
  • Persistent settings saved to ~/.config/evo4-control/
  • Autostart restore — your saved values are re-applied at login
  • Headless restore script for use in a service

What works / what doesn't

Discovered ALSA controls on the EVO 4 (amixer -c EVO4 scontrols):

Control Function Raw range
Mic Mic gain 0..116 (−8 dB … +50 dB)
EVO4 Output / headphone 0..254
Extension Unit on/off switch, purpose unclear

The GUI shows these as 0–100% and converts to the raw values internally.

48V phantom power is not exposed as an ALSA control on this unit and can only be toggled with the hardware button. That's fine for dynamic mics, which don't need phantom power anyway.

Tested on an Audient EVO 4 (USB 2708:0006). Other EVO models likely expose different control names — adjust evo4_device.py accordingly.

Requirements

  • Linux with ALSA (amixer, from alsa-utils)
  • Python 3.10+
  • tkinter and customtkinter (for the GUI)

Install (generic Linux)

  1. Put the .py files somewhere, e.g. ~/evo4-control/
  2. Install dependencies:
    pip install customtkinter
    
    and make sure alsa-utils + Python's tkinter are present.
  3. Run the GUI:
    python3 evo4_gui.py
    

If your card isn't named EVO4, find it and adjust CARD in evo4_device.py:

aplay -l
amixer -c <number> scontrols

Install (NixOS)

See nixos-example.nix for a ready-to-adapt snippet that:

  • registers a systemd user service to restore settings at login
  • provides evo4-gui and evo4-restore commands
  • pulls in alsa-utils

The Python environment needs tkinter and customtkinter:

python3.withPackages (ps: [ ps.tkinter ps.customtkinter ])

Replace YOUR_USER and the project path, then sudo nixos-rebuild switch.

Usage

  • Drag a slider → value is sent to the device immediately (as a percentage)
  • Save → store current values persistently
  • Reconnect → if the device was plugged in after the GUI started

After saving once, the autostart service applies your values at every login — no need to open the GUI again unless you want to change something.

Headless (e.g. from a script or service):

python3 evo4_restore.py

How it works

The controls were found by listing the ALSA mixer controls the kernel already exposes for the device (amixer scontrols / scontents). The tool simply sets those controls via amixer. No reverse-engineered USB traffic is needed for gain and output — ALSA already surfaces them.

Credits

The USB protocol for EVO devices was originally reverse-engineered by several community projects. This project takes a different, simpler route via ALSA, but those efforts were helpful in understanding the device.

License

MIT — see LICENSE.

About

Linux control tool for the Audient EVO 4 (ALSA-based, with GUI and settings persistence).

Topics

Resources

License

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors