Using the FireWire M-AUDIO 410 on Linux

Why?

As a growing musician, I wanted to get into digital multitrack recordings. In short, with the audio equipment I had, I settled on FireWire due to previous bad experiences with cheap USB-B audio mixers. FireWire interfaces with multitrack support were bargains, while still offering high-quality recordings that rivals comparitively priced USB interfaces.

How Did I Do It?

As someone with a Macbook Pro, native FireWire audio support was unfortunately removed as of Version 13, Ventura. However, an easy way to get around this limitation is to dualboot Windows or Linux via Bootcamp on Intel Macs, or through a virtual machine on Apple Silicon Macs, or simply staying on an older version of Mac OS.


In my use case, I dualboot Linux, to stay away from Windows dependency. I specifically chose Debian due to it’s age, and perceived stability on a Mac Mini (2012) laying around. The Mac Mini I chose has a native FireWire 800 port. However, any Mac with a Thunderbolt 3 (USB-C with a thunderbolt symbol) port will also work with the proper adapters assembled in this stack in this order, as they are natively recognized on Linux, Windows, and on old versions of Mac OS:

  • USB-C Port (Must be Thunderbolt compatible)
  • Apple Thunderbolt 3 to Thunderbolt 2 Adapter (this is commonly confused with Mini-DisplayPort. Make sure to see the thunderbolt symbol)
  • Apple Thunderbolt 2 to FireWire 800 Adapter
  • FireWire 800 to FireWire 400 (6-Pin) cable (this cable is easier to find rather than looking for a standalone adapter)

These cables are not cheap, but is the price you pay for compatibility for the more affordable hardware. On Windows, FireWire drivers can be downloaded here, and on Mac OS here to properly use this interface in your preferred Digital Audio Workstation of choice.

A direct download of the M-AUDIO 410 drivers from the M-AUDIO website can be obtained here, in case the website goes offline. FireWire drivers will be supported in Linux until at least 2029.

Detailed Linux Setup:

On Linux, you need to be sure your Linux distribution has the following utilities installed using Synaptic Package Manager or the Terminal.

sudo apt install jackd2 jackd2-firewire ffado-mixer-qt4 qjackctl

In order for my device to be used on Linux for recording, I had to use the JACK Audio interface. To use this, I had to disable these drivers using the Terminal and create a file to blacklist these drivers from being loaded onto the default ALSA audio driver stack and messing with our default audio settings on Linux.

sudo nano /etc/modprobe.d/blacklist.conf

For the M-AUDIO 410 specifically, I had to whitelist this driver, as the blue LED would flash and not be recognized by the Mac’s FireWire port upon set up and reboot otherwise.

snd-bebob

When we are finished, save our modified file. It will be created and saved on our Linux partition. When this file is saved, in the Terminal, update your initramfs image. This will write our changes into the kernal for our next machine start up. You should only have to do this once:

sudo update-initramfs -u

Next, shutdown and reboot your machine. Before you turn your machine back on, you MUST plug in your FireWire device in order to have it recognized by our installed drivers. In my case, my device turned on with a solid blue LED, signalling it was recognized, and stable on my machine. We are now free to plug in hardware to the M-AUDIO 410.

Recording Audio:

To set up JACK, next, open the application we installed called: Qtjackctl. This GUI application allows us to set up our inputs and outputs on our device. We will be greeted with this set of screens. Keep in mind that things will not be set up properly on first launch.

Next, we need to set up the M-AUDIO 410 to recognize our inputs and outputs. First we go to “Setup” to make sure our device is configured. Make sure it looks like this:

Note, the M-AUDIO 410 can record audio up to a 96000khz sample rate, but on my Linux machine, I was only able to set it to a 48000khz sample rate upon further testing. Install, and run this Python tool to test for any other computer bottlenecks when recording Linux audio.

Miscellaneous PipeWire Configurations:

In 2024, PipeWire is the latest and most hassle-free way to easily listen to audio playback. To set the sample rate of Pipewire to 48000khz to match our audio interface, you can edit and set this line:

line default.clock.rate = 48000

 in this configuration file through “nano”.

~/.config/pipewire/pipewire.conf

If you want to change the sample rate instantly, you can use the command:

 pw-metadata -n settings 0 clock.force-rate 48000

However, this change is not permanent. To make it permanent, you can un-hash and:

edit default.clock.rateline

inside this configuration file (I personally edit and save through “nano”:

/etc/pipewire/pipewire.conf

You must reboot your machine to notice any changes. In my testing through FireWire devices, I could not achieve a sample rate higher than 48000khz, as it crashes the Qtjackctl interface on startup.

Setting Up Our Feeds:

Next, we need to set up our Patchbay to get the correct feeds. For my example, recording a hardware synthesizer, I needed:

  • 2 Line Inputs (For Stereo Image)
  • 2 Line Outputs (For Stereo Audio Feed through external speakers)

To recognize audio input, I currently rely on native Linux audio recorders such as Ardour, and eventually settled on REAPER, because JACK audio was accessible out of the box, as well as its lightweight filesize. I could not get Audacity (.deb) to recognize the M-AUDIO. The Snap distribution of FL Studio also does not work, or recognize any FireWire devices.

JACK allows patches to be configured through Qtjackctl’s “Patchbay” and “Graph”. Before we set it up for the first time, we must open REAPER. Stay in Qtjackctl and set up your “Patchbay” to look like this, then activate it, and then press “Start” on Qtjackctl:

Feel free to play around with this and save our finished file so it can be easily loaded on the next Qtjackctl relaunch. When REAPER is opened and configured to run JACK audio in the settings, our Qtjackctl should finally look like this to match my example:

This will allow our inputs to be captured by Reaper, and simultaneously heard by our external speakers. Note that external speakers are plugged into the headphone jack (3.5mm input) on our computer. Also, our 2 stereo LINE outputs are plugged into our external speakers as its own input via RCA on the external speakers. SPDIF or optical audio can be used as an alternative to our LINE output setup. Our Patchbay set up should also account for this.

In REAPER, we are greeted with a blank project. Create a New Track and set the input to Stereo. It should look similar to this for the 1/2 tracks input:

firewire_pcm: (numberstring...) LineIn_L_In (Input 1) 
firewire_pcm: (numberstring...) LineIn_R_In (Input 2)

In the REAPER Master Track, we must create a Master Output. This is so our external speakers can hear and play our audio as we play. It should look like this if done correctly. Please feel free to play around with this set up to suit your needs.

 Output 1: Multiple Connections / Output 2: Multiple Connections

Results:

After these steps, everything worked flawlessly and I could record, and play my hardware, while simultaneously hearing it at the same time. Again, feel free to play around with Qtjackctl and REAPER to suit your specific needs with the M-AUDIO 410.

References:

Linux Firewire Documentation
FireWire Audio Interfaces on Linux – VENNSTONE of “Linux Audio”


Leave a Reply

Your email address will not be published. Required fields are marked *