matthewprince/maxwell-eq
GitHub: matthewprince/maxwell-eq
Linux 下的 Audeze Maxwell 耳机 USB EQ 工具,通过逆向 RACE/HID 协议将均衡器参数下发至耳机内置 DSP,实现 bit-perfect 的自定义 10 段均衡调节。
Stars: 0 | Forks: 0
# maxwell-eq
**Linux 下的 Audeze Maxwell EQ 工具。** Audeze 仅为其 EQ 应用 (Audeze HQ) 提供了 Windows 和 macOS 版本,因此在 Linux 上没有官方支持的调整 Maxwell EQ 的方法。本项目通过 USB 实现了这一点:包含一个小型 GTK 应用和一个 CLI,可切换耳机内置的预设并应用自定义的 10 段 EQ。
EQ 处理位于耳机自带的 DSP 中,而不是 PC 的音频处理流程中,因此播放能保持 bit-perfect。在音频输出的过程中,不会有任何重采样或过滤操作。
## 功能
- 切换设备上的预设:Audeze、Bass Boost、Treble Boost、Immersive、Competition、Footsteps
- 实时且以 bit-perfect 方式应用自定义的 10 段图形 EQ
- 内置了几种根据流派/曲目调校的预设;你也可以通过 CLI 或 `.pnreq` 文件自定义专属预设
- 记住你上一次的选择,并在重新插拔/重启后自动重新应用(通过 systemd + udev 实现)
- 可作为 GTK 应用、独立的 AppImage 或 CLI 运行
## 工作原理
Maxwell 使用了 Airoza 芯片组,并通过 USB HID 接口(供应商 ID `3329`,使用页面 `0xFF13`)进行 RACE 协议通信。自定义 EQ 通过 DSP 实时路径 (`DSP_REALTIME_PEQ`) 传输,这与手机应用在你拖动滑块时的处理方式相同。这 10 个频段是普通的 RBJ 峰值双二阶滤波器(固定中心频率 32 Hz–16 kHz,Q=2),其系数由纯 Python (`peq_native.py`) 生成——不依赖 Audeze 的应用程序或任何专有库。内置预设通过设备上的预设组进行切换。
关于协议的一些说明(它们曾耗费了我不少时间):读取操作是通过 `HIDIOCGINPUT` 返回的,而不是 `read()`;此外,多报告 (multi-report) 写入需要在 HID 数据片段之间留有微小间隔,否则芯片会静默丢弃它们。更多详情请见 [docs/protocol.md](docs/protocol.md)。
## 环境要求
- 通过 USB-C 连接的 Maxwell(不支持无线 dongle)
- Python 3.10+
- GUI 需要 GTK 4 + libadwaita 和 PyGObject (`sudo apt install python3-gi gir1.2-gtk-4.0 gir1.2-adw-1`)。CLI 则不需要这些。
## 安装说明
RACE HID 接口需要用户访问权限。只需安装一次 udev 规则:
```
sudo cp packaging/70-audeze-maxwell.rules /etc/udev/rules.d/
sudo udevadm control --reload
```
重新插拔耳机即可完成设置。可选操作:使用 `ln -s "$PWD/mx" ~/.local/bin/mx` 将 CLI 软链接到你的 PATH 中。
## CLI
```
mx list # presets
mx apply bass-cannon # apply a custom EQ live
mx factory bass-boost # or by index: mx factory 3
mx custom 6 4 1 -2 -2 0 2 3 4 3 --save myeq
mx flat # EQ off
mx status
mx import-pnreq file.pnreq name
```
`factory` 列出了设备上的预设组;最后六个是 Audeze 的内置预设,前四个 (`eq1`–`eq4`) 是可写的自定义插槽。
## 应用
运行 `python3 maxwell_gui.py`,或者构建 AppImage:
```
bash packaging/build-appimage.sh
```
## 持久化
实时 EQ 是易失性的(保存在 DSP 的工作内存中),因此需要使用一个 `.service` 在插入/启动时重新断言你上一次的选择:
```
cp packaging/maxwell-eq.service ~/.config/systemd/user/
systemctl --user enable --now maxwell-eq.service
```
## 注意事项
- 这款耳机无法以 bit-perfect 方式播放 44.1 kHz 的音频:USB 接口仅支持 48k 和 96k,因此 CD 规格的音源总会在某个环节被重采样。这不是本工具能够改变的问题。
- 4 个自定义插槽 (`eq1`–`eq4`) 允许写入,但在 USB 模式下选择时,固件无法可靠地加载由主机写入的插槽,因此自定义 EQ 会通过实时路径进行处理。其听感结果是一样的。
## 与 Audeze 无关联
出于互操作性目的进行逆向工程。使用风险自负。基于 MIT 协议开源。
标签:Audeze Maxwell, GTK, USB HID, 均衡器, 逆向工具, 音频工具