Release Notes

From IEEE 1394 FireWire Wiki
Revision as of 23:42, 2 April 2009 by Stefanr (Talk | contribs)

Jump to: navigation, search

Release Notes: Kernel Drivers

See Release Notes - Libraries for changelogs of some IEEE 1394 userspace libraries.

Release Status

The latest stable releases of Linux IEEE 1394 drivers are those in the latest released Linux 2.6 kernels.

The drivers in Linux 2.4 are considered stable too but are not actively updated anymore. Therefore they lack some features and compatibility updates which went into recent Linux 2.6 releases.

The following release notes only summarize more notable changes. A complete list of IEEE 1394 related changes is available via git: Changes in drivers/ieee1394, in drivers/firewire.


Linux 2.6.29

23 March 2009

  • Fix potential problem with interrupt control on big endian CPUs.
  • Remove unnecessary messages in the kernel log if the driver is loaded but unused.
  • Support 1600 Mb/s and 3200 Mb/s capable hardware. Previously there was a limit to 800 Mb/s. (firewire-core had no such limit.)
  • Work around "irq...: nobody cared" and interrupt storm during resume after system suspend.
  • Increase number of hardware-assisted transmission retries when responder nodes are busy. Fixes AV/C control failures of camcorders with dvgrab ("send oops") and kino (loss of AV/C control), and possibly with other devices and software as well. Also fixed in and
  • Synchronize device quirk detection and handling with the code in the sibling driver firewire-sbp2.
  • Add workarounds for 2nd and 3rd generation iPods. 2nd generation was found to need a request size limitation, 3rd generation reported a wrong capacity. This resulted in unrecoverable IO errors right after an affected iPod was plugged in. Also fixed in and
  • New driver for FireWire-attached DVB receiver boxes and cards from Digital Everywhere, known as FireDTV and FloppyDTV.
    This driver currently works together with the old 1394 driver stack only (ieee1394 + ohci1394); compatibility with the new stack (firewire-core + firewire-ohci) will probably follow in the next kernel release. Also, only standard definition channels are supported for now; HD cannot be received yet.
    The driver works with the DVB-C, -S, -S2, -T variants of FireDTV and FloppyDTV and also supports their remote control and Conditional Access Modules. The driver is meant to be used together with any viewer software which supports Linux' DVB programming interface, just like PCI or USB DVB receivers.
  • Fix potential crash in rapid succession of bus resets.
  • Do not detach protocol drivers (firewire-sbp2 or userspace driver programs) if devices briefly disappear or seem to disappear from the bus. This happens
    • when certain bus-powered hubs are plugged in,
    • when certain devices are plugged into 6-port hubs,
    • when certain disk enclosures are switched from self-power to bus power or vice versa and break the daisy chain during the transition,
    • when certain hubs temporarily malfunction during high bus traffic.
  • Fix rare bugs related to module unloading and to errors during card initialization.
  • Avoid "context_stop: still active" noise in the kernel log.
  • Increase number of hardware-assisted transmission retries when responder nodes are busy. Fixes AV/C control failures (like in ohci1394). Also fixed in and
  • Fix IOMMU resource exhaustion in an error path. Also fixed in and
  • Add workarounds for 2nd and 3rd generation iPods (like in sbp2). Also fixed in and

Known issue: The firedtv driver is unable to tune channels on FireDTV-S2 and FloppyDTV-S2 devices. Fixed in Linux and 2.6.30-rc1.

Linux 2.6.28

24 December 2008

  • Change locking in the mmap() handler to prevent an unlikely deadlock.
  • Change locking in the mmap() handler to prevent an unlikely deadlock of multithreaded client programs. (It nonetheless is not a good idea to use the same raw1394 file handle in multiple threads; it may be hard to get such a client right.)
  • Change locking in the write() handler to make it multithreading-safe. (But see above.)
  • Remove the Big Kernel Lock from the ioctl() handler for better system performance.
  • Fix corruption of CSR response handler list (ARM handlers in raw1394 terminology) on boxes with more than one FireWire controller.
  • Do not detach the sbp2 driver if devices briefly disappear or seem to disappear from the bus. This happens
    • when certain bus-powered hubs are plugged in,
    • when certain disk enclosures are switched from self-power to bus power or vice versa and break the daisy chain during the transition,
    • when the user plugs a cable out and quickly plugs it back in, e.g. to reorder a daisy chain (works on Mac OS X if done quickly enough),
    • when certain hubs temporarily malfunction during high bus traffic.
