iSight @ Linux #3

As previously stated, I’ve been working on a Linux driver for the iSight built-in in the Macbook Pro. Today, at the DDC in Ottawa (Canada), I got it working in a good enough state to call it useful. I’ll test it in various applications to make sure all ioctls behave correctly, but that should be minor work. This would complete phase I.

The Apple iSight is, on closer look, not UVC-compliant. Format querying (to query which framerates, sizes and pixelformats the device supports) is UVC-style, but data transfer is different. It took me a while to figure out how to get a full image out of those datadumps, but hexedit came to the rescue. The main problem with the driver right now is that it requires you to boot Mac OS X before starting Linux. OS X appears to initialize the device in some way (before that, it is recognized as a vendor-specific device and it doesn’t really do anything), and I don’t know how. Anybody with experience in USB bus sniffing under OS X (or who has this device and is willing to do that for me under OS X or WinXP), please contact me (or leave a message in the comments).

This entry was posted in General. Bookmark the permalink.

7 Responses to iSight @ Linux #3

  1. Wade Menard says:

    A friend of mine, Colin, has done a lot of USB hacking and reverse engineering under OS X. I have forwarded him a link to this entry to see if he might be able to help any.

  2. Ryan says:

    The developer tools include /Developer/Applications/Utilities/USB Not that I have any idea what it actually does…

  3. MacSlow says:

    Nice work! It’s great to see progress made on this front. I wonder if this will allow non-Apple-notebook users to grab a separately iSight-camera and use it under Linux in the near future?

  4. Ralph GIles says:

    MacSlow: the external iSights are ieee1394 IIDC devices, and have been supported by [ coriander] for some time. At least for video; apparently audio doesn’t work.

  5. Rno says:

    Hello, the one who developped the driver for the ECI ADSL modem for Linux / Unix has made a tool which does sniffing of USB under Windows XP.

    Look at here: and go to the section Synchronisation.

  6. Ken says:

    Answer you don’t want to hear: 🙂

    I have a Minolta scanner that isn’t supported under Linux (I bought it for my Mac). I offered it up to my family to tinker with (we’re all geeks). A USB scan showed that the Windows/Mac driver was actually uploading (copyrighted) firmware to it on startup. This is why it required special scanning software, and why said software took forever to start. This meant that in order to have a free driver for this scanner, somebody would need to write free firmware for whatever cheapo chip the scanner uses. Phooey.

    A USB scan would show if this is the case. If it’s uploading gobs of data, it’s probably firmware. I can imagine that they might do this because, if you upload the latest firmware (included with Mac OS) every time you boot, they never have to worry about “upgrading” the firmware in the classic sense. But I have no idea if that’s what’s happening here.

    Good luck! If all of the hardware was supported by free Linux drivers, I’d buy one.

Comments are closed.