This page is now obsolete. The content has been re-structured and extended and is now available as InstallingFfadoFromSource.

Compiling FFADO and Jack

It's very easy:

FFADO

  • get ffado SVN.
  • compile it: $ scons PREFIX=/your/prefix/here DEBUG=1
    Note

    /your/prefix/here usually is /usr

    Note

    DEBUG=0 builds a non-debug build, but don't do that unless you're very sure. we can't help you if you do and have issues.

    DEBUG=1 is the default, so if you don't specify a DEBUG option, a debug build is automatically built.

  • install it: $ scons install
    Note

    run as root if needed, or use 'sudo'

    Note

    If you get the following error, don't panic. This is some obscure scons problem that doesn't affect the build.

    Exception exceptions.TypeError: TypeError("'NoneType' object is not callable",) 
    in <bound method Popen3.__del__ of <popen2.Popen3 instance at 0x838d42c>> ignored
    
    Note

    libffado can coexist with the older libfreebob. If you don't want to upgrade your kernel you can keep using freebob to do the streaming, and use libffado for device control (e.g. mixer control)

Testing the installation

$ cd libffado
$ tests/test-ffado Discover

jack

  • get jackd SVN
  • prepare it:
       $ sh autogen.sh
    
  • configure the build
       $ ./configure --prefix=/your/prefix/here
    
    check for the line:
       | Build with new FireWire (FFADO) support............... : true
    
    if it says 'false' libffado was not found by the jack configure step which means it wasn't installed correctly
  • build jack
       $ make
    
  • install jack
       $ make install
    
    again, run as root

Testing

run jack with the 'firewire' backend:

  $ jackd -R -d firewire

note that the -h option gives help:

'jackd -h' for help on jackd in general

'jackd -d firewire -h' for help on the firewire backend

the -vX (X=0 to 7) controls the verbosity of ffado. for initial tests you might want to run with -v5:

  $ jackd -R -d firewire -v5

If you report errors, you have to use a DEBUG=1 build and use -v6. You can capture the debug output as follows:

  $ jackd -R -d firewire -v6 2> log

The -R option to jack specifies realtime thread priority operation, and is absolutely essential. If you have a badly configured system you might not have the permission to run jack in realtime mode. Please google on how to solve this (hint: jack limits.conf).

A second note is that on some distributions you have to make sure your user has permission to access the /dev/raw1394 device. You also have to make sure the raw1394 module is loaded.

google, the FreeBoB site, the FFADO development site and the FFADO main site are your friends. Altough some of that documentation can be outdated and some trial and error might be needed. If you find outdated documentation please report it to the maintainers (us for freebob and ffado sites). On the FFADO development wiki you can edit stuff yourself if you login with the username you create on the main FFADO site. Please contribute, even if you're not 100% sure about something (you can always mention you're not sure).

Greets,

Pieter