MacBook

I now have a 2008 unibody macbook. Here's some preliminary information.

Linux Installation

Installation of Debian was fairly painless with the Debian Installer from Dec. 18, 2008 after I realised that my CD was broken and barely booted, and the packages on it certainly couldn't be trusted. The only thing was that the installer refused to shrink my OSX installation partition, but parted did it just fine from a shell and the installer then was happy with the new layout and created new partitions.

Despite asking it to install grub to the MBR, this didn't work, probably since it's GPT partitioned. I then proceeded to install refit from OSX, which worked on the second attempt (really!), but would not show Linux. After going into the partition tool in refit itself, Linux showed up. Having two bootloaders is a bit odd, but unfortunately required.

I compiled a 2.6.28-rc8 based kernel and upgraded debian to experimental. Works fine. Config here.

HD swap

The machine came with a 160G HD that I wanted to replace. Be sure to check out the ifixit.com MacBook Unibody disassembly. Mind you, I had to buy a Torx T6 to do this.

Wireless device swap

Couldn't find the wireless device inside the laptop. It is in the screen assembly, and even if you'd open it you'd find it has a custom form factor (or so I was told by somebody who should know.)

Devices

  • wireless: Broadcom 4322 - not working with Linux (yet, doing reverse engineering)

  • touchpad: working, got an updated bcm5974.c driver from the source package mentioned on http://web.comhem.se/rydberg/Bits/, reverted this patch in my kernel

  • sound: hda-intel with NVidia chip/realtek codec, load with model=mbp3, and turn all controls but master to the maximum, then play with the controls, set the channel control to 6ch (no sound on 2ch setting).

  • ethernet: forcedeth, works fine, kernel fix in 2.6.29 to not wake up 100x per second

  • graphics: nvidia, vesa driver works with lots of prodding in xorg.conf

      [...]
    
      Section "Device"
          Identifier "Configured Video Device"
          Driver "vesa"
      EndSection
    
      Section "Monitor"
          Identifier "Configured Monitor"
          HorizSync  42-50
      EndSection
    
      Section "Screen"
          Identifier "Default Screen"
          Monitor "Configured Monitor"
          Subsection "Display"
              Depth 24
              Modes "1280x800"
          EndSubSection
      EndSection
    
      [...]
    
    and will otherwise refuse to use the correct resolution. Will try nouveau and things later.
    
  • backlight: working, need patches http://lkml.org/lkml/2008/12/10/336 and http://lkml.org/lkml/2008/12/12/293 (no longer apply against 2.6.29-rc1, fixed up versions on https://johannes.sipsolutions.net/patches/kernel/all/)

iSight

For earlier MacBooks I helped figure out how the iSight firmware is loaded. This doesn't seem to be necessary here, uvcvideo seems to just detect it, but it logs a lot of "unknown code" messages when used (fixed in kernel 2.6.29-rc1).

Bluetooth

Bluetooth doesn't seem to work. http://bugzilla.kernel.org/show_bug.cgi?id=12521

It actually works after

hciconfig hci0 reset

Other Notes

Sometimes the machine fails to shut down, or takes a very long time to shut down. From the Debian Installer, shutting down would not even work at all but hang with the machine beeping ("Beep Beep Beep <pause> <repeat>") in a rather high volume and low pitch. Some firmware thing?

Suspend cannot work due to the NVidia graphics chip. This I really need to fix for the machine to be usable for me.

Hibernate works fine, except for http://bugs.debian.org/512291.

Bugs filed

[this page is linked on http://tuxmobil.org/apple.html]