From ArchWiki

See also Wikipedia:MacBook.

Model list

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: According to Mac#iSight, iSight should be working since linux≥2.6.37. (Discuss in Talk:Laptop/Apple)
Model version Date Video Sound Ethernet Wireless Bluetooth Power management Other Remarks
MacBookPro3,1 Mid 2007 2007-08 Yes Yes Yes Yes Yes Yes
MacBook2,1 Mid 2007 2009-08 Yes Yes Yes Yes Yes Yes iSight does not work See #MacBook2,1 Mid 2007
MacBookPro5,2 2009 2009-08 Yes Yes Yes Yes Untested Yes
MacBookPro5 Mid 2009 2016-08-01 Yes Yes Yes Yes Yes Untested iSight does not work Switching to TTY does not work with proprietary nvidia drivers, works with nouveau.
MacBookPro6,2 Mid 2010 2017-04-01 Yes Yes Yes Yes Yes Untested See #MacBookPro6,2 Mid 2010
MacBookPro9,2 (Mid-2012) 2018-03-01 Yes Yes Yes Yes Yes Yes
MacBookAir6 2013 2014-10-01 Yes Yes Yes Yes Yes Yes iSight does not work
MacBookAir 7,2 Early 2015 2021-11-01 Yes Yes External Yes Yes Yes Guide:


MacBook2,1 Mid 2007

Boot loader

See UEFI#UEFI firmware bitness: this machine runs a 32-bit EFI. This means you should make sure the boot loader you choose supports mixed mode booting (i.e. a 64-bit OS on a 32-bit UEFI). For GRUB, use i386-efi as the target.


The MacBook will not reboot properly by default. It needs the reboot=pci kernel parameter.


Merge-arrows-2.pngThis article or section is a candidate for merging with PulseAudio/Troubleshooting.Merge-arrows-2.png

Notes: This is PulseAudio specific and was added a year ago as a workaround for this model but is not specific to it. (Discuss in Talk:Laptop/Apple)

If your microphone is not working, you have probably run into a driver bug which makes PulseAudio think the digital microphone is always plugged in, disabling the normal microphone.

To work around it, disable the PulseAudio plug detector with this patch:

--- a/usr/share/pulseaudio/alsa-mixer/paths/analog-input-mic.conf
+++ b/usr/share/pulseaudio/alsa-mixer/paths/analog-input-mic.conf
@@ -23,6 +23,8 @@

 [Jack Mic]
 required-any = any
+state.plugged = unknown
+state.unplugged = unknown

 [Jack Mic Phantom]
 required-any = any
@@ -31,6 +33,8 @@

 [Jack Mic - Input]
 required-any = any
+state.plugged = unknown
+state.unplugged = unknown

 [Element Capture]
 switch = mute
Note: This needs to be reapplied manually after every PulseAudio upgrade. PulseAudio does not support yet local customization files that could make this patch permanent.

MacBookAir1,1 Early 2008

Since this model has only one USB port, you may find it easiest to install Arch with a powered USB hub. Plug a USB network adapter (wireless or ethernet adapter to plug into a USB port) and your Arch installation media into the USB hub.

See Mac#WiFi. If you cannot get any result by scanning wireless network after boot, unload modules b43 and ssb and load them again:

# rmmod ssb
# rmmod b43
# modprobe b43

There is a good chance you will find what's wrong with DMA from the dmesg log.

Even if you can scan wireless networks after reloading the modules, it is still possible that you will only be able to connect to some networks, but not all of them. According to a more detailed discussion here:, adding pio=1,qos=0 options to the b43 module can solve this problem.

MacBookAir2,1 Mid 2009

See Mac#WiFi. Append options b43 pio=1 qos=0 to /etc/modprobe.d/b43.conf.

MacBookPro6,2 Mid 2010

Heat issues solved with mbpfan-gitAUR.

On this model only the nouveau driver can be installed when booting in UEFI mode, nvidia-340xx-dkmsAUR causes a black blank screen when Xorg loads.

Suspension and hibernation are dysfunctional (see Debian Wiki) when using the open source nouveau driver: the solution is to use the init_on_alloc=0 kernel parameter.

MacBookPro7,1 Mid 2010

Booting the installation media, you might encounter the following error:

unable to handle kernel NULL pointer dereference at 0000000000000010" during pacpi_set_dmamode. 

