FFADO 2.0.0 released

The FFADO team is proud and happy to announce the release of FFADO 2.0.0.

This is a source-only release: libffado-2.0.0.tgz.

As the release candidates have been around for almost one year now without a significant amount of bug reports we feel confident that the current code-base has matured. Around the end of november the 1000-th device was registered as being used with FFADO, which seemed to be a nice number to triggered the release (aside from the fact that no major bugs have been reported over the last 6 months).

Furthermore on December 2 the Linux kernel version 2.6.32 has been released. This version fixes the new kernel FireWire drivers such that they are compatible with FFADO. So once the distributions pick up this kernel the old/new kernel stack confusion should be history.

Thanks go out to the vendors that provided us with gear to support for the 2.0 release: Echo Digital Audio, Edirol, Ego Systems Inc, Focusrite, Mackie and Terratec. Kudos for their early-bird support!

Special thanks also go to BridgeCo and TC Applied for providing us with their development platforms and for helping with vendor contacts. Their support makes that FFADO covers the most widely used platforms for FireWire audio and that we can quickly implement support for new devices.

Looking ahead to the 2.1 release we can announce that we have implemented (basic) support for additional devices from Focusrite, Behringer, Stanton and TC Electronic. We plan to move to beta-testing 2.1 fairly soon as development on it has been ongoing for more than a year now. Additionally, work is being done on the RME devices, but its not yet known when that will be finished. Support for some other vendors is in the pipeline, so stay tuned for more announcements.

A second major development is the move of the streaming infrastructure to kernel space. A kernel-space implementation will bring significant improvements with respect to reliability and efficiency. Furthermore it will allow to expose an ALSA interface, meaning that the scope of FireWire audio on Linux is extended significantly. Thanks to the Google Summer of Code and the Linux Foundation, work on this has been done during the summer. The code is not yet ready for use, but things are moving.

libffado?