Previously, mounted filesystems on FireWire disks would have been lost at such occasions. But now there is a high chance that they stay accessible.
  • Fix recognition of Freecom FireWire Harddrive. (also in
  • Add quirk handling for some iPod mini. (also in
  • Fix kernel freeze after many bus resets. (also in
  • Fix memory leak at bus reset. (also in
  • Fix iso transmit parameters in the character device file interface. (also in
  • Fix IOMMU resource leak, e.g. visible as "DMA: Out of SW-IOMMU space" on EM64T boxes and subsequent I/O errors. (also in
  • Fix a memory leak at module removal.
  • Improve login and logout handling. (also in
  • Add quirk handling for some iPod mini. (also in

Linux 2.6.27

9 October 2008

dv1394, raw1394, video1394
  • Include mmap()ed isochronous data buffers in program crash dumps.
  • Fix regression since Linux 2.6.25: When new nodes were added to a bus with existing ones, driver updates were not prioritized like in previous kernels. This especially degraded SBP-2 reconnection.
  • Fix connection loss to old nodes when certain devices were plugged into a bus with a 6-port hub.
  • Spin disks down (i.e. switch spindle motor off) when the system is suspended or shut down, or when the driver is unloaded.
  • Fix disk spin-down for PL-3507 and TSB42AA9 firmwares.
  • Fix connection loss after "Failed to reconnect to sbp2 device" during bus reset series.
  • IEEE 1394(a) compliance fixes: Don't respond to broadcast write requests, implement Broadcast_Channel register. (Not yet done: Allocate broadcast channel.)
  • Fix a kernel panic during asynchronous transmission when a bus reset occurs.
  • Fix reception of block read responses on 64bit architectures.
  • Fix a kernel warning (call trace dump) in the bus reset handling.
  • Fix isochronous reception with TSB43AB22A controllers on 64bit architectures with more than 2GB memory.
firewire-core + firewire-ohci
  • The issue with dvgrab on VIA VT630x OHCI 1.0 cards has been resolved. (DV reception got stuck after one or a few frames, the IR DMA context could not be woken up anymore.) The actual kernel change which resolved this is not known.
  • Spin-down feature and fixes as in sbp2

Sbp2's and firewire-sbp2's spin-down feature is not active in multiple initiator setups, i.e. when non-exclusive login is configured.

Linux 2.6.26

13 July 2008

  • Fix speed detection with some GOF repeaters.
  • The driver raw1394, video1394, dv1394 are not bound to struct device instances anymore. This change is only important for driver programmers. It is for example necessary for the firesat DVB driver which is currently in the works at the Linux Driver Project.
  • Explicitly switch on bus power after suspend/resume on some PowerMacs and PowerBooks.
  • Change of isochronous transmit policy: If the controller skips a cycle e.g. because of transmit FIFO underflow, the respective packet is now requeued for transmission in the next cycle instead of being dropped.
  • Related change of semantics of the struct raw1394_iso_status.overflows field: upper 16 bits contain number of cycle skips in IT (see above), lower 16 bits contain the "overflows" value as before.
  • Properly rescan devices which changed their configuration ROM. This fixes soft-power-off of some FireWire harddisks and similar situations in which the drivers missed that a device went on or off.
  • Fixes: Bus reset loop after PHY config packet transmission; gap count synchronization between all nodes (device detection related); kernel panic due to unexpected reception of PHY packets.
  • After a device was removed, fail open(), ioctl(), mmap() properly with -ENODEV.
  • New runtime switch to enable verbose logging in dmesg:
    echo N > /sys/module/firewire_ohci/parameters/debug
    with N = 0: off (default), 1: asynchronous packet sent or received, 2: self IDs, 4: interrupts, 8: bus reset interrupt events, or a combination (sum) of several of these flags.
  • fixes for asynchronous transactions on Texas Instruments controllers
  • fixes to make JMicron based cards work
  • Explicitly switch on bus power after suspend/resume on some PowerMacs and PowerBooks.
  • stricter error checks in self ID reception
  • new compile-time option FIREWIRE_OHCI_REMOTE_DMA in the "Kernel hacking" menu of the kernel configuration for remote debugging, only interesting to kernel developers
  • Fix detection of some multi-unit devices, e.g. drives in a SONY DVD jukebox.

Known issues: The new firewire drivers are still unable to capture DV on VIA VT630x OHCI 1.0 chips. Support for isochronous resource management is still missing in the firewire-core character device API. IP over 1394 implementation equivalent to eth1394 is still not available for the new stack.

Linux 2.6.25

16 April 2008

  • Raise default size limit of requests for better throughput. This brings sbp2 performance on par with firewire-sbp2 on FireWire 800 buses. Alas some older devices cause I/O errors on large requests, but the known broken ones are detected and handled accordingly. If you encounter errors with 2.6.25 which didn't happen in previous kernels, this change may be the cause; please report it at linux1394-devel then.
  • Fix bogus device additions if was run. Note, this script is not necessary and even was detrimental with sbp2 in the 2.6 kernel series.
  • Add workaround flag for delay between login and inquiry, flag is active for DViCO FX-3A.
  • Fixes for "giving up on config rom" errors.
  • Fix "kobject_add failed for fw* with -EEXIST".
  • Fix kernel crash when firewire-ohci was unloaded.
  • Fix isochronous reception for IIDC cameras.
  • Fix for systems with more than 3 GB RAM.
  • Fix for systems with IOMMU.
  • Fix for big endian CPUs.
  • Fix module reloading and suspend/resume on Apple PowerMac and PowerBook.
  • Add support for the old Apple UniNorth rev.1 controller.
  • Fix kernel panic in asynchronous transmission.
  • Handle "cycle too long" condition.
  • Several fixes and improvements for device recognition, probing, and reconnection.
  • Fix I/O errors which happened as soon as the PCI bus became slightly busy. Affected were all SBP-2 chipsets except OxSemi ones. This fix is especially required for PL-3507 based devices.
  • Fix bugs caused by
  • This is a new standalone driver, independent of the ieee1394 and firewire driver stacks. It is used for kernel development, particularly remote debugging of kernel initialization. This driver is configured by a kernel build config option in the "Kernel hacking" menu and a kernel boot parameter. Documentation is provided in the documentation directory of the kernel sources. Driver author is Bernhard Kaindl.

Known issues: Regression in ieee1394: When new nodes are added to a bus with existing ones, driver updates are not prioritized like in previous kernels. This especially degrades SBP-2 reconnection. Fixed in Linux 2.6.27.

Linux 2.6.24

24 January 2008

  • Fix locking in a rare error case.
  • Fix small memory leak after eth1394 or raw1394 modified the local configuration ROM.
  • Adopt "read cycle timer" ABI like in raw1394 since kernel 2.6.21.
  • Fix I/O after suspend/resume cycle for protocols which need the onfiguration ROM.
  • Fix leak of DMA mapping tables on non-coherent machines.
  • Check for unlikely error cases: PCI write posting error, self ID malconfiguration.
  • Fix DV reception for a lot of controllers. Note, a few OHCI 1.0 variants of VIA VT630x still don't work for DV.
  • Add support for targets with multiple logical units, e.g. JBOD multi-disk enclosures.
  • Add module load parameter "workarounds" for emergencies. This parameter works just like in the classic sbp2 driver.
  • Fix blocking of keyboard input and other system functions during attachment of devices.
sparc64 architecture
  • Fix kernel oops in DMA mapping, notably when loading firewire-ohci. This bug was present since kernel 2.6.23.

Known issues: The new firewire stack is still considered experimental. There are several bugs in isochronous reception which especially affect libdc1394. These should be fixed in kernel 2.6.25-rc1. There are also lots of issues with libraw1394's interface to the new drivers and regarding compatibility with existing applications. Also, firewire-sbp2 does not yet handle bus resets well enough. And work on an IP over 1394 implementation equivalent to eth1394 has not yet started.

Linux fixes an "INFO: possible recursive locking detected" warning which appeared in the kernel log e.g. when using dvgrab or firecontrol. The issue was harmless and not caused by the firewire drivers.

Linux 2.6.23

9 October 2007

  • Properly terminate sysfs attributes vendor_name_kv and model_name_kv.
  • Fix initialization on some hardware (some Toshiba Satellite in particular) in non-modular builds. This was a regression since Linux 2.6.19. Also fixed in Linux
  • Now almost completely fixed for 32bit userland on 64bit kernels. (There remain issues in the rarely used address range mapping functions.)
  • The long deprecated 1st generation isochronous ABI, consisting of the request types RAW1394_REQ_ISO_LISTEN and _SEND, have been removed. Callers of libraw1394's undocumented functions raw1394_iso_write, raw1394_start_iso_write, raw1394_start_iso_rcv, and raw1394_stop_iso_rcv are affected. Only ancient and obsolete programs used these calls which have been replaced by the more efficient rawiso and video1394 ABIs.
  • Fix crash in sbp2 initialization on PPC64. This was a regression since Linux 2.6.22. Also fixed in Linux
  • Expose the IEEE1394_SBP2_PHYS_DMA compile-time option on x86-64.
  • Add support for S100B...S400B and link speed slower than PHY speed.
  • Optimize bandwidth (gap count) in mixed 1394a/1394b topologies, except with 1394b repeater nodes present.
  • Fix memory leak. Also fixed in Linux
  • Fix scheduling in atomic context. Also fixed in Linux
  • iBook G3 and older Powerbooks refused to suspend. Also fixed in Linux
  • Fix panic on module unloading while devices were attached.
  • Fix "status write for unknown orb" followed by I/O errors.
  • Make it work on CardBus FireWire cards. Also fixed in Linux
  • Port from the old sbp2 driver: Limit sector count for certain old chipsets. Add module load parameter exclusive_login.

Linux 2.6.22

8 July 2007

  • Do not auto-load eth1394 per hotplug whenever a FireWire controller is initialized (usually: when ohci1394 is loaded). Hotplug events (uevents) for eth1394 are now only generated if another IPv4-over-1394 capable node was detected on a FireWire bus.
    From now on, those who want eth1394 have to load it manually, or simply connect another IPv4-over-1394 capable node (e.g. a PC with Windows XP or OS X), or add eth1394 to a distribution-dependent list of modules to be loaded on boot, or can simulate the old auto-loading together with ohci1394 by the following addition to /etc/modprobe.conf:
    install ohci1394 /sbin/modprobe eth1394; /sbin/modprobe --ignore-install ohci1394
  • Fix silent packet loss when eth1394 was unable to obtain transaction labels from ieee1394. The bug was noticeable by "eth1394: No more tlabels left" kernel messages.
  • Send GASP packets at S100 if 1394b hardware is present. Fixes eth1394 for S100B...S400B interconnects.
  • Allow users to configure MTU bigger than 1500 if they know what they are doing.
  • Link to a parent device (instead of a virtual parent) in sysfs. This fixes a regression since Linux 2.6.21: Udev rules for persistent naming of network interfaces didn't work anymore. The fix is also available in Linux and later.
  • The values of the sysfs attribute "address" of unit directories were wrong.
  • Send asynchronous streams at S100 rather than at a random speed.
  • Optimized DMA direction. Fixes crash on Xen.
  • New module load parameter: long_ieee1394_id. If left at the default value, nothing changes. If set to "y", the format of /sys/bus/scsi/devices/*:*:*:*/ieee1394_id is changed from e.g. 0001041010004beb:0:0 to 0001041010004beb:00042c:0000. This longer form is equivalent to the concatenation of the so-called Target Port Identifier and Logical Unit Identifier as per SCSI Architecture Model. The main benefit is that the same format is also used in the new firewire-sbp2 driver.
    (Explanation: The ieee1394_id in sysfs is typically used to create persistently named links in /dev/disk/by-id/. I.e. you can add entries like
    /dev/disk/by-id/ieee1394-0001041010004beb:00042c:0000-part3  /mnt/cx1  hfsplus user,noauto,noatime,force 0 0
    to /etc/fstab. With this example you can mount /mnt/cx1 without having to worry whether it's /dev/sda or sdb or whatever this time you plugged the FireWire disk in. This feature already existed in older kernels, only the format of the ID changed slightly in 2.6.22.)

New alternative driver stack in Linux 2.6.22 (experimental, incomplete):

  • This is a new driver, part of the new alternative FireWire driver stack known under the nickname "Juju", written by Kristian Høgsberg. Functionality-wise, firewire-core is a replacement for ieee1394, raw1394, video1394, and dv1394.
  • the new driver stack's equivalent to ohci1394
  • the new driver stack's equivalent to sbp2

See Juju Migration and for additional notes on firewire-core, firewire-ohci, and firewire-sbp2. More documentation on the new drivers will be gradually added to this Wiki.

Known issue: Sbp2 crashes on G5 Powermacs. Kernels older than 2.6.22 do not contain the bug. Fixed in Linux

Linux 2.6.21

25 April 2007

  • fixed driver crash on CardBus card ejection (also fixed in Linux
  • fixed resume after suspend or hibernation: the local config ROM was not restored which broke protocols like SBP-2 and IP over 1394
  • fixed driver crash or kernel crash if ieee1394 was loaded with parameter disable_nodemgr=1 (new bug in Linux 2.6.20, fix is also in
  • removed the kernel configuration options to export unused symbols for potential out-of-tree drivers and to translate OUIs into company names in sysfs
  • added feature to simultaneously read the cycle timer and the local system time (At the time of the kernel's release, the libraw1394 counterpart was in libraw1394's Subversion repo, pending for the next libraw1394 release)
  • now works on machines with non-coherent DMA, e.g. Intel 64bit machines (also fixed in
EM64T, IA64
  • fixed kernel crash related to DMA operations in a lot of drivers, among them video1394 and raw1394, on Intel 64bit machines with more than ~3GB RAM (also fixed in Linux and

Linux 2.6.20

4 February 2007

  • add deprecation note, application software should migrate to raw1394
  • set proper symlinks at /sys/bus/ieee1394/driver/*/module
  • fix kernel oops and strange hardware faults on some PPC machines when the module was reloaded (fix also in
  • fix recognition of capabilities of some DVD-ROM/R/W (fix also in; only Linux 2.6.19... are affected)
  • fix handling of SCSI command REQUEST_SENSE

Developer information: Linux 2.6.20 is the last release within which rather stable ieee1394 APIs for kernel drivers are maintained. Starting with Linux 2.6.21, developers of out-of-tree kernel drivers for FireWire hardware may be faced with more or less drastic changes of the kernel-internal APIs. (This does not affect userspace drivers which are built on top of libraw1394, libdc1394 and so on.)

Known issue: The ieee1394 option "disable_nodemgr=1" will lead to nonfunctional FireWire subsystem or even kernel lockup. This regression has been fixed in Kernels before 2.6.20 do not contain the bug.

Linux 2.6.19

29 November 2006

  • memory alignment problem fixed
  • recursive locking fixed
  • optimization of per-host kernel data structures; this apparently also fixed a kernel crash in hpsb_get_tlabel
  • initializes before most other device drivers to aid kernel debugging with firescope
  • kernel freeze in address range mapping functions fixed
  • HDDs whose motor was stopped after idle time or by another host are now automatically spun up
  • IO errors caused by "sbp2util_node_write_no_wait failed" fixed
  • another potential deadlock during device removal fixed
  • some combinations of Initio bridges and HDD mechanisms were wrongly detected as write protected; fixed by using a more standards conforming command for sd_mod's probing
  • poll() support added

Known issue: Some DVD-ROM/RW were mistaken for CD-ROM. Fixed in and above.

Linux 2.6.18

19 September 2006'

  • less CPU usage in DMA housekeeping
  • support for S100...S400 1394b hardware and for devices with PHY faster than link
  • recover from "cycle too long" errors
  • spin up Maxtor OneTouch disks when necessary (also in

Among the rest of the changes are minor bug fixes, small changes to in-kernel API usage, and a small ieee1394 low-level API extension (for driver developers: two new members in struct hpsb_host which affect address range mapping).

Known issue: If the kernel is configured for "RW-sem debugging", a "recursive locking" warning in knodemgrd may appear in the kernel log. This is an old bug, but probably without practical impact. Fixed in 2.6.19.

Linux 2.6.17

17 June 2006

  • Removed the dormant support for devfs
  • PhyUpperBound lowered from ~256 TB to 1 TB on chips which support a programmable PhyUpperBound
  • 64bit compatibility code for read and write access to /dev/raw1394 (not yet for ioctls)
  • Fix kernel freeze after disconnecting a device. The fix is also available in Linux
  • Fix compatibility regression with PL-3507 since Linux 2.6.16 ("scsi_add_device failed"). Also available in
  • Added a workaround for iPods (fixes "end_request: I/O error" at blocks near the end of the disk). Also available in
  • Added module load parameter "workarounds". A numeric parameter which signifies a combination of workarounds for quirky hardware can be given. See "modinfo sbp2". The now redundant parameter "force_inquiry_hack" will be removed in a future release.
  • Disabled "modprobe -r ohci1394" (or pcilynx) while logged in into an SBP-2 device, preventing inadvertent loss of connection.

Linux 2.6.16

19 March 2006

The bulk of changes to the IEEE 1394 subsystem since Linux 2.6.15 constitutes of behind-the-scenes cleanups, but there were also several bug fixes.

amdtp, cmp
  • These drivers were removed from the kernel. Their functionality is provided by libiec61883 now.
  • Bug fix: Suspend-to-disk would deadlock if the swap partition was located on a FireWire disk.
  • Reconnection to storage devices is often quicker now when additional devices get plugged in.
  • small consistency checks added to ROM parsing routines
  • logs number of hardware-implemented isochronous contexts when starting
  • bug fixes for memory deallocation in config ROM manipulation routines
  • Bug fix: Sbp2 always failed to connect to storage devices with "login timed out" with ALi and Fujitsu host adapters. This bug was believed to date back to the Mingh dynasty.
  • Bug fix: When a device was unplugged during ongoing I/O, the subsystem could fall into a deadlock, disabling subsequent hotplugs. (Fix is also available in Linux
  • Bug fix: The 36byte inquiry hack did not work in the last few Linux releases.
  • Bug fix: Resources were not freed when SCSI inquiry failed.
  • SCSI commands are no longer converted between command sets. The SCSI command set drivers, especially sd, are now using the proper command set.
  • Responses to inquiry commands from userspace sg I/O are now passed through as-is.
scsi/sd (as far as related to sbp2)
  • Bug fix: Memory corruption was encountered when FireWire disks with Initio bridge chip or some other bridge chips were plugged in. Could cause error messages, application crashes, or kernel panic. (Fix is also available in Linux
  • Bug fix: Wrong timestamps were generated. (bug from Linux 2.6.11)
  • Bug fix: When an ioctl failed to get a free channel, a wrong error number was returned.
several drivers
  • numerous code cleanups without change in functionality (or so we hope)
  • When starting, eth1394, ohci1394, and sbp2 do not log a version number anymore. There is no way to keep a meaningful version number without strictly centralized development model.
  • 1394 subsystem enabled in arch/x86_64/defconfig

Known issue: Some storage devices based on Prolific PL-3507 were not accessible anymore. Fixed in and 2.6.17.

Linux 2.6.15

2 January 2006

  • Fix recognition of some pre-1394a devices, notably LSI based SBP-2 devices. ieee1394 now writes the broadcast channel register only to devices which actually support the register. Fixes also an interoperability regression of Linux 2.6.14.
  • Fix recognition of some devices after the PC was switched off and on, notably of Motorola DCT6200. ieee1394 posts one resume packet to wake up suspended remote ports.
  • Workaround for FireWire controller of several Toshiba notebooks.
  • Fix for occasional oops during command abortion.
  • Fix panic or oops when runing the eject command on an iPod. Fix is also available in Linux

Linux 2.6.14

27 October 2005

  • fix for deadlocks on SMP machines
  • workaround for 1394b cards, required on some architectures
  • bus reset handling slightly changed, helps to detect new devices after a cycle master related reset
  • MODALIAS variable provided to hotplug userspace scripts
  • serialize_io=1 is now default, for better interoperability (add "options sbp2 serialize_io=0" to /etc/modprobe.conf for optimum performance of 1394b disks)
  • fix for hangs of the ieee1394 and scsi subsystems when devices were unplugged, fix for "modprobe -r sbp2" (these fixes are also present in Linux

Linux 2.6.12

17 June 2005

Linux Kernel 2.6.12 contains a major upgrade for IEEE 1394. This is arguably the first stable version of Linux 1394 for 2.6 (your mileage may vary). Not only does it contain many bug fixes resolving all known kernel warnings, it also fixes multi-LUN support for sbp2 and contains new sysfs entries to support udev rules for the generic setup of /dev nodes. See our new FAQ item for example udev rules.

Personal tools