arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
395 lines (241 loc) • 12 kB
Markdown
This page contains tips on installing Arch Linux on an Early 2011 MacBook Pro.
discuss at [https://bbs.archlinux.org/viewtopic.php?pid=1021706](https://bbs.archlinux.org/viewtopic.php?pid=1021706)
## Contents
* [1 Installation](#Installation)
* [1.1 EFI Boot](#EFI_Boot)
* [1.1.1 Using rEFInd and Kernel EFISTUB](#Using_rEFInd_and_Kernel_EFISTUB)
* [1.2 BIOS boot](#BIOS_boot)
* [2 Wireless network](#Wireless_network)
* [3 Keyboard and touchPad](#Keyboard_and_touchPad)
* [3.1 Keyboard](#Keyboard)
* [3.2 Touchpad](#Touchpad)
* [4 Video and screen](#Video_and_screen)
* [5 Sound](#Sound)
* [6 Suspend and hibernate](#Suspend_and_hibernate)
* [7 HFS+](#HFS.2B)
* [8 Bluetooth](#Bluetooth)
* [9 Webcam](#Webcam)
* [9.1 With linux-mainline](#With_linux-mainline)
* [10 Others that works-out-of-the-box](#Others_that_works-out-of-the-box)
* [11 Troubleshooting](#Troubleshooting)
## Installation
Use the latest Arch Installation Image from here: [https://www.archlinux.org/download/](https://www.archlinux.org/download/)
### EFI Boot
Consult [UEFI](/index.php/UEFI "UEFI")
**Warning:** efibootmgr may brick your Mac firmware.
radeon driver which only loads properly on Macs in BIOS emulation mode, problem description and possible solution [here](https://bugs.freedesktop.org/show_bug.cgi?id=26891).
**8,1**
Tested on macbook pro 8.1 . Forum thread: [[1]](https://bbs.archlinux.org/viewtopic.php?id=136833&p=1)
Add following to Kernel Parameters.
```
i915.i915_enable_rc6=1 i915.i915_enable_fbc=1 i915.lvds_downclock=1 usbcore.autosuspend=1 h
```
**8,2 and 8,3**
While using EFI Boot, you will find
```
radeon 0000:01:00.0: >Invalid ROM contents
i915 0000:00:02.0: Invalid ROM contents
```
Which means you need disable KMS for amd and intel card. Add following to Kernel Parameters.
```
i915.modeset=0 radeon.modeset=0
```
newer versions of the Xorg Intel/i915 driver require KMS to work; without it the X server will fallback to framebuffer mode, with poor performance. The underlying issue is that the Intel KMS driver selects the wrong video output; to fix this try the following settings (tested on an 8,3/17" MBP):
```
radeon.modeset=0 i915.modeset=1 i915.lvds_channel_mode=2
```
This should give you Intel graphics output. Note that this requires kernel 3.5rc1 or higher; use linux-mainline from AUR if necessary. See [this bug](https://bugzilla.kernel.org/show_bug.cgi?id=42842) for more details.
If you don't have KMS for intel driver, you need install [xf86-video-fbdev](https://www.archlinux.org/packages/?name=xf86-video-fbdev) and, of course [xf86-video-intel](https://www.archlinux.org/packages/?name=xf86-video-intel).
If Xorg refuses to start with a "no screens found" message you may have to tell Grub2 to turn off the Radeon card and turn on the Intel card during boot. Edit /etc/grub.d/00_header and add the "outb" lines immediately after "set gfxmode=" (Tested on an 8,2 MBP):
```
...
set gfxmode=${GRUB_GFXMODE}
outb 0x728 1
outb 0x710 2
outb 0x740 2
outb 0x750 0
load video
...
```
Then regenerate your `grub.cfg`:
```
# grub-mkconfig -o /boot/grub/grub.cfg
```
#### Using rEFInd and Kernel EFISTUB
**Install rEFInd**
Consult [Installing rEFInd](http://www.rodsbooks.com/refind/installing.html)
Boot into Mac OS X
```
# mkdir -p /efi/refind
# cp -r refind/* /efi/refind/
# rm /efi/refind/refind_ia32.efi
# mv /efi/refind/refind.conf-sample /efi/refind/refind.conf and adjust it
# bless --setBoot --folder /efi/refind --file /efi/refind/refind_x64.efi
```
**Setting up EFISTUB**
Follow [UEFI Bootloaders#Linux Kernel EFISTUB](/index.php/UEFI_Bootloaders#Linux_Kernel_EFISTUB "UEFI Bootloaders")
**Add Kernel MODULES**
Without this, you will get 'root fs not found' error.
Edit `/etc/mkinitcpio.conf`:
```
MODULES="..ahci libahci.."
```
Then re-generate the boot img:
```
# mkinitcpio -p linux
```
### BIOS boot
Boot into BIOS emulation mode. AMD card works, but intel card doesn't.
Use refind to load GRUB legacy.
## Wireless network
See [Broadcom wireless](/index.php/Broadcom_wireless "Broadcom wireless") for b43 installation and usage.
## Keyboard and touchPad
### Keyboard
Default F1 key represents XF86MonBrightnessDown, if you want it represents to F1\. Set `fnmode=2` parameters to hid_apple module. See [Kernel modules#Configuration](/index.php/Kernel_modules#Configuration "Kernel modules") for instruction.
### Touchpad
Two finger scrolling and left-click works out of the box. Unfortunately the right-click is not functional.
**14/09/2012 : right click (2 fingers) and middle click (3 fingers) works out of the box with KDE.**
There are two drivers to provide features to the touchpad (including right and middle click): [mtrack](https://github.com/BlueDragonX/xf86-input-mtrack) which is reported to work well and [Synaptics](/index.php/Synaptics "Synaptics") which provides more features but might require some tuning.
**mtrack:**
Mtrack is available in [AUR](https://aur.archlinux.org/packages.php?ID=48505). The configuration is done via the /etc/X11/xorg.conf.d/10-mtrack.conf file. Check if the mtrack module is properly loaded in the /var/log/Xorg.0.log file. Sometimes xorg loads other drivers before, like eg. synpatics, and the mtrack driver is not used at all.
For an MBP 8,3 I needed to use the following config (in /etc/X11/xorg.conf.d/10-mtrack.conf) to stop it picking up other input devices by mistake:
```
Section "InputClass"
Identifier "Multitouch Touchpad"
Driver "mtrack"
MatchDevicePath "/dev/input/event*"
MatchProduct "bcm5974"
MatchIsTouchpad "true"
EndSection
```
**synaptics:**
See [Touchpad Synaptics#Installation](/index.php/Touchpad_Synaptics#Installation "Touchpad Synaptics") for synaptics installation and configuration instructions.
**Tip:** [Synclient](/index.php/Touchpad_Synaptics#Synclient "Touchpad Synaptics") provides some additional configuration for the touchpad.
```
#list all possible configurable parameters.
synclient
#To change a value for a command use `synclient command=X`
#Example:
synclient HorizTwoFingerScroll=1
```
After you have successfully tried and tested your options through synclient, you can make these changes permanent by adding them to /etc/X11/xorg.conf.d/50-synaptics.conf
## Video and screen
**13-inch**
Intel HD Graphics 3000: works with [xf86-video-intel](https://www.archlinux.org/packages/?name=xf86-video-intel).
Adjust Brightness: works with [xorg-xbacklight](https://www.archlinux.org/packages/?name=xorg-xbacklight) For example:
```
$ xbacklight -inc 7 # increase brightness
$ xbacklight -dec 7 # decrease brightness
```
or you can use a simple bash script that provides screen and keyboard backlight management by simple cli (-d for display / -k for keyboard)
```
#!/bin/bash
case $1 in
-d|--display)
if [ "$2" != "0" ]
then
echo "$[(($2 * 4882) / 100) % 4883]" > /sys/class/backlight/intel_backlight/brightness
fi;;
-k|--keyboard)
echo "$[(($2 * 255) / 100) % 256]" > /sys/class/leds/smc\:\:kbd_backlight/brightness;;
-h|--help)
echo -e "MacBook 8.1 brightness helper
\t-d\tset display brightness (0-100%)
\t-k\tset keyboard brightness (0-100%)
";;
*)
echo -e "Unknown option try -h or --help";;
esac
```
Save it in `/usr/local/bin/macbackl` and mark it as executable:
```
# chown +x /usr/bin/macbackl
```
For usage, run:
```
$ macbackl --help
```
**Note:** You must be root to edit the files in `/sys/class/*` but if you want you can chown `/sys/class/leds/smc\:\:kbd_backlight/brightness` and `/sys/class/backlight/intel_backlight/brightness`
**15-inch and 17-inch**
AMD Radeon HD 6490M: Unknown.
AMD Radeon HD 6750M and 6770M: works with [xf86-video-ati](https://www.archlinux.org/packages/?name=xf86-video-ati).
Adjust Brightness: install AUR package [apple-bl-gmux](https://aur.archlinux.org/packages/apple-bl-gmux/) and reboot system.
```
# echo 34839 > /sys/class/backlight/gmux_backlight/brightness
```
## Sound
**8,1 and 8,2**
```
$ alsamixer # unmute 'Front Speaker' and 'Surround Speaker'
```
**8,3**
Using [PulseAudio](/index.php/PulseAudio "PulseAudio") sound works out of the box. However some applications (e.g. [Vlc](/index.php/Vlc "Vlc")) have intermittent crackling; appending 'tsched=0' to 'module-udev-detect' in /etc/pulse/default.pa fixes this.
## Suspend and hibernate
Consulte [Suspend and hibernate](/index.php/Suspend_and_hibernate "Suspend and hibernate").
**8,1**
For s2ram install [uswsusp-git](https://aur.archlinux.org/packages/uswsusp-git/) and add to file `/etc/pm/config.d/module` following content:
```
SUSPEND_MODULES="bcma b43"
SLEEP_MODULE=uswsusp
```
Without this, system hangs after the machine wakes up and tries to reconnect to the wireless network.
**8,2**
BIOS Boot: using linux >= 3.6.2, supend and resume works out-of-the-box.
EFI Boot: resume may not work.
**8,3**
Supend and resume work out of the box, including wireless reconnection.
## HFS+
HFS is mounted as Read-Only. By [turning journaling off](http://support.apple.com/kb/ht2355) in OS X, the HFS+ file system will be read/write under Linux.
## Bluetooth
I had problems pairing devices, nothing was detected with
```
hcitool scan
```
There seems to be a conflict between the bluetooth module and the b43 one (wifi), as written in [this blog post](http://blog.tkassembled.com/188/macbook-pro-83-bluetooth-issues-on-linux/). The solution is creating `/etc/modprobe.d/b43.conf` with the following content:
```
options b43 btcoex=0
```
## Webcam
In order to use your webcam you need to have permission to use /dev/video0\.
```
# gpasswd -a *username* video
```
Test to see if it works
```
$ mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0 -fps 15 -vf screenshot
```
### With linux-mainline
As noted elsewhere in this document, some MBP features work best (or only) with the latest kernel; the usual way to install this is using the [linux-mainline](https://aur.archlinux.org/packages/linux-mainline/) package. However, as of 3.6.rc3 the config for linux-mainline disables webcam support (due to changed defaults in kernel). [This patch](http://pastebin.com/WbYpPrg1) to the x86_64 config fixes this issue.
## Others that works-out-of-the-box
* Sensors
## Troubleshooting
**Grub2-EFI boot: Intel invalid ROM contents**
If you see this error on boot and notice the screen output seemingly frozen, you need to disable KMS.
Append the following to your /etc/grub/defaults LINUX line:
```
i915.modeset=0 radeon.modeset=0
```
However, newer versions of the Xorg Intel/i915 driver require KMS to work; without it the X server will fallback to framebuffer mode, with poor performance. The underlying issue is that the Intel KMS driver selects the wrong video output; to fix this try the following settings (tested on an 8,3/17" MBP):
```
radeon.modeset=0 i915.modeset=1 i915.lvds_channel_mode=2
```
This should give you Intel graphics output. Note that this requires kernel 3.5rc1 or higher; use linux-mainline from Aur if necessary. See [this bug](https://bugzilla.kernel.org/show_bug.cgi?id=42842) for more details.
You may find you need to enable the Intel device; if using Grub, the following should enable it at boot time:
```
set gfxpayload=keep
# Switch gmux to IGD
outb 0x728 1
outb 0x710 2
outb 0x740 2
```
Alternatively, if you have OS X available you can use [gfxCardStatus](http://codykrieger.com/gfxCardStatus) to switch to the Intel device before booting into Linux.
**Grub2-EFI boot: root fs not found**
On boot, grub2-efi may complain that no root fs is found. This is due to the ahci modules being improperly loaded.
chroot into the installed Arch system. Then edit the `/etc/mkinitcpio.conf` MODULES array:
```
MODULES="..ahci libahci.."
```
Then re-generate the boot img:
```
# mkinitcpio -p linux
```