This is a small command line program to facilitate control of Eversolo A6 DAC on my Linux.
A small terminal-based remote control for the Eversolo A6 DAC/streamer,
written in Odin programming language for Linux. It talks to the device's
HTTP ControlCenter API over a fixed port (9529) and lets you switch
inputs/outputs, change volume and power off using single key presses — no
Enter required.
This is a client only. It runs on your computer and sends HTTP requests to the A6; it does not expose any server.
- Single key press control (raw terminal mode, no Enter needed).
- Fixed port
9529— only the IP needs to be supplied. - On startup it automatically switches the device input to USB DAC.
- Each request is checked:
HTTP 200= success, any other code = HTTP error, and an unreachable device is reported as a connection error. - Status output stays on a single status line (
\r+ clear-to-end-of-line) so the on-screen keys manual is always visible and never scrolls away. - The terminal is always restored on exit (even on
Ctrl-C/ kill), via anatexithandler.
- Linux (uses POSIX
termios/poll/popen). - Odin compiler —
odin version dev-2025-12or newer. - curl installed and on
PATH(used to perform the HTTP GETs).
The project ships with a Makefile. The common targets:
make clean # remove the binary
make # build odin_control_for_eversolo_a6.exe ( default target: 'all' )odin build eversolo_a6_control.odin -file -out:odin_eversolo_a6_control.exe -o:speed./odin_control_for_eversolo_a6.exe <ip-address>Example:
./odin_control_for_eversolo_a6.exe 192.168.1.78Run it directly via make (default IP 192.168.1.78, overridable):
make runThe program prints these hints at startup. The port used by the Eversolo A6
ControlCenter service can be dynamic on the network, so if 9529 does not
respond, scan for it:
ip address
nmap -p 9529 192.168.1.80/24| Key | Action | API key sent |
|---|---|---|
o |
Power off | Key.Poweroff |
s |
Speakers (XLR output) | Key.OUT.XLR |
p |
Phones (RCA output) | Key.OUT.RCA |
i |
Show playback info on the device screen | Key.Info |
Up arrow |
Volume up | Key.VolumeUp |
Down arrow |
Volume down | Key.VolumeDown |
q / Ctrl-C |
Quit | — |
On startup the program also sends Key.DAC.USB once, to switch the device
input to USB DAC.
$ ❯ make run
./odin_control_for_eversolo_a6.exe 192.168.1.78
==============================================================
Odin control for Eversolo A6 DAC
==============================================================
Target: http://192.168.1.78:9529
To check the dynamic port of the Eversolo A6 on the network
ip address
nmap -p 9529 192.168.1.80/24
Keys (no Enter needed):
o Power off
s Speakers (XLR output)
p Phones (RCA output)
i Playback info on the device screen
Up arrow Volume up
Down arrow Volume down
q Quit
==============================================================
Press a key ( q to quit ):
[OK] Phones ( RCA ) ×2 -> Key.OUT.RCA
Each key triggers an HTTP GET of the form:
http://<ip>:9529/ControlCenter/RemoteControl/sendkey?key=<Key.XXX>
performed via curl. The HTTP status code is captured and interpreted as:
200→[OK]- any other code →
[HTTP ERR] 000/ curl fails to connect →[CONN ERROR]
control_for_eversolo_a6.odin # Odin source ( single-file )
Makefile # build / run / clean targets
odin_control_for_eversolo_a6.exe # compiled binary ( after `make` )
- If stdin is not a TTY (e.g. output piped to another command), raw mode is skipped and a warning is printed; keys may then require Enter.
- The terminal is restored on normal exit and via
atexit, so it will not be left in raw mode even if the process is killed abruptly.
MIT Open Source License
Best regards,
Joao Carvalho