Step by step guide to install FFADO and JACK in Ubuntu 12.04LTS
The idea of this step by step is to make things easy for those that are arriving to Linux - FFADO world.
For those impatient, you can use the scripts that I uploaded to github
- Install FFADO Script: Steps 3 to 6
- Install and configure JACK for everyday use Script: Steps 7 to 9
Intro
Nowadays (May 13') stock Ubuntu includes decently up-to-date packages for FFADO and JACK, so we will take advantge of this by installing default packages. I tested this steps on my kit:
My Kit:
HP Pavillion DV2000 laptop 4GB RAM Intel T7600 2.33Hz Core2Duo Intel 945GM Video controller Internal Ricoh Co Ltd R5C832 IEEE 1394 Controller MOTU Traveler MK3 (1.02 Firmware) Ubuntu 12.04.2 LTS
Steps:
1. Install Ubuntu 12.04 (This should work for Ubuntu Studio 12.04 as well)
2. Install all updates
sudo apt-get update sudo apt-get upgrade
3. Install a Low Latency kernel.
A low latency kernel should be enough, but for professional results use a Real Time patched kernel...
sudo apt-get install linux-lowlatency
4. Install ffado drivers and accompanying libraries.
sudo apt-get install libffado2 ffado-tools ffado-mixer-qt4
5. Add yourself to the audio group.
sudo usermod -a -G audio `whoami`
6. Reboot to your low latency kernel
Do a reboot and be sure to select the lowlatency kernel when booting (It could be on the previous versions menu)
Now you should have FFADO installed and working. You can check doing a
ffado-test ListDevices
Your interface should be listed under a 1394 PORT. If nothing happens, try to power-cycle your interface.
If everything is fine, now we need to install JACK in order to make applications able to send and recieve audio from our interface.
7. Install JACK (and the pulseaudio jack module)
sudo apt-get install jack jackd2 qjackctl pulseaudio-module-jack
JACK now should be installed and it can be managed via the qjackctl app. Open it and make sure that you select the firewire driver and the Real Time option. You can tweak the multiple parameters to get the minimal latency as long you avoid xruns. (Sampling frecuency, priority, buffers, etc). I used the following config and worked fine even without a lowlatency kernel!
- Driver = firewire
- Realtime (checked)
- Priority = default
- Frames/Period = 1024
- Sample Rate = 96000
- Periods/Buffer = 3
- Port Maximum = 256
- Interface = default
- Start Delay = 2
Click the start button and pray for no xruns. Now you should be able to record and play audio with your interface! (Using jack-able apps like ardour)
The following steps are not necessary, but are useful for those that want to use JACK for everyday audio playback. For this I used Pulseaudio as shown in http://trac.jackaudio.org/wiki/WalkThrough/User/PulseOnJack .
8. Redirect ALSA audio to Pulseaudio
Edit (or create) the /etc/asound.conf file and put this
pcm.pulse { type pulse } ctl.pulse { type pulse } pcm.!default { type pulse } ctl.!default { type pulse }
9. Redirect automatically pulseaudio sound when JACK starts
Now we can configure JACK to redirect pulseaudio audio sinks to JACK when started. For this, create a script file (I called it pulse-jack-post-start.sh) with the following:
#!/bin/bash #set jack_out and jack_in as default sink and source respectively #this redirects any new sound source (aka "sounds") and input to jack pacmd set-default-sink jack_out pacmd set-default-source jack_in #let's get all the active sinks inputs=$(pacmd list-sink-inputs | grep index | awk '{print $2}') #let's move current active sinks to jack_out for i in $inputs do pacmd move-sink-input $i jack_out &> /dev/null done
Make sure that you make the file executable
chmod +x pulse-jack-post-start.sh
Now, open the JACK config app and in Setup->Options enable the "Script after start" option and select the pulse-jack-post-start file. This will redirect the audio to JACK when started, making it ready for everyday use... (hopefully!)
Guides from which I shamelessly ripped off information: