Skip to main content

AVB4Linux

This is a condensed guide to sending audio to an audio interface from a Linux machine over AVB. For our setup, we used a MOTU 24Ao. These instructions should work with any AVB-enabled audio interface, but we've only tested them with the MOTU, so they may not work with other interfaces.

For more information, see the full guide.

This guide was authored by April Hsu and Sureel Shah.

Requirements

This guide assumes that you are using the same setup as us: a Linux machine running Ubuntu 20.04 with 5.15.0-67-generic as the kernel version, an Intel i210 Ethernet Adapter installed in said machine, a MOTU 24Ao, and a Netgear network switch (the computer, MOTU, and Netgear are all on the same Ethernet network). That said, these steps can probably be generalized to other setups, but the i210 card is absolutely necessary.

As an additional note, as you follow the below steps, there may be packages you’ll need to download in addition to whatever we tell you to install.

Setup Instructions

  1. Set up a subnet for the computer/i210, MOTU, and Netgear via the Netgear web interface
  2. Open a terminal and run ifconfig
  3. Find the MAC address and interface name of your i210 network card
  4. Download and open wireshark
  5. Run a packet capture on your i210 card and filter for MAAP announce messages
  6. Select one from the MOTU and you should get something that resembles the below picture:
    Wireshark Packet Capture
  7. Run git clone https://github.com/Drumfix/avb4linux.git
  8. Open kernel_module/igb/avb-config.h from the downloaded repository and edit the values of indicated MAC addresses, making sure to keep the “ul” at the end of the addresses (OWN_MAC is the i210, AVB_DEVICE_SOURCE_MAC is what’s circled in red in the picture above, and AVB_DEVICE_TALKER_MAC_BASE is what’s circled in green in the same picture)
  9. Open .gitmodules and replace the url listed with this instead: https://github.com/jdkoftinoff/jdksavdecc-c.git 
  10. In the terminal, navigate to the AVB4Linux directory
  11. Run git submodules sync
  12. Run git submodules init
  13. Run git submodules update
  14. Follow the rest of the installation instructions listed in the repository’s README (start with compiling the jdksavdecc library)
  15. On the MOTU web interface, make sure there’s at least one input and output stream (the routing is up to you, but the MOTU should be able to receive audio even without the routing set up)
  16. You should be set to run AVB4Linux now, and to do so, you can just follow the instructions on the README 
  17. If everything is set up correctly and your MOTU is receiving audio (naturally, make sure you’re playing some sort of audio on your computer first), you should see a device listed as “AVB” and flickering blue bars under some of your analog outputs:

 Motu24Ao Showing AVB Listed

As a final note, AVB4Linux works with additional MOTUs added to the network. To stream audio to a specific MOTU, just change AVB_DEVICE_SOURCE_MAC and AVB_DEVICE_TALKER_MAC_BASE MAC in avb-config.h (you can find them using the same process as before). However, when we had two MOTUs on the same network and tried streaming audio to one of them, the other would also receive the audio; if you experience the same, then you don’t really need to bother with changing the MAC addresses in avb-config.h. Additionally, if you only want one MOTU to receive audio, simply set the input connections of the MOTU(s) you don’t want receiving any audio to “None” in the MOTU web interface:

MOTU Setup

View the Full Guide