Linux iSight Audio Drivers

This project is no longer active!
Please contact arne@datafloater.de if you want to take maintainership

Hi, los newos maintainer here (danalien)...

Since 2005-08-15, I've been been wanting to update this page a bit,
but hadn't had much spare time to do so. Been busy, a lot these days.
Happens when you got work to finish...

But since I'm leaving for aKademy'05 on the 24th of august, and my schedule
for september is allready booked up - This project will have to wait to oktober
at the very least.


cheers.

BTW, I fonud this link the other day: http://developer.apple.com/[...]/iSightProgGuide/index.html about the iSight.


[last updated: 2005-08-18 @ 21:58 GMT+1]

[iSight ConfigROM][Status And Control Registers][Packet Format][Firmware Update][Contact/Impressum]

This page provides information about the Apple(TM) iSight(TM) camera and the protocol used by the internal microphone of this camera. Final goal is to write an alsa audio driver for it.

Note: The video part of the iSight is already supported by libdc1394 and by unicap.

All information on this page is gathered from the firmware version of the first released iSight cameras. At the time of this writing, firmware version 1.0.2 is available, but can only be updated with a computer running MacOS. Firmware update with a Linux computer will hopefully be implemented in the future.

iSight ConfigROM

The iSight has 4 unit directory entries in the ConfigROM:
  • Directory 1 ( starting at offset 0x43c ) refers to the video functionality of the iSight. The spec ID 0xa02d and the software version 0x102 indicate that this device is compliant to IIDC 1394 Digital Camera Specification Version 1.30.
  • Directory 2 ( starting at offset 0x45c ) refers to the audio functionality. The spec ID for this function is 0xa27, the software version is 0x10. The spec ID does not refer to any standard that I know of. Any further information on Apple's spec ID and software version numbers would be greatly appreciated ( contact me ).

    The offset of 0x8000 ( specified in quadlets ) at the key 0x40 ( offset 0x470 ) points to the status and cotrol registers of the audio functionality.
  • Directory 3 ( starting at offset 0x474 ) has the spec ID 0xa27 and the software version 0x11. I do not know the meaning of this function.
  • Directory 4 ( starting at offset 0x49c ) has the spec ID 0xa27 and the software version 0x12. I do not know the meaning of this function either.
The ConfigROM might be a bit different for the firmware version 1.0.2, since Apple says that this version should enhance IIDC compliance.


Status and control registers

The log shows the communication between the iSight and iChatAV upon startup of the application. It was taken with the help of nosy, a simple firewire sniffer for Linux.

The registers of interest are:
  • Address 0xf0020000: This seems to be the ISO Enable/Disable register. A Value of 0x80000000 is written to start the isochronous operation, a value of 0x0 is written to stop the isochronous operation.
  • Address 0xf0020300: A value of 0x00010001 is written to this register when the microphone is turned on.
  • Address 0xf0020500: A value of 0x22 is writen to this register when the microphone is turned on. I do not know the meaning of this register.
The sequence:
f0020500    00000022
f0020000    80000000
f0020300    00010001

enables the microphone at a frame rate of 44100 Hz. The audio stream is transmitted on isochronous channel 0 afterwards.

Still I do not know how to set the isochronous channel. As I have no access to an Apple computer, there I currently can not investigate this. One way to find out how to set the channel would be to allocate channel 0 before starting the camera with iChatAV. The log should then show a different sequence than the one shown here and we can hopefully see how the channel is set.

Packet format

Coming soon!

Firmware updates

Apple has released the version 1.0.2 of the iSight firmware. Among other features, Apple claims that this firmware should give better IIDC compliance. Anyhow, the firmware update can currently only be done with a MacOS X computer.

How to contact me

EMail: arne_caspari at users dot sourceforge dot net