MacBook (4,1) on Ubuntu 10.10 (Maverick Meerkat)
This page aims to describe the steps needed, to fully enable all features of the 4th Generation MacBook (hardware release date: early 2008) when using Ubuntu 10.10, Maverick Meerkat (released in October 2010).
You can find out, what model you have by typing at the terminal:
sudo dmidecode -s system-product-name
If you have a MacBook, but a hardware revision other than 4.1, please go to the MacBook start page. If you have a different Intel CPU-based Macintosh Product, go to the Mactel Community Help Pages, to find the right wiki.
Preface
Ubuntu 10.10 "Maverick Meerkat" comes with support for all hardware components of the MacBook 4.1. Compared to older Ubuntu versions, most features now run out of the box. Sound is now fully supported, the microphone works right away. 3D-Desktop acceleration starts automatically, even when the desktop is extended by an external monitor. WLAN support is fine although it needs a bit of time to reconnect after suspend. And two-finger-scrolling with the touchpad can easily be configured in the system menu. A lot of other things have improved. It boots faster, browsing files on a device connected via bluetooth works more reliable, etc. Some things still have to be installed manually, for example the webcam (iSight).
Anything not mentioned here should just work. If not, please refer to the Ubuntu Apple Users forum.
Feature
Support status
Compiz
HFS+
CD/DVD Writing
Bluetooth
Sound
Microphone
(works out-of-the-box)
(works, with remarks)
(needs manual install)
(won't work)
(not yet documented)
Basic Installation Instructions
Common things about installing and maintaining Ubuntu on Intel-based Macs: Intel CPU-based Macintosh Generic Installation Instructions
- Resize your OSX partition, to make space for Linux root and swap partitions.
Install version 0.14 or later of rEFIt in OSX and that it's set up to always be active.
- You should now be able to start the plain AMD64 Ubuntu 10.10 ISO CD, and go from there.
- Choose manual partitioning and select to install grub to Linux boot partition, not MBR.
- Make sure you select the Apple keyboard layout.
GRUB
After installation and reboot, you may end up with "GRUB GRUB GRUB ..." Boot from the Ubuntu LiveCD, mount your Linux partition, chroot into it, and reinstall GRUB with --force as it apparently has to use "block lists" and it gets a tad upset about that. In the end it works though. In the below sequence, adjust the /dev/sda3 to whatever your Linux boot partition is:
- sudo mkdir /mnt/ubuntu
- sudo mount /dev/sda3 /mnt/ubuntu/
- sudo mount -t proc none /mnt/ubuntu/proc
- sudo mount -o bind /dev /mnt/ubuntu/dev
- sudo chroot /mnt/ubuntu
- grub-install /dev/sda3
If you do encounter the "GRUB GRUB GRUB ..." problem, it appears to not matter whether you install GRUB to the MBR or the Linux boot partition. It'll "GRUB GRUB GRUB" either way before you fix it, and it'll work either way after you fix it. I'd suggest installing to the Linux boot partition as it's cleaner.
Keyboard
Function and Fn Keys
By default the function keys work as if the Fn key is always depressed. This is the default behaviour in Mac OSX, but can be annoying for those used to a Windows or Linux environment where the function keys are widely used.
To switch their behaviour to function key first, with media keys and keyboard shortcuts requiring Fn+Function, one must set the fnmode to the value 2.
To change the behaviour, open the file /etc/modprobe.d/hid_apple.conf and modify the options for hid_apple (create the file if it doesn't exist). If this doesn't work, see Apple Keyboard Guide.
Open a terminal and edit the file /etc/modprobe.d/hid_apple.conf as root.
gksudo gedit /etc/modprobe.d/hid_apple.conf
Add or modify the following line to set the fnmode to 2.
options hid_apple fnmode=2 |
Save and close the file, and run the initramfs update command to apply the change. A reboot is required to for the change to take effect.
sudo update-initramfs -u
Media keys and keyboard shortcuts
- CD-eject, volume up/down, mute/unmute, forward, backward, play/pause work out of the box
- Spaces: cmd+e
- Application launch traditional: Alt+F2
- Change Desktop: Ctrl+alt+left/right
Home, End, PgUp, PgDn, insert, delete: fn+ left/right/up/down/enter/backspace
No keyboard at login screen
Many have reported not being able to use the keyboard at the login screen. A workaround is described here. You may also need to switch the keyboard layout setting at the login screen to enable the keyboard.
Trackpad
To achieve familiar behavior with the Apple trackpad go to System -> Preferences -> Mouse and select the Touchpad tab. Select Disable touchpad while typing. Deselect Enable mouse clicks with touchpad.
Then to get a rightclick functionality, in the Accessibility tab, select Trigger secondary click by holding down the primary button. When you hold down the main button you'll see the mouse fill and when released after this extended press it'll behave like a right click. (Others prefer to enable the two-finger scrolling + click method.) Ideally, perhaps someone can map the well known control-click method that also works on OSX.
Furthermore for the "clumsy" behaviour of the Trackpad add to /usr/share/X11/xorg.conf.d/51-synaptics-quirks.conf:
Section "InputClass" Identifier "Apple Macbook 4,1" MatchProduct "appletouch" MatchDevicePath "/dev/input/event*" Driver "synaptics" Option "JumpyCursorThreshold" "20" Option "FingerLow" "10" Option "FingerHigh" "20" Option "FingerPress" "200" EndSection
AirPort
In Ubuntu 10.10, support for the AirPort (a Broadcom BCM4328 chip) is provided seamlessly via Jockey. Just go to System -> Administration -> Additional Drivers and make sure the "Broadcom STA wireless driver" is activated. If your network manager frontend doesn't immediately show the new network interface, you might need to reboot your MacBook. Afterwards you should be good to go!
Suspend & Hibernate
Suspending to RAM and Hibernating to disk works out-of-the-box, but the mouse freezes on resume and thaw. There also appears to be an issue with the Broadcom wireless driver (wl) not functioning properly after resuming.
To fix this issue, do the following:
Create the script macbook.sh in the folder /etc/pm/sleep.d:
sudo gedit /etc/pm/sleep.d/macbook.sh
- Add the following contents to the file:
#!/bin/sh resume_wifi() { stop network-manager service networking stop # reload wifi module for the BCM4321 modprobe -r -f wl modprobe wl service networking start start network-manager } case $1 in resume|thaw) resume_wifi #reset mouse drivers rmmod appletouch modprobe appletouch ;; *) exit $NA ;; esac
- Make the script executable:
sudo chmod +x /etc/pm/sleep.d/macbook.sh
Note: observed... sometimes the system appears to hang a few minutes after suspend/resume cycle, X disappears and only a small cursor at top left of blank screen remains. Haven't tracked down the cause of this yet, ideas welcome! please post here. Hibernate appears flawless but is of course slower and thus annoying.
iSight
The iSight webcam is internally connected to the USB bus. It only works if the operating system loads it with a so called firmware. A binary file containing the firmware can be extracted from the OS X installation (or retrieved online). See https://help.ubuntu.com/community/AppleiSight for details, do read with care.
You can test iSight with for example "cheese".
References
MacBook (Early 2008) - Technical Specifications