This release provides the libffado shared library that provides a unified programming interface to configure and use all supported devices. Currently this library is used by the ‘firewire’ backend of the jack audio connection kit sound server (http://jackaudio.org). This backend provides audio and midi support, and is available both in jackd and it’s multiprocessor variant jackdmp (aka jack2). (note: At the moment there is no direct support for ALSA nor for pulseaudio, but these systems can use jack.)

Access to the device internal configuration (e,g, internal mixer) is exposed using the ffado-dbus-server daemon. This daemon exposes the configurable parameters of all detected devices through DBUS. The ffadomixer application in support/mixer presents a basic GUI to control these parameters (only for officially supported devices).

Features

  • 24-bit audio input/output (unlimited number of channels)
  • support for all sample rates a device supports
  • MIDI input/output (unlimited number of channels)
  • Support for S/PDIF and ADAT/SMUX I/O
  • Support for external sync (e.g. Wordclock)
  • Internal mixer and device control support for all officially supported devices (NOTE: no support for internal effects DSP)
  • Support for device aggregation (limited to devices on the same bus that are synced externally)

Usage feedback

This release includes an option where you can identify your device as being used on Linux with FFADO. You will be asked whether you want to submit your device information to ffado.org. The reason this feature is present is to convince the supportive vendors that their cooperation pays off, and to convince the other vendors that Linux users are a market. A secondary advantage is that we can keep track of what versions are used by how many people.

Therefore we would like to ask everyone to perform this registration. No personal data is transmitted (except for an optional email address). The IP address of the submitter is saved to help recovery in case the database is bombed with bogus data. However the address is first processed by one-way MD5 hashing it, such that it is not recoverable and privacy is secured. This usage information is of enormous importance for future device support. The aggregated statistics are available online: http://www.ffado.org/?q=usage.

Changelog

RC2 => 2.0.0

  • Fix reversed Terratec Phase88 front/back switch
  • Fix format string warnings
  • Fix config file bug
  • Free FCP listener when something goes wrong
  • Compiler warning fixes

RC1 => RC2

  • Various packaging improvements and cosmetic fixes.
  • Improved the Edirol FA101 mixer
  • While the streaming engine is running, prevent mixer changes that result in aborted streaming
  • Add status bar logging to the mixer window
  • Install a service-file if possible
  • Add command rate control for the Saffire devices to reduce the issues with mixer actions messing up audio.
  • Fix Terratec Phase88 mixer
  • Implement mixer support for the MOTU UltraLite
  • Improve mixer support for the MOTU 896HD
  • Add a minimum for the packetsize parameter for very low channel-count devices
  • Fix handling of MIDI 2x and 3x mode
  • Improve the jitter performance of the timestamping
  • Reduce CPU usage
  • Fix the bug that prevented jackd from exiting freewheeling mode
  • Introduce transmit prebuffering to increase reliability with small period sizes
  • MOTU: Fix bug related to disabled (unused) audio channels
  • Introduce support for driver parameters in the config file
  • Ensure that the order specified in the specification string when aggregating devices is honored.
  • Ensure that libffado.so is properly versioned (SONAME) and installed
  • Add a firmware version check for ECHO Fireworks based devices
  • Add a firmware version check for Terratec Phase88 devices
  • By default the library is compiled with debugging turned off

Beta7 => RC1

  • Various packaging improvements and fixes.
  • Install both the qt3 and the qt4 mixer when the needed tools are available.
  • Add ffado-diag to the installed tools
  • Disable the nickname control for devices that don’t support it
  • Various QT4 mixer improvements
  • Increase efficiency while streaming
  • Fix some CTR wraparound bugs
  • Fix bebob fallback discovery
  • Fix AV/C based sync source selection
  • Fix Saffire Pro sync source selection
  • Fix Saffire Pro and Saffire (LE) samplerate selection
  • Fix jack freewheeling bug
  • Add workaround for Edirol FA-101 firmware race condition

Beta6 => Beta7

  • General code cleanup
  • Improve mixers of various devices (especially the MOTU and Edirol mixers)
  • Port mixers to QT4 for better usability (QT3 mixers still work but are deprecated)
  • Implement support for ECHO session blocks
  • Fix Focusrite Saffire Pro clock source selection
  • Implement configuration file mechanism to ease run-time configuration
  • Improve the behavior when confronted with dying iso transmit handlers
  • Reset transmit buffer rate DLL on XRUN.
  • Improve bus reset handling
  • Improve reliability of ISO streaming on various host controllers
  • Fix discovery issues with DM1x00 based devices (especially Edirol devices)
  • Remove the dependency on libavc1394 by implementing our own FCP transaction support
  • Fix float to int conversion dynamic range bug in the AMDTP StreamProcessor

Beta5 => Beta6

  • implement discovery fallback (tries generic support when encountering an unsupported device)
  • fix gcc-4.3 compilation issues
  • take CC and CXX from the environment if defined there
  • implement separate mixer for Phase X24 and Phase 24
  • fix saffire mixer
  • fix cache issues
  • fix clock source segfault
  • fix ffadomixer python 2.4 compatibility
  • use FocusRite vendor-specific clock selection for the Saffire PRO devices

Beta4 => Beta5

  • fix BeBoB flooding issues
  • numerous mixer improvements
  • fix threading issues
  • remove all unused code
  • fix clocksource selection bugs
  • fix 64bit compilation issue
  • improve library behavior in error situations
  • improve shutdown of MOTU interfaces
  • make dbus server handle busresets cleanly

Beta3 => Beta4

  • fix bugs in BeBoB caching code
  • extend Saffire PRO26 mixer
  • various mixer improvements
  • switch back to BeBoB discovery code for FA-101

Beta2 => Beta3

  • fix memory corruption bug in saffire LE mixer code
  • various debugging code improvements
  • create config save directory if not present.
  • change registration window looks.
  • various MOTU mixer improvements
  • workaround MOTU not setting a vendor/model name
  • one window for all mixers, tabbed.
  • fix CTR reconstruction bug
  • Add a generic part for each mixer controlling the nickname and the clocksource.
  • Rework/resort the initialization of mixer-widgets…
  • fix issues in timestamp usage
  • re-enable late transmission
  • switched off all extended debugging features by default

Beta1 => Beta2

  • Correct issues in the README file
  • Remove unneeded ALSA dependency
  • Several mixer improvements
  • Implement usage statistics gathering

Building and Installing

Please refer to the README document in the package. Not doing so means taking a risk ;).