blob: c9dd5583cbf26b538eaa1e5ea0d72aef4d3198e2 [file] [log] [blame]
2023/02/18 Takashi Sakamoto
.. contents:: Contents
:depth: 2
:backlinks: top
This library provides the series of low level API for interaction with kernel implementation to
operate resources in IEEE 1394. Since version 2, The library includes abstraction layer for
previous and current generation of kernel implementation.
Current Status
* Inactive development
* Just maintained
Reference manual
* Not available yet.
Release notes
2.1.2 (3 April 2016)
* Fix build with some alternative C libraries and with some older build environments. No
functional changes.
2.1.1 (28 April 2015)
* Fix backwards moving cycle timer in isochronous transmit. The problem has been observed with
audio I/O on different systems.
* Fix crash with SIGBUS on SPARC and similar architectures.
* Fix memory leak in address range mapping response handler.
* Fix errno reporting to applications which relied on behavior of libraw1394 1.x.
* Fix errno checking in the dumpiso and sendiso example programs.
* Minor documentation improvement.
2.1.0 (29 July 2012)
* Behavior changes of the backend to firewire-core:
* The isochronous reception buffer is now mapped read/writable rather than read-only. The
raw1394 backend already maps the buffer read/writable too. Note that writing into the buffer
will go wrong on architectures without cache-coherent DMA if the CPU and the OHCI write
within the same cacheline region, so use this feature with caution.
* Decrease memory footprint of IR and IT buffers by avoiding some internal rounding up of the
buffer size.
* New APIs in ``<libraw1394/raw1394.h>``
* ``raw1394_add_config_rom_descriptor()``
* Add contents to the Configuration ROM of the local node(s). At runtime, this API is only
available if running on top of ``firewire-core``. It could probably also be implemented
with the raw1394 kernel driver if anybody cared.
* ``raw1394_remove_config_rom_descriptor()``
* Counterpart to ``raw1394_add_config_rom_descriptor()``
* ``raw1394_read_cycle_timer_and_clock()``
* Like the existing ``raw1394_read_cycle_timer()``, but lets the caller choose between
``CLOCK_REALTIME`` (which the former call is always using), ``CLOCK_MONOTONIC``, or
``CLOCK_MONOTONIC_RAW``. For example, this enables libffado's audio streaming to run
undisturbed by resets of ``CLOCK_REALTIME``. At runtime, this call requires
``firewire-core`` underneath.
* ``raw1394_get_speed()``
* Returns the speed code of the maximum possible transmission speed between a given node and
the local node. This takes maximum speeds of all participating PHYs and the two links into
account. This can be used to configure the speed of isochronous streams. At runtime, this
call requires firewire-core underneath.
* ``enum raw1394_iso_speed`` was extended by ``RAW1394_ISO_SPEED_800``, ``_1600``, and
* New APIs in ``<libraw1394/ieee1394.h>``
* Added preprocessor constants ``L1394_SPEED_BETA``, ``L1394_SPEED_800``, ``_1600``, and
* testlibraw1394
* Added unit tests of the new APIs.
2.0.9 (2 June 2012)
* Fix that ``raw1394_iso_recv_flush()`` did not have any effect when running on
``firewire-core`` alias juju kernel drivers. This fix needs kernel 3.4 or later at runtime; on
older kernels ``raw1394_iso_recv_flush()`` will remain uneffective on ``firewire-core`` as
* Remove build-time dependency on linux-headers. Before, if too old kernel headers were present
on the build system, features and fixes would be silently omitted from the build. Now all
features and fixes are built in a fully forwards and backwards compatible manner.
* Remove ``--with-fw-dir`` configure switch which is no longer useful.
* Janitorial fixes.
2.0.8 (19 February 2012)
* Performance improvement: Configuration ROM access via ``raw1394_read()`` is dramatically
faster and very robust now. We read the kernel's Configuration ROM cache instead of the actual
register of the FireWire device.
* Interoperability fix: Internally retry ``raw1394_read/write/lock/lock64()`` after ack-busy
response. Most notably this fixes control of some older Panasonic-based camcorders, e.g.
Panasonic NV-DX110, Panasonic AG-EZ30, and Grundig Scenos DLC 2000.
* Small bug fixes.
2.0.7 (8 March 2011)
* Fixes playback to some audio devices based on the DICE chipset.
2.0.6 (1 November 2010)
* This release brings again several fixes for using libraw1394 on top of the ``firewire-core``
kernel driver (as opposed to ``raw1394`` which is going to be removed in kernel 2.6.37).
Notably, request reception a.k.a. address range mapping was fixed to report proper sender node
IDs and extended tcodes to the application.
* Note, this and some of the other updates require linux-headers 2.6.36 or later to be present
when ``libraw1394`` is being built. Otherwise, the fixes will not be built into the library,
and ``libraw1394`` will behave mostly like v2.0.5 did. (Likewise, kernel 2.6.36 is required at
runtime for some of these updates to be in effect. You can run brand new ``libraw1394`` on
older kernels and vice versa, but you would miss those fixes and features.)
2.0.5 (26 December 2009)
* Bug fixes, in particular for isochronous transmission and `FFADO <>`_.
2.0.4 (30 June 2009)
* Build fix for the tarball release.
2.0.3 (30 June 2009)
* Some bug fixes, notably:
* Build fix (Gentoo `bug 272540 <>`_)
* Fix a memory leak when running on the new firewire stack
* Functional enhancements for the new firewire stack (no ``libraw1394`` API change involved):
* Enable channel and bandwidth management functions even if access to the IRM's ``/dev/fw*``
is denied.
* Provide accurate isoch packet reception timestamps.
* Add as yet unimplemented juju versions of broadcast requests and async streams.
* These changes are only available with kernel-headers 2.6.30 or later at build time and kernel
2.6.30 or later at runtime.
2.0.2 (3 February 2009)
* Fixed license headers on new files introduced in v2.0.0 to be consistent with LGPL v2.1. No
code changes since version 2.0.1.
2.0.1 (15 January 2009)
* Optimized usage of ``/dev/fw*`` nodes based upon user permissions.
* many bugfixes
2.0.0 (18 July 2008)
* added support for the new firewire kernel subsystem. (kernel headers 2.6.22 or better yet
2.6.24 should be installed to compile libraw1394 with this feature)
* removed deprecated isochronous functions.
1.3.0 (13 October 2007)
* added ``raw1394_read_cycle_timer()`` as used by FFADO project.
* added support for environment variable ``RAW1394DEV`` to override default device node
* added ``--with-valgrind`` to configure script.
* other optimizations and bugfixes - see ChangeLog in the tarball.
1.2.1 (8 April 2006)
* This is a maintenance release that fixes a couple of bugs and contains a slight memory handling
optimization for isochronous I/O.
1.2.0 (19 February 2005)
* One more preparation for the release of ``libiec61883`` was to reorganize a couple of functions
from ``libiec61883`` into ``libraw1394`` for better code reuse with other projects. These
functions provide simple means to allocate and release isochronous channels and bandwidth.
1.1.0 (29 November 2004)
* Yes, the version number difference to the previous version seems odd, but it is correct. The
``.so`` version numbers were bumped a major level with no backward compatibility as well due to
an interface change in the new generation isochronous API. The change allows one to specify a
capture mode, and it is required by the forthcoming ``libiec61883``, our third generation
streaming media I/O library. This release also includes updated API reference documentation.
All comments for function documentation were moved into the main header, ``raw1394.h`` for
convenience to programmers that like to refer to headers. Finally, two functions were added for
the ARM feature to allow getting and setting the kernel buffer.