Release Notes/3.x

From IEEE 1394 FireWire Wiki
Revision as of 13:12, 12 March 2016 by Stefanr (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Release Notes: Kernel Drivers, v3.0..v3.19

See Release Notes for changelogs of the IEEE 1394 drivers in newer kernels.

The following release notes only summarize more notable changes in the IEEE 1394 drivers. The see kernel's git history for a complete list.


Linux 3.19

8 February 2015

firewire-ohci, firewire-sbp2
  • small internal changes without functional change
  • Large rework by Takashi Sakamoto in order to support PCM capture and MIDI I/O. (Before, only PCM playback was implemented.) This adds support for a wide range of DICE based audio devices.
  • Limit MIDI transmission rate as per specification to prevent loss of messages.
  • Driver was renamed from snd-firewire-speakers to snd-oxfw in order to reflect upcoming support for more audio devices based on OXFW970/971 based devices.
  • Large rework by Takashi Sakamoto in order to support PCM capture and MIDI I/O. (Before, only PCM playback was implemented.)
  • Additional device support implemented by Takashi Sakamoto:
Behringer F-Control Audio 202
Mackie(Loud) Onyx-i series (former models)
Mackie(Loud) Onyx Satellite
Mackie(Loud) Tapco Link.Firewire
Mackie(Loud) d.2 pro/d.4 pro
Mackie(Loud) U.420/U.420d

Linux 3.18

7 December 2014

  • Fix potential overflow of operands for Conditional Access.
  • Prevent kernel stack leaking into ioctl arguments. Also fixed in v3.17.4, v3.14.25, v3.12.34, v3.10.61, v3.4.106, v3.2.65.
  • Fix Terratec Phase 88 clock source detection. Also fixed in v3.17.2 and v3.16.7.
  • Fix Terratec Phase 88 Rack FW clock source detection.
  • Fix Saffire Pro clock source detection. Also fixed in v3.17.3.

Linux 3.17

5 October 2014

  • Fix regression at 176.4 and 192.0 kHz sample rate. Also fixed in v3.16.4.

Linux 3.16

3 August 2014

Two new drivers were added:

  • New ALSA driver, implemented by Takashi Sakamoto, for FireWire audio devices which are based on the Echo Digital Audio Fireworks platform. The following devices are supported:
Echo AudioFire 12/ 8 (until 2009 July)
Echo AudioFire 2/ 4/ Pre8/ 8 (since 2009 July)
Echo Fireworks 8/ HDMI
Gibson Robot Interface Pack/ GoldTop
Mackie Onyx 400F/ 1200F
  • New ALSA driver, implemented by Takashi Sakamoto, for FireWire audio devices based on BridgeCo DM1000/DM1100/DM1500 chipsets with BeBoB firmware, in particular:
Acoustic Reality eAR Master One
Apogee X-FireWire card for DA/AD/DD-16X and Rosetta 200/400
Apogee Ensemble
Behringer Digital Mixer X32 series (X-UF card)
Behringer XENIX UFX 1204/ 1604
BridgeCo RDAudio1/ Audio5
CME Matrix K
Edirol FA-66/ FA-101
ESI Quatafire 610
Focusrite Saffire, Saffire LE, Saffire PRO 10 I/O, Saffire PRO 26 I/O (the older silver model; newer Saffire PRO models use a different chipset)
iCON FireXon
Lynx Aurora 8/ 16 with LT-FW
Mackie d.2 with FireWire option
Mackie Onyx 1220/ 1620/ 1640 with FireWire I/O card
M-Audio FireWire 1814, ProjectMix I/O
M-Audio FireWire 410/ AudioPhile/ Solo
M-Audio Ozonic, NRV10, ProFire LightBridge
Phonic Helix Board 12/18/24 FireWire MKII
Phonic Helix Board 12/18/24 Universal
PreSonus FireBox, FP10 (FirePod), Inspire 1394
Prism Sound Orpheus, ADA-8XR
Stanton FinalScratch 2 (ScratchAmp)
Tascam IF-FW/DM
TerraTec Aureon 7.1 FireWire
TerraTec Phase 24FW, Phase X24FW, Phase 88RackFW
Yamaha GO44, GO46
  • several extensions implemented by Takashi Sakamoto in order to support the two new drivers

Many of the mentioned audio devices are also supported by the FFADO userspace drivers (and have been for some time). The new ALSA kernel drivers are an alternative to (or replacement of) the sound streaming portion of FFADO, i.e. the part which implements PCM and MIDI I/O. Extra userspace software like ffado-mixer remains required for control of device features like router, mixer, clock source, port modes, and so on.

Takashi Sakamoto published an extensive report on the new drivers.

Linux 3.15

8 June 2014

In v3.14, a feature was added to enable remote DMA from and to memory outside the 32 bit range of physical addresses, which is possible at least with LSI FW643 controllers. This feature clashed with at least one vendor-specific device control protocol and was therefore reverted in v3.15 and v3.14.7.

Linux 3.14

30 March 2014

  • Fix a use-after-free bug which could occur after transmission failures.
  • The new module parameter "remote_dma" (default = N, enable unfiltered remote DMA = Y) replaces the former build-time option CONFIG_FIREWIRE_OHCI_REMOTE_DMA. (This kernel configuration option was located in the "Kernel hacking" menu, item "Remote debugging over FireWire with firewire-ohci".) It is therefore now possible to switch on RDMA at runtime on all kernels with firewire-ohci loaded or built-in, for example for remote debugging, without the need for a custom build option.
  • Fix initialization failure with Agere FW323 and some other Agere/LSI controllers. These failures were a regression since Linux v3.10 inclusive. Also fixed in v3.13.7, v3.12.15, v3.11.10.7, v3.10.41.

Linux 3.13

19 January 2014

  • New ALSA driver, written by Clemens Ladisch. This is a playback-only driver for IEEE 1394 audio interfaces which are based on the DICE chip family (DICE-II/Jr/Mini) from TC Applied Technologies.
    For the time being, this driver is being bound only to devices which do not expose recording channels. Drivers which support playback + capture + MIDI are available from the FFADO project in the form of JACK backends, implemented in userspace.
    There are people working on extending the snd-dice ALSA driver to support capture and MIDI too, and to bring similar ALSA support to other FireWire audio devices. When this is done, ALSA would replace FFADO's streaming related components. Device control however, i.e. mixer and router controls etc., will continue to be implemented in userspace (typically by ffado-mixer of the FFADO project).

Linux 3.12

3 November 2013

firewire-core and firewire-ohci
  • Fix a subsystem deadlock at bus reset which was sometimes observed if CPU resources were low. (This fixes a regression since Linux 3.2 inclusive. The subsystem workqueue deadlocked between transaction completion handling and bus reset handling if the kernel's worker thread pool could not be increased in time.)

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.
Personal tools