Release Notes

From IEEE 1394 FireWire Wiki
Revision as of 19:56, 6 January 2010 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.33

tentative release notes per 2.6.33-rc3

This release finally adapts the firedtv DVB driver to be usable with the new stack alternatively to the old stack. It furthermore brings a few fixes for the new stack, along with some minor updates without noticeable impact to most users.

Distributors who still ship the old stack (ieee1394, ohci1394, raw1394, sbp2, eth1394 and more) should now switch to the new one (firewire-core, firewire-ohci, firewire-sbp2, firewire-net). In the first iteration, those distributors might want to ship the old stack also (but blacklisted) as a fallback for their users if unforeseen problems with the newer replacement drivers are encountered.

The older FireWire stack contains several known problems which are not going to be fixed; instead, those issues are addressed by the new stack. An incomplete list of these issues is kept in bugzilla. We have a guide on migration from the older to the newer stack.

  • Properly support multiple concurrent FCP listeners. This is necessary if more than one process or driver requires continuous control over AV/C devices (e.g. camcorders, tape decks, audio devices, TV tuners).
  • Some small optimizations and fixes, among them improved Topology Map register handling.
  • Always use packet-per-buffer mode for isochronous reception, not dual-buffer mode. Reasons to do so are different behavior of the modes under some circumstances, and hardware bugs in dual-buffer mode.
  • Fix possible crash with unusual isochronous reception parameters (CVE-2009-4138). Also fixed in Linux,,
  • Port to new firewire stack. Depending on whether the the kernel is being configured for ieee1394 (classic stack) or firewire (new stack) or both, the firedtv driver will automatically use the proper stack. This means that FireDTV users are no longer forced to use the old stack.

Linux 2.6.32

2 December 2009

This release fixes the new FireWire drivers for operation with FFADO (FireWire audio driver framework) and brings some other, minor updates. There are also fixes in libraw1394 required in order to run FFADO on top of the new drivers; these fixes will probably be released in libraw1394 v2.0.5.

firewire-core, firewire-ohci, raw1394
  • Fix a few obscure bugs which were unlikely to show up in practice.
  • Fix start-on-cycle feature of isochronous transmissions and receptions. Especially needed for FFADO.
  • Expose isochronous transmit cycle timestamps to firewire-core and thus to userspace drivers. Especially needed for FFADO.
  • Fix potential bugs: login timeout, invalid SCSI status
  • Fix automatic retuning of DVB-C cards after temporary loss of antenna signal.
  • Fix I/O to Conditional Access Module.
  • Improve module parameter for runtime debugging.

Linux 2.6.31

9 September 2009

This release brings improved support of fine-grained access permission policies for FireWire application programs in userspace, IP networking with the new FireWire driver stack, and support for FireWire disks larger than 2 TB (this is also available in some stable kernel sub-releases before 2.6.31, see below).

firewire-core, firewire-ohci, firewire-sbp2
  • No longer marked as "experimental" in the kernel configuration menu. Distributors who provided the older ieee1394 driver stack so far are encouraged to build and install both driver stacks. Note, the new stack does not yet support studio audio devices, nor FireDTV DVB interfaces. (Support is currently in development.) See Juju Migration for further guidance on switching to the new drivers.
  • Driver source files and header files have been reorganized. This only affects kernel driver developers.
  • Added the sysfs attribute "units" to node representations. Its path is /sys/bus/firewire/devices/fw[0-9]+/units and it contains tuples of specifier-ID:software-version of all units found on a node.
    This is used in new udev rules, released in udev v144, which selectively grant non-root users access to FireWire character device files of AV/C devices (camcorders, set top boxes, audio devices and more) and IIDC cameras (alias DCAM, industrial cameras and webcams) while other device types remain inaccessible to unprivileged users by default.
  • Be even more careful with Broadcast_Channel CSR accesses to avoid clashes with buggy firmwares.
  • Fixed rarely occurring bugs related to shutdown of isochronous DMA contexts and to DMA-mapping on platforms with non-cachecoherent DMA. (The latter fix introduced a regression into 2.6.31-rc1, fixed since 2.6.31-rc9.)
  • Added as new driver for IPv4 over 1394 for the new firewire stack, replacement of et1394 in the old stack. Both eth1394 and firewire-net are still considered experimental due to some remaining, though different, bugs in them.
  • Fix video reception on Ricoh R5C832.
  • Fix video reception from more than one camera simultaneously on Agere FW643.
  • Added support for disks bigger than 2 TB. The necessary fix in our two SBP-2 initiator drivers has also been released in kernel and
    Note, volume sizes bigger than 2 TB also require specific support in the SBP-2 target chipset of FireWire disk or RAID enclosures. This is true for any operating system as initiator, not just Linux. Check with your enclosure vendor if in doubt.
  • Fix potential crash after "status write for unknown orb" events.
  • Added support for disks bigger than 2 TB. See remarks at firewire-sbp2.

Linux 2.6.30

9 June 2009

Most of the changes relate to extensions to the <linux/firewire-cdev.h> API which are required for advanced usage by FireWire-enabled userspace applications, especially IIDC video capture.

With these updates, the newer firewire drivers are now superior to the older ieee1394 drivers in the fields of industrial video acquisition/ machine vision/ microscopy etc. — just like the new drivers have already been superior and preferred for mass storage (SBP-2) in the last two or three kernel releases.

(Regarding consumer video applications, the new drivers should now be functionally on par with — yet more secure than — the old drivers. Alas the new drivers cannot be used with studio audio equipment yet. IP networking with the new drivers has become available in kernel 2.6.31.)

  • Optionally expose the reception timestamp of each isochronous packet, not just of interrupt packets. This change is accompanied by an update of the constant FW_CDEV_VERSION from 1 to 2.
  • Add ioctls for isochronous resource management (allocation and deallocation of isochronous channels and bandwidth). These do not only accomplish what the corresponding libraw1394 functions can do, they also implement optional kernel-assisted reallocation and deallocation.
    This means that client programs do not need to implement reallocation in their bus reset handler anymore and often can get rid of bus reset handlers entirely. Also, isochronous resources can be released by the kernel if the client program crashes or shuts down improperly. The kernel-assisted variant of resource allocation also takes care of the grace period which is to be observed after bus resets.
  • Add ioctl to query the maximum transmission speed to/from a given node.
  • Add ioctl for broadcast write requests. This is for example useful to control multiple similar cameras at once. For device security reasons, broadcast write requests are restricted to addresses in Units Space.
  • Add ioctl for asynchronous stream transmission. Asynchronous streams are addressed to channels instead of nodes (like isochronous streams are tied to channels) but transmitted after asynchronous bus arbitrations (like asynchronous write requests, unlike isochronous streams).
  • Add various consistency checks to enforce proper cdev API usage.
  • Disallow the FW_CDEV_IOC_ADD_DESCRIPTOR ioctl on any other /dev/fw* than those of local nodes. This is because userland will typically maintain an access policy based on unit directories that are present on each node, and this ioctl may therefore influence accessibility of local nodes' device files.
  • Implement Broadcast_Channel register support for conformance with the 1394a bus management specification.
  • Implement tuning of DVB-S2 boxes. Also implemented in kernel This fixes tuning of standard definition channels. Reception of high definition channels is not yet implemented.

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 stacked 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