Arch Linux Macbook Pro 10,1 Post-Install Configuration and Tweaks
This is a continuation of my previous post on Arch Linux on the Macbook Pro 10,1. This focuses on post-installation tweaks you can make on Arch Linux for this particular model. These are also applicable to the Macbook Pro 10,2, the 13-inch model without the discrete graphics.
- DKMS, Broadcom WiFi
- Hybrid Graphics
- Fan Control with mbpfan
- Power Management
- 2016-03-08 Updated note on
- 2016-02-21 Added note related to b43, bcm.
- 2016-01-17 Updated note about
- 2015-12-10 Added note about
DKMS, Broadcom WiFi
This Macbook ships with a Broadcom BCM4331 WiFi card.
As noted in the ArchWiki, there are two options for the driver.
b43-firmware is the reverse-engineered driver.
broadcom-wl-dkms use the propriety Broadcom driver and are loaded as
wl by the kernel, if installed and loaded.
I prefer to use DKMS in conjunction with the
broadcom-wl-dkms driver, as it will be rebuilt every time a kernel update is applied.
To set up
dkms, install with
$ pacman -S dkms
Then have it run at boot with
$ systemctl enable dkms
broadcom-wl-dkms can be installed from the AUR.
I found that link speed was still painfully slow, after installing
broadcom-wl-dkms; however, following the instructions in this post seemed to fix…something. I'm not totally sure.
The model that I have of 2012 Retina Macbook Pro ships with dual GPUs.
I don't use the official propriety NVIDIA driver as the tweaks below don't seem possible with them.
$ pacman -S xf86-video-nouveau xf86-video-intel
Switch between Nvidia card and integrated GPU (requires reboot)
gpu-switch is a script enabling you to switch between the Intel and Nvidia cards.
To switch to the intel card:
$ gpu-switch -i
To switch to the discrete GPU:
$ gpu-switch -d
Poweroff discrete GPU for better battery life with vgaswitcheroo
To poweroff the discrete GPU after you've switched to the integrated card:
$ sudo su $ echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
Then check if it's off:
$ cat /sys/kernel/debug/vgaswitcheroo/switch
Output should be something like this:
0:DIS-Audio: :Off:0000:01:00.1 1:DIS: :Off:0000:01:00.0 2:IGD:+:Pwr:0000:00:02.0
+ indicates the active GPU.
If you want this to be automatically done on boot, install systemd-vgaswitcheroo-units from the AUR and enable
You can use xf86-input-mtrack for this.
Then create a configuration under
A sample configuration:
Fan Control with mbpfan
Install mbpfan-git for enabling fan control.
$ mbpfan -t $ systemctl enable mbpfan
tlp automatically tunes your computer for better battery life when the laptop is unplugged.
tlp from the official repos, then enable the
$ systemctl enable tlp $ systemctl enable tlp-sleep
powertop from the official repos, which you can use to both look at power consumption and tweak system configurations to increase battery life.
You'll need to
--calibrate to make sure the measurements from
powertop are accurate. This will run a cycle that will turn off the display, wifi, to establish benchmarks.
$ powertop --calibrate
Then, you can use
auto-tune to tweak the recommended tunables automatically. See here for how.
thermald to prevent overheating
Without any tweaks, this system can run pretty hot. My palms were sweating buckets before I set up the fan control and this package here:
thermald is an essential component of my Arch Linux system as it prevents overheating by triggering cooling at certain temperatures.
lm_sensors and sensors-detect
lm_sensors is another package that can be used to help monitor the system temperature and configure cooling.
$ pacman -S lm_sensors
sensors-detect; press ENTER at each prompt to accept the default choices, until you hit the prompt confirming whether to generate
Hope this helps, and as before, please leave a comment if there are more tweaks that should be added.
I've added notes on some of these tweaks to the ArchWiki as well.