Linux1394 Project TODO List
This page is targeted towards users (to see which things don't work yet) as well as to developers (to pick a project which caught their interest). People new to FireWire low-level development may find our lists of specifications and books useful. Almost all FireWire related specifications are open, some of them even gratis.
See also our list of bugs at bugzilla.kernel.org for a whole lot of TODO items. There are also bugs filed in distributors' bug trackers but they are not as easy to query.
FireWire subsystem (a.k.a. Juju driver stack)
- Add documentation for individual drivers on this wiki. See Special:Wantedpages.
- Derive documentation suitable for distribution with the mainline kernel sources, i.e. linux/Documentation/...?
- Finish kerneldoc comments of all exported functions and struct types that are part of the firewire-core APIs.
- Add a template to linux/Documentation/DocBook to pull firewire-core's kerneldoc comments in. Ideally, arrange the documentation in chapters for the userspace API, high-level API, and low-level API.
support in userspace
- Add support in FFmpeg's libavformat.
Implement automatic selection of linux1394 backend or juju backend in libraw1394 at runtime. -- Almost done: first shot at unified libraw1394(implemented in libraw1394 v2)
- Finish support by libraw1394. E.g. use OHCI timestamps when the respective kernel patch is merged.
- Implement automatic selection of linux1394 backend or juju backend in libdc1394 at runtime.
- Add support in libdc1394 v1?
- Userspace interface: Extend the ABI to export timestamps in a way palatable to video1394 and raw1394 clients. Needed e.g. for coriander and even more so for audio applications. (Does this also bring dvgrab into trouble? Fedora bug 370931, Fedora bug 445266) Almost done: patch
- Userspace interface: Add feature to allocate isochronous bandwidth and channels, and optionally de-allocate them when a process which allocated them dies. Mailinglist discussions: in 02/2008, in 12/2007, in 12/2006. Also implement (optional?) automatic re-allocation on bus reset events. Multi-camera capture is currently very awkward to implement via libdc1394 v2 because the IRM cannot be conveniently accessed without elevated device file access rights and open-coding of the (de-,re-)allocation procedure by userspace.
- Fix remaining device recognition bugs. Best done in hands-on mode rather than via e-mail debugging.
- Bug 10936, Fedora bug 415841: DV reception through some VIA VT6306 and 6307 OHCI 1.0 cards stops after the first frame.
Fedora bug 435550: DV reception through some TSB43AB22(A?) cards is corrupted.(done)
- Bug 10935: ALi controllers don't work yet.
- Bug 8828, Fedora bug 244576: Come up with a quirk fix for NForce2. The person to do so will most certainly require direct access to this hardware. Note, the NForce2 workaround in ohci1394 is unacceptable by today's standards as it involves busy-waiting in the interrupt handler. Either we find something better for firewire-ohci, or NForce2 remains unsupported in firewire-ohci.
- Implement dynamically appended ORB lists for performance improvement. Note, the old sbp2 driver's implementation of ORB lists is very buggy and does not seem to improve performance noticeably.
- Implement SBP-3 FASTSTART protocol which is rumored to be supported by newer OxSemi bridges and INIC-2430.
- Implement operation without physical DMA.
- Implement hand-over from OpenFirmware login. When an Apple PC boots from a FireWire disk, the OpenFirmware is already logged in but does apparently not log out after it loaded the kernel image. When then the kernel's firewire-sbp2 (or sbp2, for that matter) logs in, the target may deny access. This has been observed with Momobay CX-1. The old ieee1394 driver stack somehow overcomes this because of timing subtleties, but firewire-sbp2 ends up with failed login due to denied access.
- Bug 3225: Integrate with scsi_wait_scan module?
- Implement IPv4 over FireWire as per RFC 2734, i.e. port the functionality of eth1394 to the new driver stack. But try not to port eth1394's bugs too.
- Implement an SBP-2 target using the in-kernel SCSI target framework as an alternative to Endpoint (Oracle's SBP-2 target implementation in userspace).
- After IPv4, implement IPv6 support as per RFC 3146.
Prepare the ohci1394_earlyinit driver for mainline submission.(merged into mainline) Add support for more architectures besides x86-64. Add interrupt handling to re-enable physical DMA after bus reset. Add hand-over of interrupt handling from ohci1394_earlyinit to firewire-ohci.
IEEE1394 Subsystem (a.k.a. Linux1394 driver stack)
Note, the new FireWire subsystem in Linux 2.6.22+ (linux/drivers/firewire) is meant to replace the old IEEE 1394 subsystem (linux/drivers/ieee1394) in the long run. New development, bug fixing, and even janitorial work should therefore concentrate on the new subsystem. While the new subsystem is catching up on features and stability, it makes less and less sense to fix bugs of the old subsystem which the new one doesn't have. Many of the following to-do items could therefore as well be dropped. There is also a meta-bug in kernel.org's bugzilla which tracks items on which nobody is working anymore because these bugs don't exist in the new firewire drivers or should be fixed in them. Anybody who nevertheless wants to fix any of those superseded issues is of course welcome to do so.
- Update the documentation for individual drivers on this wiki. See Special:Wantedpages. Drivers which have different usage under Linux 2.4 and 2.6, especially sbp2, should get separate pages with information targeted towards Linux 2.4 and 2.6 users respectively.
Subsystem and core driver
- Bug 8403: If several Linux boxes are plugged into the same bus, they may go multiple forced bus resets, fighting over who gets to be IRM. Our IRM code is too pessimistic if errors happen when querying the remote IRM for its capabilities.
- Handle same node being connected to multiple local hosts (multi-pathing).
- Report driver (de)attach for information purposes (like usb does). (Why?)
Redo entire bus reset handling scheme.(implemented in the new FireWire subsystem)
Bug 8017: Packet sizes can currently not exceed PAGE_SIZE, which is usually 4096 bytes.(implemented in the new FireWire subsystem)
Complete Bus Manager functionality.(implemented in the new FireWire subsystem)
Complete IRM functionality.(implemented in the new FireWire subsystem)
- Bug 1872: Fix serialize_io=0.
- Bug 6393: Fix operation without physical DMA. Implement it in a portable fashion.
- Implement per-node queueing options (look at sym2 driver for example).
- Host and device sysfs attributes. (Do we need more than ieee1394_id?)
Bug 7794: Implement operation with filtered physical DMA.(implemented in the new FireWire subsystem)
Also see sbp2's TODO list in the source.
- Improve reliability (bug 8361, bug 8704).
- Fix "Waking dma ctx=0 ... processing is probably too slow", perhaps by increasing the AR DMA buffer size in ohci1394.
- Make it work with the bonding driver. There are changes to the bonding driver pending to have it support IP over Infiniband. These might take care of issues between bonding and eth1394 as well.
- Implement MCAP and multicast support.
Bug 8174: Implement atomic config ROM updates according to the procedure described in OHCI 1.1.(implemented in the new FireWire subsystem)
- Userspace: Implement access to RAW1394_REQ_MODIFY_ROM in libraw1394. This should be used instead of RAW1394_REQ_UPDATE_ROM. Make sure that the RAW1394_REQ_MODIFY_ROM accessor can be ported to the ROM manipulation ioctl of the new firewire-core ABI, which should eventually be fully supported by libraw1394 too.
- Bug 4779: Test and fix 32bit userland on 64bit kernel. It appears that only address range mapping is still buggy as of Linux 2.6.23.