Macbook Pro Built-in iSight

Previously, I write about my Macbook Pro and Linux installation. Most of this works fine now, so time to get the hardware working.

I decided to start with the iSight. Apparently, this is a USB device which shows up in lsusb -v output as the top-most device. What’s better, it implements the new USB Video Class standard, of which a basic Linux implementation exists. Unfortunately, it doesn’t load by default, it errors out early in the initialization process with an error about not being able to retrieve the current palette.

[17186281.868000] usbcore: deregistering driver uvcvideo
[17186287.236000] Linux video capture interface: v1.00
[17186287.240000] uvcvideo: Found UVC 1.00 device Built-in iSight (05ac:8501)
[17186287.240000] uvcvideo: Failed to query (135) UVC control 1 (unit 0) : -32.
[17186287.240000] uvcvideo: Failed to initialize the device (-5).
[17186287.240000] usbcore: registered new driver uvcvideo

I of course went on to debug it, and somewhere in this process, I crashed my kernel (oops 🙂 ). However, after a restart, I cannot see the device in lsusb output anymore. A quick touch upon the back of my laptop suggests that the whole machine is highly overheated. So here’s my real two questions:

  • Has anyone played with the UVC driver to get the built-in iSight to work?
  • Has anyone found that his Macbook overheats under Linux? How do I get the fan to turn on automatically (or manually, if I really have to)?

Also, anyone familiar with the USB Video Class or the USB stack on Linux (and with some spare time), please contact me on IRC (#gnome-hackers), I’d love to debug this thing with someone more familiar with the standard than I am.

Edit: apparently, after a reboot into MacOS X and back into Linux, it is recognized again. It appears some of the (read-only?) fields in the device have to be specifically initialized. This may imply the device is not 100% UVC-compatible. Anyway, it works again, let’s see how it works.

This entry was posted in General. Bookmark the permalink.