Translation(s): none

MacBookPro5,3
MacBook Pro 15" 2009

Install Debian

Kernel

Configuration

CPU

GPU

2D

3D

External display

Backlight control

Apple Keyboard

Configuration

You can set up the keyboard layout with this command:

$ sudo dpkg-reconfigure keyboard-configuration

This will change the config file /etc/default/keyboard into something like this:

XKBMODEL="apple_laptop"
XKBLAYOUT="us"
XKBVARIANT="mac"
XKBOPTIONS="terminate:ctrl_alt_bksp"

… or another example:

XKBMODEL="pc105"
XKBLAYOUT="fr"
XKBVARIANT="mac"
XKBOPTIONS="lv3:rwin_switch"

Default behaviour

  • 'fn'+'Enter' -> Insert

  • 'fn'+'Backspace' -> Delete

  • 'fn'+'Up' -> PageUp

  • 'fn'+'Down' -> PageDown

  • 'fn'+'Left' -> Home

  • 'fn'+'Right' -> End

  • 'Clear' -> NumLock

Function key behaviour

The hid_apple module has a parameter called 'fnmode' to change the behaviour of the 'fn'-key

There's three settings for fnmode:

  • 0 = disabled: Disable the 'fn' key. Pressing 'fn' has no effect
  • 1 = fkeyslast: Enable the 'fn' key. Pressing 'F1-F12' keys will act as special keys. Pressing 'fn'+'F1-F12' will behave like 'F1-F12'.
  • 2 = fkeysfirst: Enable the 'fn' key. Pressing 'F1-F12' keys will behave like the real 'F1-F12'. Pressing 'fn'+'F8' will act as the special key (play/pause in this case).

