Installation Guide for the Phonic Helix 24mkII on Xubuntu 7.10 - From scratch (deprecated)

For generic and up-to-date installation documentation, please see http://subversion.ffado.org/wiki/InstallingFfadoFromSource.

This post is no longer needed, since FFADO has fallback discovery of the Phonic Helix MKII from FFADO RC2

FFADO for Phonic Helix 24mkII on Xubuntu 7.10.
Testet on a P4 2.4Ghz single core with 768MB of 2100DDR RAM (266Mhz) and a VIA VT6306 ohci1394 chipset PCI card.

  1. Install realtime kernel:

    $ sudo apt-get install linux-headers-2.6.22-14-rt linux-image-2.6.22-14-rt linux-restricted-modules-2.6.22-14-rt linux-ubuntu-modules-2.6.22-14-rt
    $ sudo reboot

  2. Install ubuntu studio through synatic (Don't think this is necessary. Just nice to have):

    $ sudo apt-get install ubuntustudio-audio

  3. Install subversion (SVN) This is needed download of some of the newest version not yet available as .deb packages:

    $ sudo apt-get install subversion

  4. Install c++ compiler (You'll probaly need the xubuntu installation CDROM for this):

    $ sudo apt-get install g++

  5. Install libs and tools needed for compiling drivers etc.:

    $ sudo apt-get install autoconf automake libtool libxml2-dev libcap-dev libasound2-dev libxml++2.6-dev libdbus-1-dev libexpat1-dev liblo-dev sconspython-qt4 python-qt4-dev docbook-utils pyqt-tools

  6. Install libraw1394 from SVN:

    $ svn co svn://svn.linux1394.org/libraw1394/trunk
    $ cd libraw1394/trunk
    $ sh autogen.sh
    $ autoreconf -f -i -s
    $ ./configure
    $ make
    $ sudo make install
    $ sudo mknod -m666 /dev/raw1394 c 171 0

  7. Install musical transportation standard iec61883 library from SVN:

    $ svn checkout svn://svn.linux1394.org/libiec61883/trunk/ libiec61883
    $ cd libiec61883
    $ sh autogen.sh
    $ autoreconf -f -i -s
    $ ./configure
    $ make
    $ sudo make install

  8. Finally Install the FFADO driver from SVN:

    $ svn co http://subversion.ffado.org/ffado/trunk libffado
    $ scons -h
    $ scons
    $ sudo scons install
    (Disregard scons errors like: "Exception exceptions.TypeError: TypeError("'NoneType' object is not callable",)")

  9. To make sure jackd works with new ffado, Install Jackd from SVN:

    $ svn co http://subversion.jackaudio.org/jack/trunk/jack
    $ cd jack
    $ sh autogen.sh
    $ ./configure --prefix=/usr
    $ make
    $ sudo make install

  10. Install QJackCTL (if you like to have a graphical gui) from SVN

    $ sudo apt-get install cvs
    $ sudo apt-get install libqt4-dev (This install almost 80mb of required packages, puh)
    $ cvs -d:pserver:anonymous@qjackctl.cvs.sourceforge.net:/cvsroot/qjackctl login
    Enter blank password
    $ cvs -z3 -d:pserver:anonymous@qjackctl.cvs.sourceforge.net:/cvsroot/qjackctl co qjackctl
    $ cd qjackctl
    $ make -f Makefile.cvs
    $ ./configure --prefix=/usr
    $ make
    $ sudo make install

  11. Make it possible to start jackd in RealTme:

    $ sudo vi /etc/security/limits.conf
    • Add following 3 lines:
      * - rtprio 99
      * - nice -10
      * - memlock 5120000
    • Save and exit VI
    • You'll need to logout and login again for that to take effect.

  12. Make sure /dev/raw1394 exists, otherwise create it again by

    $ sudo mknod -m666 /dev/raw1394 c 171 0

  13. Configure the correct rights for /dev/raw1394, so your normal unprivilledge user can access it. This might introduce a system security risk, but i know no other way:

    $ sudo vi /etc/udev/rules.d/40-permissions.rules
    • locate line containing: KERNEL=="raw1394", GROUP="disk"
    • add: , MODE="0666"
    • so it looks like: KERNEL=="raw1394", GROUP="disk", MODE="0666"
    • save and exit VI


    $ sudo /etc/init.d/udev restart

Now you should be good to go!! start up qjackctl and choose firewire as the backend, realtime and priority of 70

Other interesting links might be:
http://tapas.affenbande.org/wordpress/?page_id=40
http://alsa-project.org/main/index.php/Low_latency_howto

Comments

The test utility 'test-ffado Discover' will indicate some success with finding input and output plugs, and then we get some 'send oops' and a lot of 'Warning' beginning with 'Warning (avc_generic.cpp)[ 262] fire: no response'.

I will gladly submit debug info to an appropriate place if you developers feel it might help the project, but I think it could be just a bit of confusion on my end.

I've basically followed your instructions here, nbz, with a few variants:

In Step 5, I believe these were just typos regarding the libraries 'liblo0-dev' 'scons' and 'python-qt4'; those were what was installed.

In Steps 6 and 7, I used 'sudo checkinstall -D' to first create un-installable packages in place of 'sudo make install'.

In Step 9, I changed 'Model ID' to match what was found using 'gscanbus' (0x00060000), and 'Model Name' to "Helix 18mkII".

I found that jackd could not locate the libffado.so object until I issued the command 'sudo ln -s /usr/local/lib/libffado.so /usr/lib/libffado.so'. This leads me to wonder why we're only passing '--prefix=/usr' to './configure' in some of these steps?

I noticed in another topic here that another person was having trouble when two versions of the same library were present in the system. In my system, there are still present the following versions:

libraw1394-8 1.2.1-3build1
libiec61883-0 1.1.0-2ubuntu2
libavc1394-0 0.5.3-1build1

In addition, there are what I've added:

libraw1394 1.3.0-179 (checkinstall)
libiec61883 1.1.1-80 (checkinstall)
libavc1394 0.5.3-76 (make install)

Again, these all seem to end up in /usr/local/lib where the former are in /usr/lib.

OK, before I go any further, can anyone please offer clarification on which libraries should be present, and where?

Thank you for your time and efforts on this project!

edit: I haven't changed a thing, but the mixer is working. All inputs and outputs show up in qjackctl, and I can record/playback in Ardour :)

edit 2: I seem to have no trouble in the system with two versions of the libraries installed. Issuing 'ldd /usr/local/lib/libffado.so' indicates that libffado was built against the intended versions. Cool!