Monday January 02, 2006 Firewire in Solaris: The Good, The Bad and The Ugly
I figured that I would start 2006 by finally writing about Firewire/1394 support in Solaris. Some of you might not even know the current state of Firewire in Solaris, so here it is. The good, the bad and the ugly.
The Good
As of Solaris 10, the following 1394 device classes (along with the corresponding driver) are supported: mass storage devices (scsa1394) and camcorders and other AV/C devices (av1394). Also, Firewire host adapters that follow the 1394 OHCI (hci1394) are supported. All of this is supported on SPARC, x86 and x64 platforms.
Support for 1394-based digital cameras/IIDC devices (through the dcam1394 driver) has been available for SPARC since Solaris 9. Support on the x86 and x64 platforms is now available in Solaris Express (as 8/05) and will be available in an update release of Solaris 10 soon. Also, the software interfaces for the dcam1394 driver are now supported public interfaces.
All of the source code for the Solaris Firewire support is available through OpenSolaris, include the 1394 Software Framework (s1394) and the SBP-2 support (sbp2) modules.
The Bad
While most of the Solaris Firewire support worked fine, there are bugs. If you try and use certain Firewire hard drives or DVD burners or if you try to unload the host adapter driver on some hardware, your system may panic. Fortunately, these problems have been resolved and the fixes are available in Solaris Express.
Also, the dcam1394 driver only supports the camera features described in version 1.04 of the 1394 Trade Association's 1394-based Digital Camera Specification. This means that it does not support one of the most commonly available 1394 Digital Cameras out there, the Apple iSight.
Also, there are some Firewire features and devices that are not fully supported, such as 1394b and pro audio (IEC 61883-6). Also, while the software interfaces for customer written Firewire drivers and applications are available through OpenSolaris, aside from the dcam1394 driver, none of these interfaces are supported public interfaces.
The Ugly
Some of the Solaris Firewire support is really broken. The worst example of this is the av1394 driver. It has a number of odd bugs, but, most embarrassingly, it cannot do isochronous transfers on x86. I did the x86 port, so it is my fault.
Fortunately, most of the issues described above are either being actively worked on or have kind of fix available once I get to them.
If you have interest in the Firewire support in Solaris, let me know. I am always looking for feedback.
( Jan 02 2006, 11:30:00 AM PST ) Permalink Comments [2]
Posted by Alec Muffett on January 03, 2006 at 04:49 AM PST #
Yes. Someone at Sun has ported dvgrab to Solaris and fixed the bugs in the av1394 driver so that it will work with kino. He said that he was going to blog about it at some point.
These is a bunch of av1394 work in progress. The bug fixes mentioned above plus more that I have collected is part of it. Making the driver interfaces supported public interfaces is also part of it.
Send me e-mail and I'll see if I can get you the dvgrab stuff.
Posted by Alan Perry on January 03, 2006 at 11:38 AM PST #