Debugging FireWire on recent Linux kernels

As part of the development of my planetary capture software I’ve been trying to sort out some problems with IIDC FireWire cameras. They’re not easy to get hold of these days. At least, not at “spare change” kinds of prices. But eventually I managed to get hold of one from Ebay. It’s a camera that was sold by D-Link, but in fact is a rebadged TI MC680-DCC.

Unfortunately I couldn’t get it to work at all, and despite claims in the system logs that the “fw1” device was being created, it never seemed to appear. I checked with another FireWire device (a digital video camera) that the OS and FireWire card appeared to be working, so it looked like a camera issue. Unfortunately whilst there are some links to FireWire debugging tools to be found via Google, many of them don’t appear to work with the newer (post 2.6.37-ish) kernels.

Eventually I found a couple of things that have been very helpful. The first is “jujuutils”. The most recent version I can find is on Google Code. This package includes executables to list the devices found on the FireWire bus.

The second is actually present in jujuutils, but I found a different version elsewhere that appears to be more recent. CRPP is “Configuration ROM Pretty Printer”. It takes the output from dmesg as written by the firewire_ohci module when debug is enabled and prints the results in a more human-readable form.

CRPP enabled me to discover that when queried at the slowest bus speed my camera claims to have a GUID of 0800286010000000, but the same request when configured at 400Mb/s returns a GUID of 0800286000000000. The only reference I can find on Google suggests that the GUID should in fact be 0800286000000073. CRPP also complains that the CRCs on the control block leaves are invalid 🙁

Unless this is some sort of artefact of my FireWire card taking power only from the PCI bus as opposed to having an external power connector direct from the PSU, I think that probably means my camera is toast 🙁

This entry was posted in Computing, Linux. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *