Introduction to IEEE 1394 on Linux
About IEEE 1394 (FireWire)
IEEE 1394 is a standard defining a high speed serial bus. This bus is also named FireWire by Apple or i.Link by Sony. All these names refer to the same thing, but the neutral term IEEE 1394 (or just 1394) is used on these web pages and in the sources.
What exactly is IEEE 1394? It is a serial bus similar in principle to USB, but runs at speeds of up to 800 Mbit/s and is not centered around a PC (i.e. there may be none or multiple PCs on the same bus). It has a mode of transmission which guarantees bandwidth which makes it ideal for digital video cameras and similar devices.
If you have 1394 hardware you can access it under Linux. The supported chipsets are Texas Instruments PCILynx/PCILynx2 and OHCI compliant chips (produced by various companies). Not supported are a proprietary Sony chipset found in older Vaio systems or the Adaptec AIC-5800. Fortunately for endusers, only OHCI compliant controllers are presently used by manufacturers of FireWire cards and mainboards.
Most types of external FireWire devices, notably cameras and storage devices, work with standardized protocols, hence are typically well supported by Linux' drivers and userspace software. See http://www.linux1394.org/hcl.php for extensive hardware compatibility information.
IEEE 1394 support in old kernels
FireWire-enabled Linux versions are 2.3 through 2.6. The subsystem has been included with the standard Linux kernel sources since version 2.3.40. The subsystem was also made available as a patch for Linux kernel version 2.2.
Development and maintenance exclusively concentrates on the current 2.6 kernel series now. No FireWire driver updates went into 2.4 for quite some time now.
IEEE 1394 support in Linux 2.6.22 and later
Starting with Linux 2.6.22, there are two separate FireWire kernel driver stacks available to choose from.
- The older stack alias the Linux1394 drivers, consisting of
- ieee1394: base driver
- ohci1394: for OHCI 1.0, OHCI 1.1, and 1394b controllers
- pcilynx: for the rare PCILynx controllers (only limited, buggy or missing support by the drivers listed below)
- sbp2: for storage devices and other SBP-2 devices
- eth1394: for IPv4 over FireWire
- raw1394: for all sorts of different applications, used via libraw1394
- dv1394: for a few DV applications (deprecated in favor of raw1394 + libraw1394)
- video1394: for applications using industrial cameras and webcams and a few other special purposes, especially via libdc1394
- The newer stack alias Juju, consisting of
- firewire-core: base driver and userspace access similar to raw1394 and video1394, but not binary compatible (libraw1394 v2 and libdc1394 v2 are compatible)
- firewire-ohci: for OHCI 1.0, OHCI 1.1, and 1394b controllers
- firewire-sbp2: for storage devices and other SBP-2 devices
- firewire-net: for IPv4 over FireWire
Development of new features as well as maintenance is concentrated on the new drivers now. The old drivers will receive at most small and simple bug fixes but no new features or complex bug fixes.
Please see Juju Migration for requirements and caveats with the new drivers.