Introduction

From IEEE 1394 FireWire Wiki
Revision as of 13:39, 22 May 2009 by Stefanr (Talk | contribs)

Jump to: navigation, search

Introduction to IEEE 1394 on Linux

Contents


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.

  1. The "old" 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
  2. The new, currently still immature and experimental stack alias Juju, consisting of
    • firewire-core: base driver and userspace access similar to raw1394 and video1394, but not binary compatible
    • firewire-ohci: for OHCI 1.0, OHCI 1.1, and 1394b controllers
    • firewire-sbp2: for storage devices and other SBP-2 devices

Please see Juju Migration for requirements and caveats with the new drivers.


IEEE 1394 support in userspace

See Category:Libraries and our software listing.

Personal tools