root/trunk/libffado/README

Revision 1052, 10.6 kB (checked in by ppalmers, 2 years ago)

remove alsa dependency. update readme file. add some extra stuff to ffado-diag.py

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 FFADO v2.x
2 ==========
3
4 The FFADO project aims to provide a free driver implemenation for FireWire
5 (IEEE1394, iLink) based (semi-) professional audio interfaces. The focus of
6 the project are on audio/music production rather than consumer audio. This
7 means that, although we intend to supported all features at some point,
8 consumer features are considered less important. The most obvious example of
9 a consumer feature is AC3/DTS passthrough support, which is unsupported at
10 the moment.
11
12 This package provides the libffado shared library that provides a unified
13 programming interface to configure and use all supported devices. Currently
14 this library is used by the 'firewire' backends of the jack audio connection
15 kit sound server (jackaudio.org). This backend provides audio and midi support,
16 and is available both in jackd and it's multiprocessor variant jackdmp.
17 (note: At the moment there is no support for ALSA nor for pulseaudio.)
18
19 Access to the device internal configuration (e,g, internal mixer) is exposed
20 using the ffado-dbus-server daemon. This daemon exposes the configurable
21 parameters of all detected devices through DBUS. The ffadomixer application in
22 support/mixer presents a GUI to control these parameters (only for officially
23 supported devices).
24
25 Features
26 --------
27 * 24-bit audio input/output (unlimited number of channels)
28 * supports for all samplerates a device supports
29 * MIDI input/output (unlimited number of channels)
30 * Support for S/PDIF and ADAT/SMUX I/O
31 * Internal mixer and device control support for all officially supported
32   devices (NOTE: no support for internal DSP)
33 * Support for device aggregation (limited to devices on the same bus)
34
35 Device Support
36 --------------
37
38 The devices officially supported are:
39 * ESI Quatafire 610
40 * Terratec Producer Phase 88
41 * Focusrite Saffire (original/white)
42 * Focusrite Saffire PRO10
43 * Focusrite Saffire PRO26
44 * ECHO AudioFire2
45 * ECHO AudioFire4
46 * Mackie Onyx Mixer FireWire expansion
47
48 The 'officially supported' label is only given to devices that fullfil the
49 following:
50 * at least one of the developers has the device
51 * the vendor provides development support (access to information)
52 * the device works
53
54 Through reverse-engineering the following devices will also work:
55 * MOTU traveller
56 * MOTU 828mkII
57 Note: the support for these devices is based on a significant reverse
58 engineering effort. This means that the developers had no support from the
59 device vendor, and this of course limits the extent to which problems can
60 be solved. You have been warned. Please do not buy devices for which support
61 is based upon reverse engineering, nor from vendors that are Linux-hostile
62 (e.g. MOTU). Value the support that some vendors provide and buy their
63 stuff. Check ffado.org for details. It can't be said enough: currently it is
64 extremely unwise to buy a MOTU device if you intend to use Linux.
65
66 The driver is written to provide generic support for all devices it might be
67 able to handle. This means that most devices based on the BridgeCo BeBoB or
68 the ECHO FireWorks platform will work, at least to a certain extent.
69
70 Devices that have been reported to (partially) work with the generic support:
71 * Presonus FireBox
72 * Presonus FirePod / FP10
73 * Focusrite Saffire LE
74 * ECHO AudioFire8
75 * ECHO AudioFire12
76
77 Usupported devices:
78 * Presonus FireStation
79 * Presonus FireStudio (all variants)
80 * TC Konnekt (all variants)
81 * Alesis devices
82 * Metric Halo devices
83 * RME Firewire devices
84
85 We constantly try to persuade vendors to help us extend our device support.
86
87 Dependencies
88 ------------
89
90 To build libffado you need several libraries. For all libraries a
91 version is provided which is a 'known good' version.  The first few
92 libraries it seems it is not necessary that the version must
93 match. The chances that it works also with an older versions are good:
94
95 libxml++2   (>= 2.13.0)
96
97 These libraries here should be at least the version listed:
98
99 libraw1394  (>= 1.3.0),  http://www.linux1394.org
100 libiec61883 (>= 1.1.0),  http://www.linux1394.org
101 libavc1394  (>= 0.5.3),  http://sourceforge.net/projects/libavc1394
102 dbus-1      (>= 1.0),    http://dbus.freedesktop.org
103
104 Currently only the jackd audio server is supported.
105
106 jackd (>= 0.109.12), http://jackaudio.org
107
108 Optionally, but recommended is that you install qjackctl:
109
110 qjackctl (>= 0.2.20.10), http://sourceforge.net/projects/qjackctl
111
112 To build the optional ffado device mixer control utility you also require:
113
114 Qt          (>= 3.0),     http://trolltech.com/products/qt
115 SIP         (>= 4.7.0),   http://www.riverbankcomputing.co.uk/sip/index.php
116 PyQt        (note below), http://www.riverbankcomputing.co.uk/pyqt/
117 dbus-python (>= 0.82.0),  http://dbus.freedesktop.org/releases/dbus-python/
118
119 The version of PyQt must be chosen to match the version of Qt in use.
120 For Qt 4.x use PyQt 4.x while for all other Qt versions from 1.43.
121
122 SIP is only required to compile PyQt.  If using a binary package of PyQt
123 SIP should not be needed.
124
125 How to build
126 ------------
127
128 Building the code is straight forward if PKG_CONFIG_PATH, LD_LIBRARY_PATH
129 and INCLUDE_PATH is correctly set up.
130
131 E.g on my system I have installed libraw1394, libiec61883 and libavc1394
132 under /usr/local:
133
134 $ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
135 $ export LD_LIBRARY_PATH=/usr/local/lib
136
137 If you want to build the release version you can do following:
138
139 $ scons
140 $ scons install
141
142 If you want some debug information (because something seems not
143 to work correctly) you can try to do following:
144
145 $ scons DEBUG=yes
146 $ scons install
147
148 NOTE: In order to build jackd with ffado support, you have
149 to install libffado before you build jackd. The backend to use in jackd is
150 firewire.
151
152 NOTE: the beta versions are distributed with debugging enabled by default.
153
154 DISTRIBUTION PACKAGERS NOTE: Please do not enable support for devices
155 if it is not on by default. If device support for a specific device
156 is not turned on by default by the developers, it means that it is not
157 ready yet. Most of the time it is placeholder code for future devices.
158
159 Running jackd
160 -------------
161
162 The easiest way to run this is using qjackctl. There are only minor
163 differences with the other backends, however you should change some
164 of the default values:
165 - The 'interface' field should contain only a number. This number is
166   the port number of the IEEE1394 host controller the audio device
167   is connected to. For most people this will be '0', but if you have
168   multiple controllers, you have to change this number.
169 - The 'Input channels' and 'Output channels' fields indicate if the
170   backend should provide capture and/or playback channels. If you set
171   these to 0, no channels are created. In order to enable capture and/or
172   playback, you have to set them to a nonzero value.
173 - It is recommended to change the 'periods/buffer' field to 3, especially
174   if you use low period sizes (=< 128)
175 - It is recommended to raise the RT priority to 70.
176
177 In order to get it running from the command line, you need to provide some
178 arguments to jackd.
179
180 Run
181
182 $ jackd -d firewire --help
183
184 to see the backend options. You can easily figure out how to set them using
185 the remarks given above (for qjackctl).
186
187 For the other aspects of jackd usage, consult the jackd documentation.
188
189 Here is a sample session (without realtime support enabled):
190
191     $ jackd -d firewire
192     no message buffer overruns
193     jackd 0.111.0
194     Copyright 2001-2005 Paul Davis and others.
195     jackd comes with ABSOLUTELY NO WARRANTY
196     This is free software, and you are welcome to redistribute it
197     under certain conditions; see the file COPYING for details
198    
199     JACK compiled with System V SHM support.
200     loading driver ..
201     3106528665:  (ffado.cpp)[  99] ffado_streaming_init: libffado 1.999.20 built Apr 26 2008 20:26:32
202     libiec61883 warning: Established connection on channel 0.
203     You may need to manually set the channel on the receiving node.
204     libiec61883 warning: Established connection on channel 1.
205     You may need to manually set the channel on the transmitting node.
206
207 (Note: you can safely ignore the libiec61883 warnings, they are normal.)
208
209 An important remark is that for good performance, one should always run jack
210 with the -R flag to enable realtime scheduling for critical threads:
211     $ jackd -R -d firewire
212
213 In case of problems
214 -------------------
215
216 First of all, check whether your problem is in fact a problem, and
217 whether it is a FFADO problem. The magic tool for this is google.
218
219 User support is a rather annoying occupation, especially since it sucks
220 time from developers that are not paid for developing, let alone for doing
221 user support. Please make sure that you have checked the following places:
222     http://www.ffado.org/
223     http://subversion.ffado.org/
224     http://www.google.com/
225       (the terms "ffado-devel" "ffado-user" or "freebob-user" work great)
226 Some might consider this a bit arrogant or "newbie-unfriendly", but personally
227 I (Pieter Palmers) consider this a matter of politeness towards the developers.
228
229 If you have tried to find a solution to your problem, but you couldn't find
230 one or are confused, don't hesitate to ask for help. The preferred way is by
231 signing up to the mailing list as described on http://www.ffado.org/?q=contact.
232
233 Writing a bug report
234 --------------------
235
236 Note that the more effort you put in your bug report, the more effort we
237 will put into helping you.
238
239 Make sure you have compiled a DEBUG=yes version of
240 libffado. If not there is no way we can trace the problem.
241
242 When reporting a problem, please run jackd with the --verbose option,
243 and add the -v6 option to the firewire backend:
244     $ jackd --verbose [...] -d firewire -v6 [...]
245
246     ( [...] = other options )
247
248 This will generate an increadible amount of debug output that should
249 contain what we need to track down the problem. If you have troubles
250 saving the output, try redirecting it to a file:
251
252     $ jackd --verbose -d firewire -v6 2> ffado-jack.log
253
254 this will create a ffado.log file containing the output. Use CTRL-C
255 to exit jack if necessary.
256
257 The distribution contains a tool to gather some information about your
258 system. you can run it as follows:
259
260     $ cd support/tools
261     $ python ffado-diag.py > ffado-diag.log
262
263 It will check your system for basic problems and gather some information
264 regarding your hardware configuration. This will allow us to diagnose
265 your problem faster.
266
267 Once the logs have been created you can create a support ticket at
268 http://subversion.ffado.org/newticket
269
270 Be sure to include the following information:
271 * the log file(s) (zipped/tar.gz'ed and attached)
272 * the device you're trying to use
273 * a description of what went wrong and how to reproduce it. You
274   preferrably try to figure out a sequence of steps that can reliably
275   reproduce the issue on your system. A one-time failure is very difficult
276   to diagnose and/or fix.
277 * the distribution and its version
278
279
Note: See TracBrowser for help on using the browser.