Building Jack For FFADO

Warning

Before attempting to build and install JACK from source, make sure you understand how to avoid parallel JACK installations, or you will very likely break stuff and get very very frustrated.

The following instructions assume that you plan to overwrite your existing jack files in /usr.

The first step is obtaining the source:

$ svn co http://subversion.jackaudio.org/jack/trunk/jack jack

Before you can compile JACK, you need to make sure all its dependencies are there. In addition to those packages you installed for FFADO, make sure you have the autotools installed (another automated build system, same as scons for FFADO). If your distro does not have an autotools meta-package: the single tools are autoheader, autoconf, automake, libtoolize, make.

Now we will configure, compile and install the new jackd. We’ll need to specify a default temporary directory. For performance reasons, this should be a special in-memory file system such as /dev/shm. If you don't have it, you can probably use /tmp, but make sure it's not a journalling filesystem like ext3 or reiserfs - those will cause problems.

If you already have jackd installed do

jackd --version
jackd version 0.112.0 tmpdir /dev/shm protocol 23

to see which temporary directory is currently in use - it's easiest to just re-use it.

$ cd jack
$ ./autogen.sh
$ ./configure --prefix=YOUR_PREFIX --with-default-tmpdir=/dev/shm
[copious output]
Note

If this step fails with the error "libtoolize not found", make sure you have libtool installed.

If this step fails with the error "expected specifier-qualifier-list before 'pthread_rwlock_t'", make sure to add --enable-ancient-libc to the configure arguments.

At the end of the configure phase you should see something like this:

jack-audio-connection-kit 0.111.0 :

| Build with ALSA support............................... : true
| Build with old FireWire (FreeBob) support............. : true
| Build with new FireWire (FFADO) support............... : true
| Build with OSS support................................ : true
| Build with Sun audio support.......................... : false
| Build with CoreAudio support.......................... : false
| Build with PortAudio support.......................... : false
| Build with NetJack support............................ : true
...

If the output indicates 'false' for FireWire (FFADO) support, there are two options:

  1. You did install ffado into /usr/local but pkg-config only checks /usr/lib/pkgconfig. Try to run the above as "PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure"
  2. there is a problem with your libffado installation. In this case, fix your libffado installation first.

Now we can proceed to the make & make install steps:

$ make
[more output]

As root:

$ make install

It is a good idea to run

$ ldconfig

(as root also) to update the shared library cache.

You should have it all now.