Release Notes

From IEEE 1394 FireWire Wiki
Revision as of 19:37, 3 September 2013 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 3.x kernels.

The drivers in Linux 2.4 were considered stable too but have not been updated anymore for a long time. Therefore they lack many features and compatibility updates which went into recent Linux 2.6.x and 3.x releases.

The following release notes only summarize more notable changes. A complete list of IEEE 1394 related changes is available via git:


Linux 3.11

2 September 2013

userspace API
  • Fix corrupted video capture, seen with IIDC/DCAM applications and certain buffer settings. (Fixes a regression since v3.4 inclusive. The fix has also been released in kernels v3.10.5, v3.8.13.7, v3.5.7.19, v3.4.56.)
kernelspace API
  • The kernel-internal programming interface between firewire-core and protocol drivers was slightly changed to better support drivers which need to apply device-specific parameters or routines. Out-of-tree developers who maintain a stable history can git pull git:// fw_driver-api-transition to receive commit 94a87157cde9 from which a seamless transition to the current programming interface is possible.

Linux 3.10

30 June 2013

  • added support for IPv6-over-1394 compliant with RFC 3146, implemented by YOSHIFUJI Hideaki
  • release IR DMA context at ifdown
  • fix small memory leak at shutdown
  • fix video reception on VIA VT6306 with gstreamer, MythTV, and maybe dv4l
  • fix a startup issue with Agere/LSI FW643-e2
  • fix controller removal when controller is in suspended state
  • improved error logging

Linux 3.9

28 April 2013

The firewire subsystem underwent only minor janitorial changes in this kernel.

Linux 3.8

18 February 2013

  • fix reception of fragmented multicast and broadcast datagrams
  • pass through thin provisioning related opcodes to SPC-3 devices
  • New ALSA MIDI driver for Stanton SCS.1d and SCS.1m FireWire DJ controllers, written by Clemens Ladisch.
    (While MIDI is handled by the snd-scs1x driver, audio I/O with SCS.1m is handled by FFADO userspace drivers.)

Linux 3.7

10 December 2012

  • cdev ioctl ABI: On 64-bit architectures, the kernel wrote 4 bytes too many to non-zero fw_cdev_get_info.bus_reset. This could corrupt user memory in case of x86-32 userland on x86-64 kernel. This was fixed also in kernel 3.6.3,, 3.4.15, 3.2.32, 3.0.47.
  • seed the random number generator with GUIDs of FireWire nodes
  • internal optimization concerning address handlers
  • more complete TI TSB41BA3D support: properly read the local selfID0.i bit
  • minor fixes

Linux 3.6

30 September 2012

firewire-core, -ohci
  • various small fixes and optimizations
sysfs ABI
  • new attribute /sys/bus/firewire/devices/fw[0-9]+/is_local to tell local and remote nodes apart

Linux 3.5

21 July 2012

  • Fix mismatch between DMA mapping direction and DMA synchronization direction of isochronous reception buffers of userspace drivers if vma-mapped for R/W access. Depending on IOMMU properties of the hardware, this bug could have caused e.g. failures to capture video through libdc1394.
  • more consistent retry stategy in device discovery/ rediscovery, and improved failure diagnostics
  • New driver: Adds SCSI target functionality over FireWire. This enables a Linux node to act as SBP-2/ SCSI device to other nodes on the FireWire bus, for example as hard disk — similar to FireWire Target Disk mode of the firmware of many Apple computers. Any SCSI command set supported by the Linux target core, multiple logical units on the target node, and concurrent login by initiators are supported by sbp-target.
    In the kernel configuration menu, the sbp-target option resides under "Device Drivers/ Generic Target Core Mod (TCM) and ConfigFS Infrastructure/ FireWire SBP-2 fabric module".

Linux 3.4

20 May 2012

<linux/firewire-cdev.h> API
  • Added FW_CDEV_IOC_FLUSH_ISO ioctl which lets an application get any currently completed isochronous packets reported. A corresponding libraw1394 update to use this ioctl in raw1394_iso_recv_flush() has been released in libraw1394 2.0.9.
firewire-core, -net, -ohci, -sbp2
  • All messages to the kernel log are now consistently prefixed by driver name and device name or number.
  • Fix premature completion of multichannel isochronous reception DMA. Also fixed in kernel 3.3.1, 3.2.14, 3.0.27.
  • Fix missing completion notification in isochronous I/O in case of big intervals between interrupt packets or with big packet headers. — Alas this introduced a regression for libdc1394 and FlyCap2, causing corrupted video, bogus framerates etc. with certain buffer settings or frame sizes. This regression has been fixed in kernels 3.11, 3.10.5,,, 3.4.56.
  • If the target's unit directory contains a Unit_Unique_ID entry, use it instead of the node unique ID as the target's GUID in the ieee1394_id sysfs attribute and consequently in udev's /dev/disk/by-id symbolic links.
  • Do not try to log into targets on the local node. I/O to such targets is not yet implemented, and local targets are probably meant to be accessed by remote initiators anyway.
  • Fix handling of SCSI sense data (deferred errors, Valid, Filemark, EOM, ILI).

