AES67 Audio Network
The aes67 driver finds AES67 streams and EtherJax boards on the network, and routes streams to EtherJax decoders. It is managed from the AES67 tab of the Network Audio page, and its routes are made on that page's Routing tab, in the same grid as Dante. The page has the full guide.
It needs the Dante product in your license. That one product covers both Dante and AES67.
How it works
- Streams come from SAP announcements, on
239.255.255.255and224.2.127.254, port 9875. - Boards come from an mDNS browse of
_etherjax._tcp, and from each board's peer list. - Routes are written to the decoder over HTTP (
POST /api/route) and saved on the board. GEM keeps no routing of its own.
All board traffic goes from the GEM server; the browser never calls a board. Each board's status is read every poll_interval seconds. The boards serve one request at a time, so GEM keeps at most one request in flight per board.
Attributes
| Attribute | Purpose |
|---|---|
admin_password | The admin password shared by every EtherJax board (stored encrypted). Blank when the boards have none. |
interface | NIC to join SAP and mDNS on, for a multi-homed host. |
hosts | Comma-separated board addresses to poll when mDNS doesn't reach GEM. |
poll_interval | Status poll in seconds, 2–60 (default 5). |
Zones
sync_zones creates one zone per EtherJax decoder, addressed by the board hostname, under the av subsystem (or audio). Each zone carries aes67_source, aes67_source_name, volume, mute_state, aes67_decoder, ip_address and online, kept current from every status poll.
Commands
| Command | Arguments | What it does |
|---|---|---|
get_state | — | Every board, source and decoder |
get_streams | — | The streams available as sources, each with its key (group:port@sender) |
get_decoders | — | The EtherJax decoders, each with the stream it plays |
refresh | — | Re-query mDNS and re-read every board now |
route_stream | decoder, stream | Play a stream on a decoder. stream is a key, or a stream name if unique. |
clear_stream | decoder | Stop a decoder |
sync_zones | — | Create a zone per decoder |
set_zone_source | receiver, transmitter | Play a stream on a decoder zone (same arguments as a Dante zone) |
clear_zone_source | receiver | Stop a decoder zone |
volume | address, volume | Set decoder output volume, 0–100 |
volume_up / volume_down | address, step | Step the volume (default 5) |
mute_on / mute_off / mute_toggle | address | Decoder mute |
get_board_config | board | Read a board's saved settings |
set_board_config | board, then any of name, role, hostname, mcast, port, channels, link_ms, ext_link_ms, ptp_priority1, sap | Change a board's settings. Only changed fields are written, and the board reboots. |
reboot_board | board | Reboot a board |
A route is refused, and nothing is sent to the board, when the decoder is offline or is not a decoder, or when the stream can't be decoded. A decoder can play L24 or L16 at 48 kHz, on an even port of 1024 or above.
set_board_config never writes network settings (static IP, mask, gateway); change those on the board's own page.