Skip to main content

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.255 and 224.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​

AttributePurpose
admin_passwordThe admin password shared by every EtherJax board (stored encrypted). Blank when the boards have none.
interfaceNIC to join SAP and mDNS on, for a multi-homed host.
hostsComma-separated board addresses to poll when mDNS doesn't reach GEM.
poll_intervalStatus 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​

CommandArgumentsWhat 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_streamdecoder, streamPlay a stream on a decoder. stream is a key, or a stream name if unique.
clear_streamdecoderStop a decoder
sync_zones—Create a zone per decoder
set_zone_sourcereceiver, transmitterPlay a stream on a decoder zone (same arguments as a Dante zone)
clear_zone_sourcereceiverStop a decoder zone
volumeaddress, volumeSet decoder output volume, 0–100
volume_up / volume_downaddress, stepStep the volume (default 5)
mute_on / mute_off / mute_toggleaddressDecoder mute
get_board_configboardRead a board's saved settings
set_board_configboard, then any of name, role, hostname, mcast, port, channels, link_ms, ext_link_ms, ptp_priority1, sapChange a board's settings. Only changed fields are written, and the board reboots.
reboot_boardboardReboot 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.