Difference between revisions of "MacBookPro11,x"

From ArchWiki
Jump to navigation Jump to search
(Update hardware acceleration links.)
(simplification and beautification of wikilinks (interactive))
Tag: wiki-scripts
 
(64 intermediate revisions by 24 users not shown)
Line 2: Line 2:
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|Installation guide}}
 
{{Related|Installation guide}}
{{Related|Beginners' guide}}
+
{{Related|General recommendations}}
{{Related|General Recommendations}}
 
 
{{Related|MacBookPro10,x}}
 
{{Related|MacBookPro10,x}}
{{Related|MacBook}}
+
{{Related|Mac}}
 
{{Related articles end}}
 
{{Related articles end}}
 
{{Style|This page flat-out ignores every possible [[Help:Style|style]] rule}}
 
{{Style|This page flat-out ignores every possible [[Help:Style|style]] rule}}
This wiki page should help you in getting your MacBook Pro from Late 2013 or Mid 2014 to work with Arch Linux. (This includes models 1-3 in the 11,x series).
 
  
== Preparing for the Installation ==
+
The MacBook Pro 11,x consists of models with Retina display shipped by Apple In Late 2013 and Mid 2014. Like its predecessors, it is based on Intel chipset, although some manual configuration might be required in specific cases in order to deal with Apple-related features.
  
=== Preparing the hard drive ===
+
Like previous MacBook models, the MacBook Pro 11,x supports UEFI. This page will cover the current status of hardware support on Arch Linux, as well as post-installation recommendations.
  
Dual booting with OS X may be desirable if you wish to update firmware. If this is the case, in order to carry out the installation you will need to shrink the main OS X HFS+ partition from within OS X's Disk Utility program, this will also move the OS X Recovery partition to the end of the OS X partition.
+
== Overview ==
  
{{note| Please note you may need to disable Filevault encryption before you can resize the partition, feel free to reinitialize this after you perform the partition resize}}
+
Specifically, the procedure for installing Arch Linux on a MacBook is:
  
== Installation ==
+
# [[#Firmware updates]]: It always helps to start from a clean, backed up, and up-to-date install of OS X.
 +
# [[#Partitioning]]: Resizing or deleting the OS X partition to create partitions for Arch Linux.
 +
# [[#Setup bootloader]]: Making sure that the new partition is bootable.
 +
# [[#Installation]]: Actually installing Arch Linux.
 +
# [[#Post installation]]: MacBook-specific configuration.
  
=== Booting the live image ===
+
== Firmware updates ==
  
To begin your installation, download the current [[Archboot]] ISO and write it to your USB drive according to the [[USB flash installation media]] instructions. Boot from the created USB drive by selecting it in the Apple boot manager which is accessible by holding {{ic|Alt}} on power on.
+
Before proceeding with the installation of Arch Linux, it is important to ensure that the latest firmware updates for you MacBook are installed. This procedure requires OS X.
 +
In OS X, open the App Store and check for updates. If your Mac finds and installs any updates, make sure to '''reboot''' your computer, and then check again for updates to make sure that you installed everything.
  
rEFIt and [[REFInd]] depending on how they are configured can also allow you to boot from the media.
+
{{Note|If you uninstalled OS X or want to reinstall it, [https://support.apple.com/en-us/HT204904 Apple] has great instructions.}}
  
If the install media you are using has a kernel version earlier than 3.13 you will need to edit the boot entry in the syslinux boot loader. This can be accomplished by pressing {{ic|Tab}} to edit the entry and append {{ic|nomodeset}} this will prevent visible screen corruption.
+
It is advisable to keep OS X installed, because MacBook firmware updates can only be installed using OS X. However, if you plan to remove OS X completely, make backups of these files, which you will need in Linux for adjusting the color profile:
  
If the install media you are using has a kernel version later than 3.13 '''do not''' use {{ic|nomodeset}} as it is not needed and will break [[hardware video acceleration]].
+
/Library/ColorSync/Profiles/Displays/*
  
=== Console ===
+
== Partitioning ==
  
As this model of notebook has a high DPI display, the console font displayed will be extremely small and depending on your preferences is likely to be uncomfortable to use. You may wish to change this for a more legible font, an example of which is;
+
MacBooks are partitioned using the [[GPT]] scheme by default. For MacBooks running OS X versions up to and including 10.12, the partition layout will typically look like this:
  
$ setfont sun12x22
+
* '''EFI''': the ~200 MB [[EFI system partition]]
 +
* '''Macintosh HD''': the main partition containing your OS X installation, formatted using [[File systems|HFS+]]
 +
* '''Recovery HD''': a secondary HFS+ partition containing utilities for restoring backups, formatting and re-installing OS X, typically booted by holding {{ic|Cmd+r}} while your MacBook is starting up
  
=== Internet ===
+
For 2013/2014 MacBooks running macOS 10.13 or later, the partition layout is simpler:
  
==== Wired ====
+
* '''EFI''': the ~200 MB [[EFI system partition]]
 +
* '''Macintosh HD''': an [[File systems|APFS]] container partition containing volumes for Apple's EFI loaders, the macOS system/user files, the recovery image and for [[swap]] in macOS.
  
Thunderbolt Ethernet adapters and USB-to-Ethernet adapters should be picked up automatically.  
+
As a general rule, partitioning is no different from any other hardware that Arch Linux can be installed on. If you plan on keeping OS X for the purpose of dual booting, you need to manually shrink the main OS X HFS+/APFS partition from within OS X's Disk Utility program.
{{Note|You may have to power on the machine with the Thunderbolt Ethernet adapter plugged in for it to be picked up initially.}}
+
{{Note|The OS X '''Recovery''' partition is not visible inside Disk Utility. However, the partition will be automatically moved after the OS X partition if you resize it. On MacBooks using APFS, the Recovery image is stored in the main APFS partition, resizing the APFS partition will move all macOS data.}}
 +
{{Tip|You can see the true partition structure of your system from within OS X by opening a terminal and running {{ic|diskutil list}}. Alternatively, if you have already launched the Arch installation media, you can retrieve similar information by running {{ic|fdisk -l}}.}}
 +
{{Warning| If your OS X partition is encrypted with FileVault 2, you '''must''' disable the disk encryption before proceeding. After the OS X partition has been resized, FileVault 2 can be re-enabled.}}
 +
{{Note|If you plan to remove OS X, it is advisable to '''disable''' the MacBook startup sound before proceeding with partitioning. Just boot in OS X, mute your system sound and reboot again to the Arch Linux Installation media. Please keep in mind that the volume of the startup sound can only be modified reliably in OS X.}}
  
==== Wireless ====
+
== Installation ==
 
 
As mentioned below, {{ic|broadcom-wl}} is sufficient if you are using the Linux mainline kernel. For custom kernels, you need to use {{ic|broadcom-wl-dkms}}. Both are available from the [[AUR]]. The easiest way to get Wi-Fi connectivity during install is to build the package driver on a separate system. Note that it does have to be built against the exact same kernel version as used by the installer, and this may differ from the latest version. If built against the wrong kernel you may encounter an error ''(ERROR: could not insert 'wl': Invalid argument)'' upon modprobe. Build the package as follows:
 
$ curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/broadcom-wl-dkms.tar.gz
 
$ tar -zxvf broadcom-wl-dkms.tar.gz
 
$ cd broadcom-wl-dkms
 
$ makepkg -s
 
This will give you a package ({{ic|broadcom-wl-*.pkg.tar.xz}}) which can be installed using [[pacman]]. Put this package on a USB drive, mount it, and install the package using:
 
# pacman -U broadcom-wl-*.pkg.tar.xz
 
# modprobe wl
 
You may now use {{ic|wifi-menu}} to connect to your network of choice.
 
 
 
{{Note|You need to repeat this process when you have finished your installation and booting into the system for the first time. If kernel versions differ, you may want to ensure to install a number of essential packages while you have connectivity and before you boot into your system ,
 
these allow you to build the broadcom driver again and connect (provided you put the AUR tarball for the driver on USB drive too):
 
{{Pkg|dkms}},{{Pkg|wpa_supplicant}}, {{Pkg|dhcpcd}} ({{Pkg|dialog}} and {{Pkg|netctl}} are needed if you want to use {{ic|wifi-menu}} again after you boot)}}
 
  
=== Bootloader ===
+
Installation is similar to any other standard laptop. Please refer to the official [[Installation guide]] for more detailed instructions, as the following content mainly describes deviations from those instructions that are specific to this MacBook model.
  
{{Note|Refer to the [[MacBook]] page if you do not want to have a separate partition for GRUB but rather prefer to use [http://www.rodsbooks.com/refind/ rEFInd] (or [[MacBook#rEFIt|rEFIt]]).}}
+
As this Mac model does not include a [[Optical disc drive|CD]] or [[Optical disc drive|DVD drive]], you may wish to copy the Arch installation media onto a [[USB flash installation media|USB flash drive]]. With the Arch installation media on a flash drive, you can boot it by holding down the {{ic|Alt}} (or {{ic|Option}}) key while your Mac starts up, and then selecting the applicable EFI Boot option when the Apple boot manager appears.
 
 
{{Tip|If you want to use the native MacBook bootloader, you need an extra partition of at least 128 MiB.}}
 
 
 
==== Using the MacBook's native EFI bootloader (recommended) ====
 
 
 
===== Method 1: creating an extra apple-format bootable partition with GRUB =====
 
 
 
This method uses the MacBook's native EFI bootloader, i.e. the one the can be reached when holding the alt-key during boot. For additional info, see [[GRUB EFI Examples#Apple Mac EFI systems]].
 
 
   
 
   
{{Note|For this method you need an extra partition of at least 128 MiB. This partition will be used by the MacBook's native bootloader to launch Arch. It also assumes that you are dual-booting OS X and Arch.}}
+
As this model of notebook has a high DPI display, the console font displayed will be extremely small and depending on your preferences is likely to be uncomfortable to use. You may wish to change this for a more legible font, an example of which is;
{{Note|It is possible to avoid the HFS+ partition by using FAT32, this way you can do all the bootloader stuff right from the LiveCD.}}
 
  
At the end of the Arch Linux install process we would normally install GRUB (or a variation) to a partition on the drive. For this method we will place a {{ic|boot.efi}} file on an extra partition used by the MacBook's native bootloader.
+
$ setfont sun12x22
  
First, [[install]] the {{Pkg|grub}} package from the [[official repositories]]. Make sure to follow the steps for setting up grub on a partition using the {{ic|grub-install}} and {{ic|grub-mkconfig}} commands, like normal. We will use the config file that {{ic|grub-mkconfig}} creates to generate a standalone {{ic|boot.efi}} file using the {{ic|grub-mkstandalone}} command, then we will wipe your just-created grub partition and set it up for Mac's native bootloader (or you can simply create a new partition and leave the grub partition alone, it is up to you).
+
=== Internet ===
  
When generating a grub config file, GRUB looks to {{ic|/etc/default/grub}} for its configuration. Edit the parameter {{ic|GRUB_CMDLINE_LINUX_DEFAULT}} to look something like this:
+
Thunderbolt Ethernet adapters and USB-to-Ethernet adapters are usually picked up automatically. In case you use a Thunderbolt ethernet adapter, you may have to power on the machine with the adapter plugged in for it to be picked up by the system.
GRUB_CMDLINE_LINUX_DEFAULT="quiet rootflags=data=writeback libata.force=noncq"
 
  
The {{ic|1=libata.force=noncq}} parameter will prevent SSD lockups and the {{ic|rootflags}} option is used for SSD-performance.
+
Another easy option is to use USB tethering with an Android device. For more information, see [[Android tethering]].
  
{{Note|Do not use the {{ic|rootflags}} option on Btrfs. It is not supported.}}
+
If you have neither, the only option is to use the onboard wireless adapter. Depending on your model, you may have the Broadcom BCM43602, which is supported by the open source [[Broadcom wireless#brcm80211|brcmfac]] module that is built-in to the Linux kernel and typically enabled by default. If this is the case, you should have wireless available from the installer with no further configuration necessary.
  
Now we generate the {{ic|boot.efi}} file (in our current working directory):
+
Other BCM43XX chipsets may only be supported by a proprietary driver such as [[Broadcom wireless#b43|b43]] or [[Broadcom wireless#broadcom-wl|wl]]. The {{Pkg|broadcom-wl}} package is included in the Arch installer media, but may need to be manually enabled before the chipset will function correctly. The {{ic|b43}} driver is also built-in to the kernel and included in the installation media, but it requires external proprietary firmware from the {{AUR|b43-firmware}} package which will need to be downloaded from another machine connected to the internet.
# grub-mkconfig -o /boot/grub/grub.cfg
 
# grub-mkstandalone -o boot.efi -d /usr/lib/grub/x86_64-efi -O x86_64-efi /boot/grub/grub.cfg
 
  
Put this file on a USB (or other OS X accessible media) and reboot into OS X.
+
You can list the network interfaces available from the installer environment by running {{ic|ip link show}}. If you can see your wireless interface in the list, you should now be able to use {{ic|wifi-menu}} to select and connect to your wireless network.
  
Launch {{ic|DiskUtility.app}} and reformat the extra partition (or just make a new one) as HFS+ (in the "Erase" tab of Disk Utility), mount it, then create the following directory structure and file:
+
If the [[wikipedia:Loopback#Virtual loopback interface|Linux loopback device]] is the only listed interface, you may need to load an alternative Broadcom driver. To do this, begin by ensuring that all Broadcom drivers have been unloaded.
$ mount -t hfs /dev/diskXsY <Path to root of extra partition>
 
$ mkdir -p <Path to root of extra partition>/System/Library/CoreServices
 
$ touch <Path to root of extra partition>/mach_kernel
 
  
where {{ic|diskXsy}} is the disk your partition is on (e.g. disk0s1). You can use {{ic|diskutil list}} to list your disks and partitions.
+
$ rmmod ssb
 +
$ rmmod bcma
 +
$ rmmod b43
 +
$ rmmod wl
  
Copy the {{ic|boot.efi}} file to the {{ic|<Path to extra partition>/System/Library/CoreServices/}} directory. Using your editor of choice, create a {{ic|SystemVersion.plist}} file in the CoreServices directory, which is located here:
+
Then try loading {{ic|brcmfmac}} again.
''<path to extra partition>''/System/Library/CoreServices/SystemVersion.plist
 
  
Edit that file to look like this:
+
$ modprobe bcma
{{bc|1=<?xml version="1.0" encoding="utf-8"?>
 
<plist version="1.0">
 
<dict>
 
    <key>ProductBuildVersion</key>
 
    <string></string>
 
    <key>ProductName</key>
 
    <string>Linux</string>
 
    <key>ProductVersion</key>
 
    <string>Arch Linux</string>
 
</dict>
 
</plist>
 
}}
 
  
{{Note|It is possible to do the above modifications to/on the extra partition from within Linux (if you have installed the proper HFS tools), but the following bless commands have to be executed from within OS X.}}
+
Wait a few seconds and then list your network interfaces again. If you still can't see your wireless interface, unload {{ic|brcmfmac}} again and try reloading {{ic|wl}}.
  
The last step is then to bless (make bootable) the extra partition (as root):
+
  $ rmmod bcma
  # bless --folder=<Path to root of extra partition> --file=<Path to root of extra partition>/System/Library/CoreServices/boot.efi --setBoot
+
  $ modprobe wl
  # bless --mount=<Path to root of extra partition> --file=<Path to root of extra partition>/System/Library/CoreServices/boot.efi --setBoot
 
  
{{Note|It might not be necessary to execute both commands, but to be sure it worked it will not do any harm to execute both.}}
+
If the wireless interface is still not listed, you will need to compile the {{AUR|b43-firmware}} package on another computer with [[pacman]] installed, put the generated package file on a second USB storage device, install the package within the Arch live environment and then load the {{ic|b43}} module, much like above. See [[Broadcom wireless]] and [[makepkg]] for more information.
  
{{Note|In order to change grub settings both {{ic|grub.cfg}} and {{ic|boot.efi}} will have to be generated. This can be done from in Linux, without booting OS X.}}
+
{{Note|If you used the {{ic|wl}} or {{ic|b43}} drivers, they will need to be manually installed to your new Arch system, this can be done by synchronising the {{Pkg|broadcom-wl}}/{{Pkg|broadcom-wl-dkms}} or {{AUR|b43-firmware}} packages as necessary, either during setup or after booting into your new Arch system.}}
  
Generate {{ic|grub.cfg}} and {{ic|boot.efi}} from Arch Linux:
+
== Setup bootloader ==
# grub-mkconfig -o /boot/grub/grub.cfg
 
# mount -t hfsplus -o force,rw /dev/sdXY /mnt # mount the HFS+ partition
 
# grub-mkstandalone -o /mnt/System/Library/CoreServices/boot.efi -d /usr/lib/grub/x86_64-efi -O x86_64-efi /boot/grub/grub.cfg
 
  
===== Method 2: Using the default EFI System Partition with Grub =====
+
MacBooks can be easily configured to use [[systemd-boot]] or [[GRUB]] directly from the Apple bootloader, without the need for third-party tools such as [[rEFInd]]. Systemd-boot is the recommended way for systems that support UEFI.
{{Stub|Coming this weekend...}}
 
  
==== Direct EFI booting (rEFInd) ====
+
* First, make sure you mounted the EFI System Partition at {{ic|/boot}} (that is within the chroot, so mount it as {{ic|/mnt/boot}} with {{ic|mount /dev/sdXY /mnt/boot}})
 +
* Proceed with [[Installation guide]] normally
 +
* Once inside the chrooted enviroment, type the following command to install ''systemd-boot'':
 +
{{bc|1=# bootctl --path=/boot install}}
 +
The above command will copy the ''systemd-boot'' binary to {{ic|/boot/EFI/Boot/BOOTX64.EFI}} and add ''systemd-boot'' itself as the default EFI application (default boot entry) loaded by the EFI Boot Manager.
 +
* Proceed to [[systemd-boot#Configuration]] in order to correctly set up the bootloader
 +
At the next reboot, the Apple Boot Manager, shown when holding down the option key when booting the MacBook, should display Arch Linux (it will be displayed as {{ic|EFI Boot}} as a possible boot option).
 +
{{Note|If you wish to use GRUB, have a look at [[Mac#Using the native Apple bootloader with GRUB]].}}
 +
{{Tip| After the installation, it is optionally possible to set a custom icon that will be displayed in the MacBook boot loader. In order to do that, you need to install the {{Pkg|wget}}, {{Pkg|librsvg}} and {{Pkg|libicns}} packages. After that, just follow the following commands:
 +
  $ wget -O /tmp/archlinux.svg https://www.archlinux.org/logos/archlinux-icon-crystal-64.svg
 +
  $ rsvg-convert -w 128 -h 128 -o /tmp/archlogo.png /tmp/archlinux.svg
 +
  # png2icns /boot/.VolumeIcon.icns /tmp/archlogo.png
 +
  $ rm /tmp/archlogo.png
 +
  $ rm /tmp/archlinux.svg
 +
Obviously, you can replace the Arch logo with any other icon you like.
 +
}}
 +
{{Tip|If you installed Arch Linux alongside OS X, you will be able to change the default boot location from  system Settings inside OS X. If Arch Linux does not show up as a possible boot option, you will have to mount the EFI System Partition inside OS X before selecting your boot option:
 +
{{bc|$ diskutil mount disk0s1}}
 +
Keep in mind, however, it is also possible to load OS X from [[systemd-boot]].
 +
}}
  
See: [[UEFI_Bootloaders]]
+
== Post installation ==
  
As of April 2016, rEFInd(0.10.2) can automatically detect the Arch kernel. So this is should be the easiest way. Simply install rEFInd. If you follow [[Beginners' guide]], you can simply skip [[Beginners' guide#Install_a_boot_loader]].
+
See [[General recommendations]] for system management directions and post-installation tutorials.
  
==== Direct EFI booting (gummiboot) ====
+
Additionally, you might want to have a look at the [[Power management]] page for useful tips in power management and battery-saving software.
  
See [[Beginners' guide#For_UEFI_motherboards]]
+
=== Kernel parameters ===
  
==== GRUB (with OS X) ====
+
{{Warning|1=Since Kernel version 4.17.2-1 adding {{ic|acpi_osi}} parameter with an empty value causes battery to be undetectable. See this [https://bbs.archlinux.org/viewtopic.php?id=238194 forum thread] for more information.
  
Another solution is to install [[GRUB]]. Edit {{ic|/tmp/install/boot/grub/grub.cfg}} and edit the boot entry to load Linux mainline instead of the normal one.
+
It's required to specify {{ic|1=acpi_osi=Darwin}} as a kernel boot parameter in order to let suspension/hibernation work properly.}}
  
{{Note|{{ic|1=libata.force=noncq}} helps with hangs due to SSD speed.}}
+
Due to [https://bugzilla.kernel.org/show_bug.cgi?id=177151 this bug], it might be required to add {{ic|1=acpi_osi=}} as a kernel boot parameter in order to improve battery life.
  
Now cd into {{ic|/tmp/install/}} and create the GRUB image by running:
+
Due to [https://bugzilla.kernel.org/show_bug.cgi?id=117481 this bug], it may be necessary to disable GPE06 by adding {{ic|1=acpi_mask_gpe=0x06}} as a kernel boot parameter. To verify that this is required, check {{ic|1=cat /sys/firmware/acpi/interrupts/gpe06}}. There should be a rapidly increasing number of interrupts registered, and one of your cores should be pegged at 100%.
grub-mkstandalone -o bootx64.efi -d usr/lib/grub/x86_64-efi -O x86_64-efi -C xz boot/grub/grub.cfg
 
This will create file called {{ic|boot64.efi}} which contains GRUB and the configuration file incorporated inside. It is important to {{ic|cd}} into the right directory to make it pick up the configuration file and put it into the right place within the image.
 
  
Copy this file to the MacBook's EFI partition. The downside of this method is that you need to repeat this step whenever you want to change the GRUB config. Reboot the machine and you should be able to select your installed Arch Linux by keeping the {{ic|Alt}} button pressed. It should appear as {{ic|EFI boot}}.
+
=== Fan control ===
  
To generate a nicer config use: {{ic|grub-mkconfig}}, remove {{ic|quiet}} if you like the text, then to update your GRUB post-installation, do this to make the GRUB EFI file and put it in the EFI partition:
+
Install {{AUR|mbpfan-git}} or {{AUR|macfanctld}} and [[enable]] the mbpfan.service in order to prevent laptop overheating.
cd /
 
grub-mkstandalone -o bootx64.efi -d usr/lib/grub/x86_64-efi -O x86_64-efi -C xz boot/grub/grub.cfg
 
sudo mount /dev/sda1 /mnt
 
sudo cp bootx64.efi /mnt/EFI/boot/bootx64.efi
 
  
{{note|You will need {{ic|hfsprogs}} to run the above commands}}
+
=== Console ===
 
 
== Post installation ==
 
  
=== Console ===
+
Largest console font can be achieved by adding {{ic|1=FONT=sun12x22}} to {{ic|/etc/vconsole.conf}}:
  
Largest console font (although ugly) achieved by adding {{ic|1=FONT=sun12x22}} to {{ic|/etc/vconsole.conf}}
+
{{hc|1=# nano /etc/vconsole.conf|2=
It is still tiny but is at least readable.
+
  ...
 +
FONT=sun12x22}}
  
 
=== Graphics ===
 
=== Graphics ===
  
====== MacBook Pro 11,1 ======
+
MacBook Pro with integrated Intel graphics and no discrete GPU are supported out of the box. See [[Intel graphics]] for additional details and configuration options.
 
 
* Intel works on 3.12 with nomodeset
 
* Intel works from 3.13.4-1-ARCH
 
 
 
====== MacBook Pro 11,2 ======
 
 
 
* Intel works from 3.13.4-1-ARCH
 
 
 
====== MacBook Pro 11,3 ======
 
 
 
* Nvidia works (both 319.60 and 331.17 drivers)
 
** Follow http://cberner.com/2013/03/01/installing-ubuntu-13-04-on-macbook-pro-retina/
 
* Intel works after patching grub, see below
 
 
 
====== MacBook Pro 11,5 ======
 
 
 
* The {{Pkg|xf86-video-nouveau}} package seems to be stable. Switching to VTs and back works fine from MATE and GNOME. SOmetimes Chromium causes a "kernele rejected pixbuf" error which freezes the desktop.
 
* The {{AUR|nvidia-dkms}} driver has been crashing a lot.
 
* The {{Pkg|nvidia}} driver seems to be super stable, but GNOME desktop won't like to start, showing you a "Oh no! Something has gone wrong" message. Cinnamon Desktop is buttery smooth with the nvidia driver, and if you want your GNOME desktop, you can run `gnome-shell --relace &` while in cinnamon desktop to switch to Gnome Shell as a workaround.
 
 
 
 
 
====== Microcode ======
 
  
You may need to install {{Pkg|intel-ucode}}, especially if you have Nvidia drivers. Read the wiki page to learn more about [[Microcode]].
+
Versions which include a discrete Nvidia GPU should need additional configuration:
 +
* MacBook Pro 11,3:
 +
** nvidia drivers work, see [[NVIDIA]] or [[Nouveau]]. In case you use the proprietary driver, see the following link [http://cberner.com/2013/03/01/installing-ubuntu-13-04-on-macbook-pro-retina/] for additional details.
 +
**It is possible to configure the integrated intel GPU, provided you are using [[GRUB]] as your bootloader of choice. See below for details
 +
* MacBook Pro 11,5
 +
** The {{Pkg|xf86-video-nouveau}} package seems to be stable. Switching to VTs and back works fine from MATE and GNOME. SOmetimes Chromium causes a "kernele rejected pixbuf" error which freezes the desktop.
 +
** The {{Pkg|nvidia-dkms}} driver has been crashing a lot.
 +
** The {{Pkg|nvidia}} driver seems to be super stable, but GNOME desktop won't like to start, showing you a "Oh no! Something has gone wrong" message. Cinnamon Desktop is buttery smooth with the nvidia driver, and if you want your GNOME desktop, you can run `gnome-shell --relace &` while in cinnamon desktop to switch to Gnome Shell as a workaround.
  
====== HiDPI ======
+
Note that the video output ports (HDMI and DisplayPort) are hardwired to the Nvidia GPU, so they will not work if you use the Intel GPU and power off the Nvidia GPU. Switching GPUs requires a reboot, so if you primarily keep the laptop docked at a desk, configuring switchable graphics may not be worth the hassle of setting it up and then rebooting every time you need to switch. However, the Nvidia GPU does use significantly more power than the Intel one, so you will take a significant hit to battery life.
 
 
See [[HiDPI]] for information on how to tweak the system for a Retina screen.
 
 
 
====== Xfce ======
 
 
 
If you are using [[Xfce]], you will probably experience tearing in Firefox, VLC, etc. Until newer versions of xfwm support OpenGL rendering, use another compositing window manager like [[compton]] with {{ic|1=backend = "glx"}}.
 
 
 
====== lightdm ======
 
 
 
If you are using lightdm on HiDPI/Retina screens you may experience a small login box
 
, to use the native resolution of 2560x1600 on the login screen create a script
 
 
 
  #!/bin/sh
 
  xrandr --output eDP1 --primary --mode 2560x1600
 
 
 
and set it as display-setup-script in /etc/lightdm/lightdm.conf
 
 
 
====== MATE ======
 
 
 
MATE's Marco seems to have problems. Replace it with GNOME's Mutter for nice animated effects. This works best with the nouveau driver.
 
 
 
# mutter --replace &&
 
 
 
Or configure MATE to use Mutter in dconf...
 
 
 
====== GNOME ======
 
 
 
It all works great out of the box with the nouveau driver.
 
  
 
==== Getting the integrated intel card to work on 11,3 ====
 
==== Getting the integrated intel card to work on 11,3 ====
Line 235: Line 169:
 
  $ cd grub-git
 
  $ cd grub-git
  
Get the patch from here: http://lists.gnu.org/archive/html/grub-devel/2013-12/msg00442.html
+
Get the patch from [http://lists.gnu.org/archive/html/grub-devel/2013-12/msg00442.html].
  
 
Put the patch contents into a file labeled something like "apple.patch"
 
Put the patch contents into a file labeled something like "apple.patch"
Line 276: Line 210:
 
To see if you dedicated GPU is actually disabled, run:
 
To see if you dedicated GPU is actually disabled, run:
  
<code>
+
# cat /sys/kernel/debug/vgaswitcheroo/switch
sudo cat /sys/kernel/debug/vgaswitcheroo/switch
+
 
</code>
+
{{Note|gpu-switch has been tested only on a select few models, those being MacBookPro9,1, MacBookPro10,1, and MacBookPro11,3. Use at your own risk.}}
 +
 
 +
=== Microcode ===
 +
 
 +
You may need to install {{Pkg|intel-ucode}}, especially if you have Nvidia drivers. Read the wiki page to learn more about [[Microcode]].
 +
 
 +
=== HiDPI ===
  
NOTICE: gpu-switch has been tested only on a select few models, those being MacBookPro9,1, MacBookPro10,1, and MacBookPro11,3. Use at your own risk.
+
See [[HiDPI]] for information on how to tweak the system for a Retina screen.
  
 
=== Sound ===
 
=== Sound ===
  
 
* Headphones work
 
* Headphones work
* Speakers work from kernel 3.13 and 3.12.2. 3.12.1 only with patch
+
* Speakers work (tested with kernel 4.8)
** Patch: https://bugzilla.kernel.org/attachment.cgi?id=114081.
 
** See discussion here: https://bugzilla.kernel.org/show_bug.cgi?id=64401
 
* Optical audio can be turned off and on with above sound patch.
 
  
 
If you do not want to hear the annoying sound at system start-up, one way to get rid of it is to turn sound off while under Mac OS.
 
If you do not want to hear the annoying sound at system start-up, one way to get rid of it is to turn sound off while under Mac OS.
Line 299: Line 236:
  
 
One method is to install {{pkg|xf86-input-synaptics}} and configure to your liking in {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}}:
 
One method is to install {{pkg|xf86-input-synaptics}} and configure to your liking in {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}}:
 +
 
  Section "InputClass"
 
  Section "InputClass"
 
     MatchIsTouchpad "on"
 
     MatchIsTouchpad "on"
Line 357: Line 295:
 
     Option          "HorizScrollDelta" "-111"
 
     Option          "HorizScrollDelta" "-111"
 
  EndSection
 
  EndSection
 +
 +
=== Swap Opt and Command Key ===
 +
 +
Swapping opt and cmd is supported by the hid_apple module:
 +
 +
$ echo 1 | sudo tee /sys/module/hid_apple/parameters/swap_opt_cmd
 +
 +
To make the change permanent add the option to /etc/modprobe.d/hid_apple.conf and rebuild initramfs.
 +
 +
$ echo options hid_apple swap_opt_cmd=1 | sudo tee -a /etc/modprobe.d/hid_apple.conf
  
 
=== Keyboard backlight ===
 
=== Keyboard backlight ===
  
* Works, see [[MacBook#Keyboard_Backlight]]
+
* Works, see [[Mac#Keyboard Backlight]]
 
* On KDE controlling the backlight with the increase or decrease brightness keys work fine, but they need upower to start before the desktop. To do this create the file {{ic|/etc/systemd/system/kdm.service.d/kbd_backlight.conf}} with this content (you might need to create the directory as well)
 
* On KDE controlling the backlight with the increase or decrease brightness keys work fine, but they need upower to start before the desktop. To do this create the file {{ic|/etc/systemd/system/kdm.service.d/kbd_backlight.conf}} with this content (you might need to create the directory as well)
 
  [Unit]
 
  [Unit]
Line 371: Line 319:
 
* Framebuffer, works for MacBook Pro 11,1 and 11,3 via {{ic|/sys/class/backlight/gmux_backlight/brightness}}.
 
* Framebuffer, works for MacBook Pro 11,1 and 11,3 via {{ic|/sys/class/backlight/gmux_backlight/brightness}}.
 
* Brightness in {{ic|/sys/class/backlight/gmux_backlight/brightness}} can be modified comfortably via the {{AUR|gmux_backlight}} utility without root privileges. Requires the {{ic|setpci}} setting below.
 
* Brightness in {{ic|/sys/class/backlight/gmux_backlight/brightness}} can be modified comfortably via the {{AUR|gmux_backlight}} utility without root privileges. Requires the {{ic|setpci}} setting below.
* Nvidia, does not work using default settings. Try adding {{ic|1=setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0}} to {{ic|/etc/rc.local}}.
+
* Nvidia, does not work using default settings. Try executing as root {{ic|1=setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0}}. It may be worthwhile to create a systemd unit to execute this on boot.
 +
* AMD models may require a patched kernel for the backlight to be adjusted. The {{AUR|linux-macbook}} kernel fixes this.
 
{{note|If the screen does not show the prompt or the login manager (i.e. a black screen), append {{ic|1=i915.invert_brightness=1}} to the kernel. }}
 
{{note|If the screen does not show the prompt or the login manager (i.e. a black screen), append {{ic|1=i915.invert_brightness=1}} to the kernel. }}
  
Line 414: Line 363:
 
Now the power key can be repurposed as keycode 124. For example in i3 conf:
 
Now the power key can be repurposed as keycode 124. For example in i3 conf:
 
     bindcode 124 ...
 
     bindcode 124 ...
 +
 +
=== Web cam ===
 +
 +
A reverse engineered driver is being developed here: https://github.com/patjak/bcwc_pcie/ . It is marked experimental, but basic functionality seems to be working. Install {{AUR|bcwc-pcie-dkms}}{{Broken package link|package not found}} or {{AUR|bcwc-pcie-git}}.
  
 
== What does not work ==
 
== What does not work ==
  
Updated 2015-04-08
+
Updated 2016-07-21
  
 
=== General ===
 
=== General ===
Line 423: Line 376:
 
=== Wi-Fi ===
 
=== Wi-Fi ===
  
* {{AUR|broadcom-wl}} or {{AUR|broadcom-wl-dkms}} from the [[AUR]] works
+
* {{Pkg|broadcom-wl}} or {{Pkg|broadcom-wl-dkms}} from the [[AUR]] works
 
** Stability is an issue for some, look at [[Broadcom wireless]] for possible fixes (e.g. downgrading kernel works if your card is BCM4360)
 
** Stability is an issue for some, look at [[Broadcom wireless]] for possible fixes (e.g. downgrading kernel works if your card is BCM4360)
 +
** If stability is still an issue after the above, a possible alternative is to connect on a 802.11g network. More recent standards can cause the BCM4360 to disconnect randomly.
  
=== Web cam ===
+
=== Backlight keys / Suspend support ===
  
* Listed on PCI bus as: Multimedia controller: Broadcom Corporation Device 1570.
+
{{AUR|linux-macbook}} is an AUR package created specifically for MacBook laptops that includes patches for these issues, as well fixing powering off correctly and CPU frequency scaling with the intel_pstate driver.
** When the apple_set_os grub patch is used with a 11,3 machine lspci reports; 04:00.0 Multimedia controller: Broadcom Corporation 720p FaceTime HD Camera
 
* In OS X, the camera is listed as FaceTime HD camera 1570.
 
* No known Linux driver. [https://bugzilla.kernel.org/show_bug.cgi?id=71131 Kernel.org Bug]
 
* Efforts to develop a reverse engineered driver: https://github.com/patjak/bcwc_pcie/
 
  
 
== Discussions ==
 
== Discussions ==
Line 441: Line 391:
  
 
* [[MacBookPro10,x]]
 
* [[MacBookPro10,x]]
* [[MacBook]]
+
* [[Mac]]
 +
 
 +
== Example ==
 +
 
 +
* https://github.com/GoGoGadgetRepo/ArchInstallMBP

Latest revision as of 22:56, 8 December 2019

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: This page flat-out ignores every possible style rule (Discuss in Talk:MacBookPro11,x#)

The MacBook Pro 11,x consists of models with Retina display shipped by Apple In Late 2013 and Mid 2014. Like its predecessors, it is based on Intel chipset, although some manual configuration might be required in specific cases in order to deal with Apple-related features.

Like previous MacBook models, the MacBook Pro 11,x supports UEFI. This page will cover the current status of hardware support on Arch Linux, as well as post-installation recommendations.

Overview

Specifically, the procedure for installing Arch Linux on a MacBook is:

  1. #Firmware updates: It always helps to start from a clean, backed up, and up-to-date install of OS X.
  2. #Partitioning: Resizing or deleting the OS X partition to create partitions for Arch Linux.
  3. #Setup bootloader: Making sure that the new partition is bootable.
  4. #Installation: Actually installing Arch Linux.
  5. #Post installation: MacBook-specific configuration.

Firmware updates

Before proceeding with the installation of Arch Linux, it is important to ensure that the latest firmware updates for you MacBook are installed. This procedure requires OS X. In OS X, open the App Store and check for updates. If your Mac finds and installs any updates, make sure to reboot your computer, and then check again for updates to make sure that you installed everything.

Note: If you uninstalled OS X or want to reinstall it, Apple has great instructions.

It is advisable to keep OS X installed, because MacBook firmware updates can only be installed using OS X. However, if you plan to remove OS X completely, make backups of these files, which you will need in Linux for adjusting the color profile:

/Library/ColorSync/Profiles/Displays/*

Partitioning

MacBooks are partitioned using the GPT scheme by default. For MacBooks running OS X versions up to and including 10.12, the partition layout will typically look like this:

  • EFI: the ~200 MB EFI system partition
  • Macintosh HD: the main partition containing your OS X installation, formatted using HFS+
  • Recovery HD: a secondary HFS+ partition containing utilities for restoring backups, formatting and re-installing OS X, typically booted by holding Cmd+r while your MacBook is starting up

For 2013/2014 MacBooks running macOS 10.13 or later, the partition layout is simpler:

  • EFI: the ~200 MB EFI system partition
  • Macintosh HD: an APFS container partition containing volumes for Apple's EFI loaders, the macOS system/user files, the recovery image and for swap in macOS.

As a general rule, partitioning is no different from any other hardware that Arch Linux can be installed on. If you plan on keeping OS X for the purpose of dual booting, you need to manually shrink the main OS X HFS+/APFS partition from within OS X's Disk Utility program.

Note: The OS X Recovery partition is not visible inside Disk Utility. However, the partition will be automatically moved after the OS X partition if you resize it. On MacBooks using APFS, the Recovery image is stored in the main APFS partition, resizing the APFS partition will move all macOS data.
Tip: You can see the true partition structure of your system from within OS X by opening a terminal and running diskutil list. Alternatively, if you have already launched the Arch installation media, you can retrieve similar information by running fdisk -l.
Warning: If your OS X partition is encrypted with FileVault 2, you must disable the disk encryption before proceeding. After the OS X partition has been resized, FileVault 2 can be re-enabled.
Note: If you plan to remove OS X, it is advisable to disable the MacBook startup sound before proceeding with partitioning. Just boot in OS X, mute your system sound and reboot again to the Arch Linux Installation media. Please keep in mind that the volume of the startup sound can only be modified reliably in OS X.

Installation

Installation is similar to any other standard laptop. Please refer to the official Installation guide for more detailed instructions, as the following content mainly describes deviations from those instructions that are specific to this MacBook model.

As this Mac model does not include a CD or DVD drive, you may wish to copy the Arch installation media onto a USB flash drive. With the Arch installation media on a flash drive, you can boot it by holding down the Alt (or Option) key while your Mac starts up, and then selecting the applicable EFI Boot option when the Apple boot manager appears.

As this model of notebook has a high DPI display, the console font displayed will be extremely small and depending on your preferences is likely to be uncomfortable to use. You may wish to change this for a more legible font, an example of which is;

$ setfont sun12x22

Internet

Thunderbolt Ethernet adapters and USB-to-Ethernet adapters are usually picked up automatically. In case you use a Thunderbolt ethernet adapter, you may have to power on the machine with the adapter plugged in for it to be picked up by the system.

Another easy option is to use USB tethering with an Android device. For more information, see Android tethering.

If you have neither, the only option is to use the onboard wireless adapter. Depending on your model, you may have the Broadcom BCM43602, which is supported by the open source brcmfac module that is built-in to the Linux kernel and typically enabled by default. If this is the case, you should have wireless available from the installer with no further configuration necessary.

Other BCM43XX chipsets may only be supported by a proprietary driver such as b43 or wl. The broadcom-wl package is included in the Arch installer media, but may need to be manually enabled before the chipset will function correctly. The b43 driver is also built-in to the kernel and included in the installation media, but it requires external proprietary firmware from the b43-firmwareAUR package which will need to be downloaded from another machine connected to the internet.

You can list the network interfaces available from the installer environment by running ip link show. If you can see your wireless interface in the list, you should now be able to use wifi-menu to select and connect to your wireless network.

If the Linux loopback device is the only listed interface, you may need to load an alternative Broadcom driver. To do this, begin by ensuring that all Broadcom drivers have been unloaded.

$ rmmod ssb
$ rmmod bcma
$ rmmod b43
$ rmmod wl

Then try loading brcmfmac again.

$ modprobe bcma

Wait a few seconds and then list your network interfaces again. If you still can't see your wireless interface, unload brcmfmac again and try reloading wl.

$ rmmod bcma
$ modprobe wl

If the wireless interface is still not listed, you will need to compile the b43-firmwareAUR package on another computer with pacman installed, put the generated package file on a second USB storage device, install the package within the Arch live environment and then load the b43 module, much like above. See Broadcom wireless and makepkg for more information.

Note: If you used the wl or b43 drivers, they will need to be manually installed to your new Arch system, this can be done by synchronising the broadcom-wl/broadcom-wl-dkms or b43-firmwareAUR packages as necessary, either during setup or after booting into your new Arch system.

Setup bootloader

MacBooks can be easily configured to use systemd-boot or GRUB directly from the Apple bootloader, without the need for third-party tools such as rEFInd. Systemd-boot is the recommended way for systems that support UEFI.

  • First, make sure you mounted the EFI System Partition at /boot (that is within the chroot, so mount it as /mnt/boot with mount /dev/sdXY /mnt/boot)
  • Proceed with Installation guide normally
  • Once inside the chrooted enviroment, type the following command to install systemd-boot:
# bootctl --path=/boot install

The above command will copy the systemd-boot binary to /boot/EFI/Boot/BOOTX64.EFI and add systemd-boot itself as the default EFI application (default boot entry) loaded by the EFI Boot Manager.

At the next reboot, the Apple Boot Manager, shown when holding down the option key when booting the MacBook, should display Arch Linux (it will be displayed as EFI Boot as a possible boot option).

Note: If you wish to use GRUB, have a look at Mac#Using the native Apple bootloader with GRUB.
Tip: After the installation, it is optionally possible to set a custom icon that will be displayed in the MacBook boot loader. In order to do that, you need to install the wget, librsvg and libicns packages. After that, just follow the following commands:
 $ wget -O /tmp/archlinux.svg https://www.archlinux.org/logos/archlinux-icon-crystal-64.svg
 $ rsvg-convert -w 128 -h 128 -o /tmp/archlogo.png /tmp/archlinux.svg
 # png2icns /boot/.VolumeIcon.icns /tmp/archlogo.png
 $ rm /tmp/archlogo.png
 $ rm /tmp/archlinux.svg

Obviously, you can replace the Arch logo with any other icon you like.

Tip: If you installed Arch Linux alongside OS X, you will be able to change the default boot location from system Settings inside OS X. If Arch Linux does not show up as a possible boot option, you will have to mount the EFI System Partition inside OS X before selecting your boot option:
$ diskutil mount disk0s1

Keep in mind, however, it is also possible to load OS X from systemd-boot.

Post installation

See General recommendations for system management directions and post-installation tutorials.

Additionally, you might want to have a look at the Power management page for useful tips in power management and battery-saving software.

Kernel parameters

Warning: Since Kernel version 4.17.2-1 adding acpi_osi parameter with an empty value causes battery to be undetectable. See this forum thread for more information. It's required to specify acpi_osi=Darwin as a kernel boot parameter in order to let suspension/hibernation work properly.

Due to this bug, it might be required to add acpi_osi= as a kernel boot parameter in order to improve battery life.

Due to this bug, it may be necessary to disable GPE06 by adding acpi_mask_gpe=0x06 as a kernel boot parameter. To verify that this is required, check cat /sys/firmware/acpi/interrupts/gpe06. There should be a rapidly increasing number of interrupts registered, and one of your cores should be pegged at 100%.

Fan control

Install mbpfan-gitAUR or macfanctldAUR and enable the mbpfan.service in order to prevent laptop overheating.

Console

Largest console font can be achieved by adding FONT=sun12x22 to /etc/vconsole.conf:

# nano /etc/vconsole.conf
...
FONT=sun12x22

Graphics

MacBook Pro with integrated Intel graphics and no discrete GPU are supported out of the box. See Intel graphics for additional details and configuration options.

Versions which include a discrete Nvidia GPU should need additional configuration:

  • MacBook Pro 11,3:
    • nvidia drivers work, see NVIDIA or Nouveau. In case you use the proprietary driver, see the following link [1] for additional details.
    • It is possible to configure the integrated intel GPU, provided you are using GRUB as your bootloader of choice. See below for details
  • MacBook Pro 11,5
    • The xf86-video-nouveau package seems to be stable. Switching to VTs and back works fine from MATE and GNOME. SOmetimes Chromium causes a "kernele rejected pixbuf" error which freezes the desktop.
    • The nvidia-dkms driver has been crashing a lot.
    • The nvidia driver seems to be super stable, but GNOME desktop won't like to start, showing you a "Oh no! Something has gone wrong" message. Cinnamon Desktop is buttery smooth with the nvidia driver, and if you want your GNOME desktop, you can run `gnome-shell --relace &` while in cinnamon desktop to switch to Gnome Shell as a workaround.

Note that the video output ports (HDMI and DisplayPort) are hardwired to the Nvidia GPU, so they will not work if you use the Intel GPU and power off the Nvidia GPU. Switching GPUs requires a reboot, so if you primarily keep the laptop docked at a desk, configuring switchable graphics may not be worth the hassle of setting it up and then rebooting every time you need to switch. However, the Nvidia GPU does use significantly more power than the Intel one, so you will take a significant hit to battery life.

Getting the integrated intel card to work on 11,3

By default the integrated card is powered off. To fix this we need a grub function called "apple_set_os". This function has not officially been merged yet, so we need to build grub ourselves. Download the grub-gitAUR package from the AUR. Using something like:

$ packer -G grub-git
$ cd grub-git

Get the patch from [2].

Put the patch contents into a file labeled something like "apple.patch"

Add this patch to your PKGBUILD and run:

$ makepkg -si

Reboot into OS X and download gfxCardStatus v2.2.1 (newer versions do not work properly) run the app and specify the integrated card.

Reboot and at the grub prompt type 'c' to get into console, followed by "apple_set_os" at the prompt.

You should now be able to install xf86-video-intel and get your card running.

Note that the HDMI port and MiniDP are soldered to the nvidia card meaning that to run external displays you need to use the dedicated card.

Alternative method to disable NVIDIA card

While the above method for switching graphics works, there is a more effective method that does not require the use of gfxCardStatus or a patched GRUB installation (but it can be used if desired).

First, the Intel GPU will not function without a patch called apple_set_os. You can either use a patched GRUB (as seen above) or use the apple_set_os.efi patch via rEFInd or chainload it via GRUB, the EFI patch can be download here, https://github.com/0xbb/apple_set_os.efi, this tricks the machine into thinking that it is booting a Mac OS X installation, making the hardware behave as such, allowing the Intel GPU to be used. rEFInd should automatically detect the patch as described on the application page. This will need to be loaded before each boot of Arch or else the Intel GPU will not function, to load it automatically it can be chainloaded via GRUB. Also, download and install the Intel drivers as described above.

Then you will need to download an application called gpu-switch for switching the GPU on dual MacBook Pros, it is fairly easy to use as well. It can be downloaded from here, https://github.com/0xbb/gpu-switch.

Secondly, once you have downloaded gpu-switch, extract the application to your home directory and open up a terminal emulator and cd to that directory. To switch to the Intel graphics, run gpu-switch -i as sudo, and the card will be active on reboot. Conversely, to enable the dedicated card instead, run gpu-switch -d as sudo. You must have booted with the aforementioned patch for this to work.

Next, gpu-switch will not completely power down the dedicated card. To do that, you will have to create a custom grub menuentry and compile a program that will power off the dedicated card.

To do that, please refer to the following article, MacBookPro10,x#Graphics_2.

You should now have working integrated graphics and the dedicated GPU should now power down. If you get a blank screen after doing this, wait and see what happens, if it stays blank for a prolonged period of time, try resetting the SMC, and then booting back into Arch.

I noticed that afterwards VGA switcheroo disabled the nouveau driver, if this workaround still does not work, try installing a cronjob package, and adding the following:

@reboot echo OFF > /sys/kernel/debug/vgaswitcheroo/switch @reboot echo IGD > /sys/kernel/debug/vgaswitcheroo/switch

I'm not sure if the vgaswitcheroo commands actually do anything, I need somebody to test this workaround and let me know how it works for them.

To see if you dedicated GPU is actually disabled, run:

# cat /sys/kernel/debug/vgaswitcheroo/switch
Note: gpu-switch has been tested only on a select few models, those being MacBookPro9,1, MacBookPro10,1, and MacBookPro11,3. Use at your own risk.

Microcode

You may need to install intel-ucode, especially if you have Nvidia drivers. Read the wiki page to learn more about Microcode.

HiDPI

See HiDPI for information on how to tweak the system for a Retina screen.

Sound

  • Headphones work
  • Speakers work (tested with kernel 4.8)

If you do not want to hear the annoying sound at system start-up, one way to get rid of it is to turn sound off while under Mac OS.

Volume keys can be made to work with xfce4-volumed (if you are using Xfce).

Also, if you are using PulseAudio, sometimes it thinks HDMI is the default sound card; to solve this problem, install pavucontrol and set Analog Stereo as the fallback device.

Touchpad

One method is to install xf86-input-synaptics and configure to your liking in /etc/X11/xorg.conf.d/50-synaptics.conf:

Section "InputClass"
    MatchIsTouchpad "on"
    Identifier      "touchpad catchall"
    Driver          "synaptics"
    # 1 = left, 2 = right, 3 = middle
    Option          "TapButton1" "1"  
    Option          "TapButton2" "3"
    Option          "TapButton3" "2"
    # Palm detection
    Option          "PalmDetect" "1"
    # Horizontal scrolling
    Option "HorizTwoFingerScroll" "1"
    # Natural Scrolling (and speed)
    Option "VertScrollDelta" "-100"
    Option "HorizScrollDelta" "-100"
EndSection

Ctrl-Click as Right-Click

Using this SuperUser receipt [3] I got Ctrl-click working as right-click. I had to increase the sleep time to 0.1 though.

input-mtrack

Another method is to use xf86-input-mtrack-gitAUR. If you like to have a thumb resting on the touchpad, this driver is the right choice, because it has an option for IgnoreThumb.

With this config the touchpad behavior becomes more osx-like.

/etc/X11/xorg.conf.d/00-touchpad.conf
Section "InputClass"
    MatchIsTouchpad "on"
    Identifier      "Touchpads"
    Driver          "mtrack"
    Option          "Sensitivity" "0.64"
    Option          "FingerHigh" "5"
    Option          "FingerLow" "1"
    Option          "IgnoreThumb" "true"
    Option          "IgnorePalm" "true"
    Option          "DisableOnPalm" "true"
    Option          "TapButton1" "1"
    Option          "TapButton2" "3"
    Option          "TapButton3" "2"
    Option          "TapButton4" "0"
    Option          "ClickFinger1" "1"
    Option          "ClickFinger2" "2"
    Option          "ClickFinger3" "3"
    Option          "ButtonMoveEmulate" "false"
    Option          "ButtonIntegrated" "true"
    Option          "ClickTime" "25"
    Option          "BottomEdge" "30"
    Option          "SwipeLeftButton" "8"
    Option          "SwipeRightButton" "9"
    Option          "SwipeUpButton" "0"
    Option          "SwipeDownButton" "0"
    Option          "ScrollDistance" "75"
    Option          "VertScrollDelta" "-111"
    Option          "HorizScrollDelta" "-111"
EndSection

Swap Opt and Command Key

Swapping opt and cmd is supported by the hid_apple module:

$ echo 1 | sudo tee /sys/module/hid_apple/parameters/swap_opt_cmd

To make the change permanent add the option to /etc/modprobe.d/hid_apple.conf and rebuild initramfs.

$ echo options hid_apple swap_opt_cmd=1 | sudo tee -a /etc/modprobe.d/hid_apple.conf

Keyboard backlight

  • Works, see Mac#Keyboard Backlight
  • On KDE controlling the backlight with the increase or decrease brightness keys work fine, but they need upower to start before the desktop. To do this create the file /etc/systemd/system/kdm.service.d/kbd_backlight.conf with this content (you might need to create the directory as well)
[Unit]
Requires=upower.service
After=upower.service

Screen backlight

  • Intel, works on Linux 3.13
  • Framebuffer, works for MacBook Pro 11,1 and 11,3 via /sys/class/backlight/gmux_backlight/brightness.
  • Brightness in /sys/class/backlight/gmux_backlight/brightness can be modified comfortably via the gmux_backlightAUR utility without root privileges. Requires the setpci setting below.
  • Nvidia, does not work using default settings. Try executing as root setpci -v -H1 -s 00:01.00 BRIDGE_CONTROL=0. It may be worthwhile to create a systemd unit to execute this on boot.
  • AMD models may require a patched kernel for the backlight to be adjusted. The linux-macbookAUR kernel fixes this.
Note: If the screen does not show the prompt or the login manager (i.e. a black screen), append i915.invert_brightness=1 to the kernel.

Suspend

  • Works from Linux 3.13
    • It may be necessary to disable USB's wakeup ability by by echoing 'XHC1' to '/proc/acpi/wakeup' in order to prevent immediate wakeup on suspend.
  • No backlight after suspend with Linux 3.12
    • Use hibernate instead

Powersave

Disabling the internal cardreader and bluetooth controller may save battery life. When not using them, create the following udev rules:

/etc/udev/rules.d/99-apple_cardreader.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="8406", RUN+="/usr/local/sbin/remove_ignore_usb-device.sh 05ac 8406"
/etc/udev/rules.d/99-apple_broadcom_bcm2046_bluetooth.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="8289", RUN+="/usr/local/sbin/remove_ignore_usb-device.sh 05ac 8289"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0a5c", ATTRS{idProduct}=="4500", RUN+="/usr/local/sbin/remove_ignore_usb-device.sh 0a5c 4500"

As udev's OPTIONS=="ignore_device" may not work reliably, the above rules use a script to manually remove the usb device from /sys/bus/usb/devices/.

If battery life is not satisfactory, it may help to use power saving utilities, such as tlp, and/or powertop from the official repositories. To better optimize battery life, TLP also has a configuration file located at /etc/default/tlp that you can edit to suit your machine. For more information, visit the wiki pages for these tools, TLP and Powertop, respectively.

SD Card Reader

  • Disappears sporadically after suspend as of Linux 3.18. Workaround is to create /etc/modprobe.d/xhci-reset-on-suspend.conf with:
  # Reset XHCI USB devices on suspend/resume, fixes SD Card reader vanishing after suspend 
  options xhci_hcd quirks=0x80

Note: As of Linux 3.18.6-1 (and possibly earlier versions post-3.18), this fix may not be needed and might cause issues ranging from failed suspend to the SD card not being recognized at all. Test with and without the fix to determine which works best for you.

Repurpose the power key

By default systemd handles the rMBPs power key as defined in /etc/systemd/logind.conf. By setting

   HandlePowerKey=ignore

systemd ignores power key events.

Now the power key can be repurposed as keycode 124. For example in i3 conf:

   bindcode 124 ...

Web cam

A reverse engineered driver is being developed here: https://github.com/patjak/bcwc_pcie/ . It is marked experimental, but basic functionality seems to be working. Install bcwc-pcie-dkmsAUR[broken link: package not found] or bcwc-pcie-gitAUR.

What does not work

Updated 2016-07-21

General

Wi-Fi

  • broadcom-wl or broadcom-wl-dkms from the AUR works
    • Stability is an issue for some, look at Broadcom wireless for possible fixes (e.g. downgrading kernel works if your card is BCM4360)
    • If stability is still an issue after the above, a possible alternative is to connect on a 802.11g network. More recent standards can cause the BCM4360 to disconnect randomly.

Backlight keys / Suspend support

linux-macbookAUR is an AUR package created specifically for MacBook laptops that includes patches for these issues, as well fixing powering off correctly and CPU frequency scaling with the intel_pstate driver.

Discussions

See also

Example