Skip to main content

audient-evo-python

An experimental, unofficial Python API/wrapper for the Audient EVO 8 (4 might also already work) USB audio interfaces on Linux.

This library allows direct USB communication with the EVO hardware, replicating the core functionality of the official EVO Mixer software using raw control transfers.

⚠️ DISCLAIMER & Project Status

  • This project is a partially reverse-engineered USB control protocol.
  • It is not affiliated with or endorsed by Audient.
  • The kernel driver is detached while the app is active.
  • Crashes or forced exits may leave the device unclaimed until replugged.
  • Information may be incomplete or inaccurate; use at your own risk. \

I only own an EVO8 so I cannot dissect nor test communication for the EVO4 & EVO16, with the latter likely featuring a far more complex internal structure that might differ
greatly from the EVO8

Features

These changes do not survive disconnecting the usb cable!

  • Direct USB communication with EVO firmware
  • Input controls: Phantom power (48V), Gain, Mute, Mono
  • Output controls: Volume, Mute
  • Monitor mixer routing (per input → output)
  • Sample‑rate switching (experimental)
  • Event polling support
  • Change Input Routing Loopback source

Architecture

The library is built on three logical layers, completely independent of any UI frameworks:

  • EvoDevice: High‑level device API. Converts semantic actions into protocol commands.
  • EvoProtocol: Pure helper class containing addressing rules and calculators (no USB logic).
  • EvoUsbTransport: Low‑level USB transport handling discovery, interface claiming, and control transfers.

Requirements

  • Python 3.10+
  • Linux
  • pyusb

Installation & Setup

  1. Install the package:

    pip install audient-evo-linux
    
  2. Ensure your user has permission to access the EVO USB device by adding yourself to the audio group:

    sudo usermod -aG audio $USER
    
  3. You may also want to copy the udev rule from this projects udev/ directory into /etc/udev/rules.d/:

    SUBSYSTEM=="usb", ATTR{idVendor}=="2708", ATTR{idProduct}=="0008", MODE="0666" # EVO16
    SUBSYSTEM=="usb", ATTR{idVendor}=="2708", ATTR{idProduct}=="0007", MODE="0666" # EVO8
    SUBSYSTEM=="usb", ATTR{idVendor}=="2708", ATTR{idProduct}=="0006", MODE="0666" # EVO4
    

Usage Example

from audient_evo import EvoUsbTransport, EvoDevice

transport = EvoUsbTransport.discover()
evo = EvoDevice(transport)

evo.connect_hardware()

evo.set_gain(1, 40)  # gain range 0 - 100
# or
evo.set_gain_db(1, 7552) # gain db range -2048 - 12800

evo.set_phantom(1, True)

evo.disconnect_hardware()

Channel numbers are 1‑based.


References

This project builds upon previous community efforts:

Huge credit to the developers of those projects for protocol discovery.


Source Code Documentation Overview

Key Classes

EvoUsbTransport

Responsible for:

  • USB device discovery
  • Kernel driver detachment
  • Interface claiming / releasing
  • Control transfer I/O

Implements context‑manager support for safe cleanup.

EvoProtocol

Pure helper class that:

  • Encapsulates EVO firmware addressing rules
  • Calculates channel‑based and monitor‑matrix addresses

Contains no USB logic.

EvoDevice

High‑level API intended for UI and scripting:

  • Converts semantic actions into protocol commands
  • Handles error recovery
  • Enforces "app vs OS" control state

License

BSD-3-Clause


Contributing

Any kind of contribution is always welcome.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

audient_evo_linux-1.0.0.tar.gz (23.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

audient_evo_linux-1.0.0-py3-none-any.whl (24.4 kB view details)

Uploaded Python 3

File details

Details for the file audient_evo_linux-1.0.0.tar.gz.

File metadata

  • Download URL: audient_evo_linux-1.0.0.tar.gz
  • Upload date:
  • Size: 23.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for audient_evo_linux-1.0.0.tar.gz
Algorithm Hash digest
SHA256 66805599fbfd78e002ab358b908647743db2f741a5f147bfb648a14d11a5a45a
MD5 80fb9a66c3caa7a36e970c6a91c2d5c3
BLAKE2b-256 5caa89e47ae95bb95700a3cb94c642d9b7d9f17cddc1971252dabe9bf65295a2

See more details on using hashes here.

File details

Details for the file audient_evo_linux-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for audient_evo_linux-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9e6e5cf6c53c7c204edc3af74e86f9e651472d28b7b0141e50186946bba51f5c
MD5 04671555b360c7263a2dae0c1596131d
BLAKE2b-256 4055f97fd68ec7d6dcdaec1fecfee2d6c35cb2028ed062ac02e3a380d99a625c

See more details on using hashes here.

Release history Release notifications | RSS feed

1.2.0

2 files

1.1.0

2 files

This release

1.0.0 This release

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.4.1

2 files

0.8.3.7

2 files

0.8.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page