Linux 3.3

18 March 2012

  • Add workaround for the 1394 part of Creative SoundBlaster Audigy in order to fix transaction failures. Also fixed in kernel 3.2.6 and 3.0.21.
  • Work around random malfunctions of Ricoh PCI Express 1394 controllers by disabling MSI (message signaled interrupts). Also fixed in kernel 3.2.6 and 3.0.21.

Loosely related to FireWire (but also USB, SATA, and other interconnects): Some kernel crashes at hot unplug of storage devices were fixed; e.g. an infamous bug with card readers has been addressed.

Linux 3.2

4 January 2012

  • Increase throughput by use of unified transactions for incoming datagrams.
  • Add support for TI TSB41BA3D as local PHY. This PHY is found on special 1394b-400 cards.
  • Fix bus topology recognition in presence of a cycle master node with a wrong gap count. The issue was observed when switching off a bus-powered DesktopKonnekt6 audio device.
  • Properly synchronize isochronous I/O buffers on non-coherent architectures. Architectures with cache-coherent DMA like x86 or PPC were not affected.

Linux 3.1

24 October 2011

<linux/firewire-cdev.h> API
  • Unknown ioctls set errno to ENOTTY now instead of EINVAL. FW_CDEV_EVENT_BUS_RESET events are now guaranteed not to be generated before FW_CDEV_IOC_GET_INFO was used to set the bus reset closure. Both issues are also fixed in Linux 3.0.1 and
  • The first FW_CDEV_IOC_GET_INFO ioctl is clarified to start reception of bus reset events; earlier bus reset events are discarded. This ensures events with well-defined closure value under all circumstances. Also fixed in kernel 3.0.1 and
  • Fixed an issue with 32 bit userland drivers on top of 64 bit kernel, resulting in FW_CDEV_IOC_GET_INFO failing with EFAULT. Also fixed in kernel 3.0.25. libraw1394 and libdc1394 were not affected by this issue.
  • Fix detection failures of old Panasonic and Grundig camcorders. The failure was accompanied by "giving up on config rom" log messages after ack-busy events in firewire-ohci's debug log. Also fixed in kernel 3.0.25.
    (The fix addresses transaction failures to these camcorders which had more severe effect on the current driver stack than on the linux1394 drivers of kernel 2.6.36 and older. While basic DV capture without AV/C control works with these camcorders now, full operation also requires libraw1394 changes which were released in libraw1394 2.0.8.)
  • Continuing the optimization work that was released in kernel 3.0, CPU utilization during packet queueing was reduced further, benefiting all higherlevel 1394 kernel drivers and userland drivers.
  • Fix I/O and PM suspend with O2Micro PCIe FireWire controllers by blacklisting MSI on them. Also fixed in kernel 3.0.5.
  • A fix in the core kernel's memory management addresses firewire-ohci startup failures with kernels that were configured for a maximum number of CPUs of something else than a power of two. This was a regression since kernel 2.6.38. Also fixed in kernel 3.0.3.
  • Fix panic when the module was unloaded while a management transaction was still pending, e.g. login. This was a regression since kernel 3.0. Also fixed in kernel 3.0.8.

Linux 3.0

21 July 2011

This release contains a few fixes and some optimizations regarding CPU utilization of the IEEE 1394 kernel drivers, and the following more visible changes.

  • Probing of the FireWire part on Pinnacle MovieBoard is disabled for now because it used to lock up the kernel. Also disabled in kernel, Perhaps we can come up with a proper fix longer term, perhaps not.
  • Management of storage devices (connect, reconnect, disconnect) is now performed in parallel if there are two or more devices present.
  • New ALSA driver for the microphones in Apple iSight FireWire webcams. It exposes front and rear microphone as a sound card with two PCM capture channels. This supersedes an older out-of-the-mainline driver with the same function, called lisight, which depended on the removed ieee1394 driver stack.

Linux 2.6.30...2.6.39

June 2009 – May 2011

The older ieee1394 driver stack was removed from the kernel after it coexisted as an alternative to the current firewire drivers until kernel 2.6.36 inclusive. Many new features and fixes went into the newer firewire drivers. Some new drivers were added: firewire-net (IPv4 over 1394, replacing the eth1394 driver), nosy (a bus sniffer, formerly maintained outside of the kernel repository), and snd-firewire-speakers (for LaCie FireWire speakers and Griffin FireWave).

See Release Notes/2.6.3x.

Linux 2.6.20...2.6.29

February 2007 – March 2009

The new alternative firewire drivers were added and gradually stabilized. Since the new drivers were not yet feature-complete, the older ieee1394 stack remained preferred for production but received only few minor updates during this time frame.

See Release Notes/2.6.2x.

Linux 2.6.12...2.6.19

June 2005 – November 2006

This is a stabilization phase of the ieee1394 driver stack in Linux 2.6.

See Release Notes/2.6.1x.

Personal tools