The last time I discussed my ongoing project to switch back to using Linux fully in my lab/home office, it was to apologize for not having much interesting to share since my initial travails getting everything installed on my Mac Pro. Rather than being a complete bum today after I decided to skip tonight’s podcast episode, I figured I’d spend at least a little bit working on the next big task on my list–namely getting my mixer working under Linux.
I have an Alesis MultiMix 8 FireWire, a piece of audio gear no longer being produced. Early on I found the ffado project which aims to support firewire devices under Linux. I even found and bookmarked a page there claiming the firewire versions of the MuliMix boards do work with ffado despite Alesis’ lack of explicit support.
I had previously installed the Ubuntu Studio meta package on my stock Kubuntu 10.4 system. It included pretty recent builds of jack, a low level audio driver and utility, and ffado, the two pieces minimally necessary for being able to capture and playback audio in Audacity and presumably other programs with my mixer. At first I followed the recommended compilation instructions linked to from that first page. The ffado build stalled out on a missing dependency which seemed odd to me as I should have had everything necessary with the pre-compiled libffado installed for Ubuntu Studio.
I decided I’d dig around and see if there was a simple permissions or configuration issue needing sorting to get the pre-built versions of ffado and jack working together. I found several recommended fixes, none of which helped on their own but are good to check and fix if you are also trying to get a firewire mixer working.
- Find the Ubuntu Studio Controls in your desktop menuing system. In KDE, you can simply search for it. There is a simple checkbox for enabling raw1394. Reboot after you make and save this change.
- Add yourself to the “audio”, “video”, “disk” and “plugdev” groups. This will make sure you have read and write permissions to the various 1394 based devices under udevfs. Either do this before rebooting for the raw 1394 change or log out and back in for the group change to take effect normally.
- Make sure you have a /dev/raw1394 entry. If not, install libraw1394 with your package manager.
- Grep the files in /lib/udev/rules for the string “raw1394″. If there is no reference to that text in any of those rule files, add a file named 50-raw-firewire.rules with the line
You’ll need to restart udevfs after making this change. A simple reboot will also do the trick.
- Check in /etc/security/limits.conf for a line like
@audio – rtprio 99
This gives members of the audio group sufficient privilege to make use of the real time features of the kernel. It isn’t strictly necessary, I think, to get a mixer working but without it, you may need to disable the real time option in jack. On my system, the audio group already had this privilege.
There are several useful commands to diagnose your device, ffado, and jack. modprobe -l or lsmod will tell you if the various 1394 modules are loaded. You can grep specifically for “1394” to filter the output down to these. lspci should have some information about your OHCI host, that is the chip set in your computer to which the firewire devices connect and communicate. Mine is a TI which works but knowing the host’s chipset may help in sieving through the ffado and jack forums. ffado has its own diagnostic tools, including ffado-diag which outputs detailed info about the buses on your system and ffado-test which takes a number of commands. In particular, the ListDevices command will tell you if ffado sees your mixer (make sure it is turned on when running ffado-test).
Ultimately, I could not get the pre-built packages working so went back to trying to compile from source. The missing dependency turned out to be libconfig++, a simple “sudo apt-get libconfig++8-dev” cleared that up. With the next step, compiling jack from source, I noticed the output of the config step said alsa was not enabled. Adding the –enable-alsa flag to the configure script didn’t help. I had to install the libasound development package, then configure reported that alsa support would compile. Finishing out the compile as instructed worked without error.
I didn’t have any luck getting the recommended ffado-dbus-server running but it isn’t necessary for jack. Once I completed my compile and install of jack, I was able to run jackd -dfirewire successfully. As a more convienent way to start and stop jack as needed, I ran the JACK Control application from my application menus. If you open up the preferences, there is an option to run it from the system tray so you can right click and start jack after turning on your mixer and stop it before turning it off when you are done. (My mixer gets rather warm, I don’t like to run it any more than necessary for recording and editing.)
As you can imagine, I am thrilled to have my beloved studio gear working properly. I did some quick test recording in Audacity and everything appears to work a treat. Of course, now I have to learn Audacity and the other audio programs under Linux that can make use of my now working hardware. I won’t say that my next podcast episode will be produced entirely under Linux but now I can tackle that much easier and more enjoyable challenge.