This page provides information about the
(TM) camera and the
protocol used by the internal microphone of this camera. Final goal is
to write an alsa
driver for it.
The video part of the
iSight is already supported by libdc1394
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.
The iSight has 4 unit directory entries in the ConfigROM:
- Directory 1 ( starting
0x43c ) refers to the video functionality of
the iSight. The spec ID
0xa02d and the software version
indicate that this device is compliant to IIDC 1394 Digital Camera
Specification Version 1.30.
- Directory 2 ( starting
0x45c ) refers to the audio functionality. The
spec ID for this function is
0xa27, the software version
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
0x474 ) has the spec ID
the software version
0x11. I do not know the meaning of
- Directory 4 ( starting
) has the spec ID
0xa27 and the software version
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
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:
0xf0020000: This seems to be the ISO
Enable/Disable register. A Value of
0x80000000 is written
to start the isochronous operation, a value of
written to stop the isochronous operation.
0xf0020300: A value of
is written to this register when the microphone is turned on.
0xf0020500: A value of
is writen to this register when the microphone is turned on. I do not
know the meaning of this register.
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.
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