To fix this problem, boot with the option: acpi=off. After chrooting, add MODULES=(ata_generic) to /etc/mkinitcpio.conf and regenerate the initramfs, see Installation guide#Configure the system.

MacBookAir5,1 Mid 2012

If you have issues with waking from sleep while in X11 such as a black screen or showing the console with a frozen mouse cursor then remove xf86-input-synaptics and install xf86-input-mtrack-gitAUR. This fixed errors such as

 (EE) [dix] bcm5974: unable to find touch point 0

and backtraces that causes X11 to crash. This might apply to Version 5,2 assuming they use the same trackpad.

MacBookAir6,1 Early 2014

Unless you have a local repository on a USB disk, you need a USB to Ethernet adapter or a USB wireless adapter supported natively by the kernel to easily install Arch Linux, since you have to install the broadcom-wl-dkms package to make the internal wireless card work.

rEFInd uses 30 seconds to start booting, following Mac#Avoid long EFI wait before booting stops rEFInd from loading and it has to be re-installed.

MacBookPro12,1/11,4+ 2015


The brcmfmac driver is working as of 2015-11-20, with newer firmware necessary for working 5GHz support (see here.)

Note: On the Macbook Pro 12,1 if the brcmfmac driver can not be started and the following errors occur in the journal:
brcmfmac: brcmf_chip_recognition: chip backplane type 15 is not supported
brcmfmac: brcmf_pcie_probe: failed 14e4:43ba

Then check whether PCI runtime power management is enabled on the device, and disable it if so.

Keyboard and trackpad

Haptic feedback works out of the box due to the trackpad's built-in firmware.

There are several drivers available that provide multitouch support. The following have been confirmed working with the MacBookPro12,1.

For xf86-input-libinput the following configuration emulates some features from the macOS functionality. For more options see libinput(4).

Section "InputClass"
    Identifier "libinput touchpad catchall"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    Driver "libinput"
    Option "NaturalScrolling" "true"

For xf86-input-synaptics the following configuration is necessary to make the touchpad work fully.

Section "InputClass"
    Identifier "Trackpad"
    Driver "synaptics"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"


See MacBookPro11,x#Graphics to enable the integrated graphics. See PRIME for details on handling hybrid graphics.

If you are experiencing flickering issues with Xorg, you can set i915.enable_rc6=0 as a kernel parameter, which will disable the power savings for the Intel graphics.

MacBook9,1 Early 2016

  • Booting from USB via EFI works fine, when giving the intremap=nosid kernel option. Remember to hold Alt on booting to enter the boot menu. In order to allow Linux boot directly from your system disk, you will first need to install rEFInd from the OSX recovery mode (hold Cmd+r during boot, then open terminal, run the refind-install script).
  • The wireless card works out of the box with brcmfmac.
  • Suspend / hibernate does not work. The problem seems to be the NVMe that does not wake up. When booting from an external drive, suspend / hibernate works out of the box.
  • Audio recording works out of the box. Audio playback works out of the box for headphones, not for built-in speakers. Cirrus driver patch needed for making the speakers work:
  • The keyboard and the touchpad do not work out of the box. There is a work-in-progress driver available that works well: macbook12-spi-driver-dkmsAUR. Sometimes the touchpad does not work after booting but this can be fixed by reloading the driver with rmmod applespi && modprobe applespi.
  • The keyboard backlight does not work (no solution yet).
  • For Bluetooth driver, see macbook12-bluetooth-driverAUR

Macmini8,1 Late 2018

Warning: Attempting to modify UEFI boot parameters with efibootmgr is likely to crash in the kernel.

Since efibootmgr is used during the GRUB install phase, but the firmware on this model can function without it, use the following adaptation of Mac#Using the native Apple boot loader with GRUB:

  • Instead of creating an HFS+ partition, create a fat32 partition for the boot loader
  • Instead of using grub-install, create grub image and install it manually:
# mkdir -p /boot/grub/fonts
# grub-mkimage -O x86_64-efi -o /boot/System/Library/CoreServices/boot.efi -p /boot/grub part_gpt hfsplus fat ext2 btrfs normal chain boot configfile linux appleldr minicmd loadbios reboot halt search font gfxterm png all_video
# cp -r /usr/lib/grub/x86_64-efi /boot/grub/
# cp /usr/share/grub/unicode.pf2 /boot/grub/fonts/
  • Alternatively, boot with the efi=noruntime kernel parameter
  • Touching /boot/mach_kernel is not necessary anymore.