There's several ways to set this parameter:

  • using sysfs, for example:

    $ echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode
  • as a module parameter (won't work if you compile hid_apple in your kernel):

    $ echo options hid_apple fnmode=2 | sudo tee -a /etc/modprobe.d/hid_apple.conf 
    $ sudo modprobe --dry-run hid_apple 

    if this throws no error you can

    $ sudo update-initramfs -u 
  • on the kernel command line: edit /etc/default/grub, and add the following to the GRUB_CMDLINE_LINUX_DEFAULT variable:

    hid_apple.fnmode=2

Swapped keys on international keyboards

The hid_apple module also has a parameter called 'iso_layout'

  • 0 means international layout, so on an 'English International' keyboard the '§±'-key will be top left, and the '`~'-key will be next to left shift
  • 1 swaps it around

There's several ways to set this parameter:

  • using sysfs, for example:

    $ echo 0 | sudo tee /sys/module/hid_apple/parameters/iso_layout
  • as a module parameter (won't work if you compile hid_apple in your kernel):

    $ echo options hid_apple iso_layout=0 | sudo tee -a /etc/modprobe.d/hid_apple.conf 
    $ sudo modprobe --dry-run hid_apple 

    if this throws no error you can

    $ sudo update-initramfs -u 
  • on the kernel command line: edit /etc/default/grub, and add the following to the GRUB_CMDLINE_LINUX_DEFAULT variable:

    hid_apple.iso_layout=0

See also

See also AppleKeyboard on Ubuntu's wiki.

Apple ClickPad

Multi-touch gestures like the drag two-finger drag gesture are supported in the current xserver-xorg-input-synaptics package (>1.6.1).

If you would like your touchpad to behave like the natural scrolling mode in Mac OS X Lion, you have to add the next line to your ~/.Xmodmap

pointer = 1 2 3 5 4 7 6 8 9 10 11 12                                        

Apple Touchpad

?MacBookPro3,1 touchpad behavior might be smoother with the kernel boot option:

appletouch.threshold=3

possibly adding it to the GRUB_CMDLINE_LINUX_DEFAULT line in /etc/defaults/grub

For older versions you can check PageFragmentClickPadOld

Ethernet

WiFi / Broadcom BCM432x

Installing the driver

The Broadcom BCM4321 and BCM4322 are supported by the b43 driver as of Linux 2.6.38. Later kernels improve the speed and stability of the aforementioned “N-PHY” hardware considerably (thank you, Rafał Miłecki).

To confirm you have such hardware you can refer to http://wireless.kernel.org/en/users/Drivers/b43#Device_firmware_installation

Installing the firmware

Ensure you have “contrib” archive area set up in your /etc/apt/sources.list, for example:

deb http://ftp.us.debian.org/debian wheezy main contrib non-free

Next (after an “apt-get update” of course) install the firmware-b43-installer package:

$ sudo apt-get install firmware-b43-installer

The hardware will be fully functional the next time the b43 driver is loaded (after reboot or by explicitly unloading/loading the driver).

Alternative driver

This hardware is also supported by the proprietary wl driver.

Known issues

  • BCM4321: The wl driver offers many more options than b43, this is specially useful for some advanced wireless scanning and performance data. The main difference, however, is that the b43 driver does not know how to do proper power-saving with this card. The wl driver does a much better job. This is noticeable in the temperature of the card, usually a difference of 10-15°C. In favor of the b43 driver, it is much faster to scan and join wireless networks.

See also

  • bcm43xx — a page on all Broadcom 43xx wireless devices

  • b43 — the upstream b43 driver page

  • wl — the proprietary driver

Audio

Power Management


System Summary

lspci

00:00.0 Host bridge [0600]: nVidia Corporation MCP79 Host Bridge [10de:0a82] (rev b1)
00:00.1 RAM memory [0500]: nVidia Corporation MCP79 Memory Controller [10de:0a88] (rev b1)
00:03.0 ISA bridge [0601]: nVidia Corporation MCP79 LPC Bridge [10de:0aae] (rev b3)
00:03.1 RAM memory [0500]: nVidia Corporation MCP79 Memory Controller [10de:0aa4] (rev b1)
00:03.2 SMBus [0c05]: nVidia Corporation MCP79 SMBus [10de:0aa2] (rev b1)
00:03.3 RAM memory [0500]: nVidia Corporation MCP79 Memory Controller [10de:0a89] (rev b1)
00:03.4 RAM memory [0500]: nVidia Corporation Device [10de:0a98] (rev b1)
00:03.5 Co-processor [0b40]: nVidia Corporation MCP79 Co-processor [10de:0aa3] (rev b1)
00:04.0 USB Controller [0c03]: nVidia Corporation MCP79 OHCI USB 1.1 Controller [10de:0aa5] (rev b1)
00:04.1 USB Controller [0c03]: nVidia Corporation MCP79 EHCI USB 2.0 Controller [10de:0aa6] (rev b1)
00:06.0 USB Controller [0c03]: nVidia Corporation MCP79 OHCI USB 1.1 Controller [10de:0aa7] (rev b1)
00:06.1 USB Controller [0c03]: nVidia Corporation MCP79 EHCI USB 2.0 Controller [10de:0aa9] (rev b1)
00:08.0 Audio device [0403]: nVidia Corporation MCP79 High Definition Audio [10de:0ac0] (rev b1)
00:09.0 PCI bridge [0604]: nVidia Corporation MCP79 PCI Bridge [10de:0aab] (rev b1)
00:0a.0 Ethernet controller [0200]: nVidia Corporation MCP79 Ethernet [10de:0ab0] (rev b1)
00:0b.0 IDE interface [0101]: nVidia Corporation MCP79 SATA Controller [10de:0ab5] (rev b1)
00:0c.0 PCI bridge [0604]: nVidia Corporation MCP79 PCI Express Bridge [10de:0ac4] (rev b1)
00:15.0 PCI bridge [0604]: nVidia Corporation MCP79 PCI Express Bridge [10de:0ac6] (rev b1)
00:16.0 PCI bridge [0604]: nVidia Corporation MCP79 PCI Express Bridge [10de:0ac7] (rev b1)
02:00.0 VGA compatible controller [0300]: nVidia Corporation GeForce 9600M GT [10de:0647] (rev a1)
04:00.0 Network controller [0280]: Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller [14e4:432b] (rev 01)
05:00.0 FireWire (IEEE 1394) [0c00]: Agere Systems FW643 PCI Express1394b Controller (PHY/Link) [11c1:5901] (rev 07)

lsusb