An excerpt from the repository, fetched Nov 13, 2026.
Read the project’s introduction
State of Linux on the MacBook Pro 2016 & 2017
The following document provides an overview about Linux support for Apple's
MacBook Pro 2016 and MacBook Pro 2017 models.
The MacBook Pro 2016 shares surprisingly many components with the Retina
MacBook (e.g. keyboard and touchpad controller, Wi-Fi and bluetooth chipsets,
...), so figuring out how things work on one device should benefit both device
families.
The Apple MacBook Pro 2017 models are nearly identical to their 2016
counterparts, except for the use of newer Intels Kaby Lake processors instead
of Intel Skylake processors, faster memory and updated AMD Radeon GPUs in the
15-inch models.
The checks if hardware works below were done with multiple Linux distributions.
To state the obvious: The newer the kernel the better. The information below
assumes that you run Linux 5.4 or newer.
If you don't know what the model identifier for your MacBook Pro is (as that
identifier is used on several occasions below), check
https://support.apple.com/en-us/HT201300
Contribution
If you want to contribute to get Linux running smoothly on the MacBook Pro
2016, report all findings on how to get devices working as pull requests! All help
is appreciated.
There is also a chat available via gitter for discussions:
Current status
Device
Status
Audio input & output
Battery
Bluetooth
FaceTime HD camera
Graphics card (Intel)
Graphics card (AMD)
Keyboard & Touchpad
NVMe (internal SSD)
Screen
Suspend & Hibernation
System Management Controller
Thunderbolt
Touch Bar
Touch ID
USB
Wi-Fi
Audio input & output
With the applied Cirrus 8409 kernel driver patch from
https://github.com/davidjo/snd_hda_macbookpro the internal audio input and
output has been verified to work for the MacBookPro13,1, MacBookPro13,3 and
MacBookPro14,3.
If you are having issues with the internal audio input, and you are using
PulseAudio for your Linux distro; then try switching between the built-in
audio profiles and see if it's receiving the background sound with help of the
pavucontrol command, it should work on 'Analog Stereo Duplex' built-in audio
profile.
With the MacBookPro14,1 the internal audio output is working, however the
internal audio input is not working.
For the rest of the MacBook Pro models the audio via HDMI or any USB-connected
audio device is working, so at least they can act as a workaround until
internal audio is working.
See also:
https://bugzilla.kernel.org/show_bug.cgi?id=195671
https://bugzilla.kernel.org/show_bug.cgi?id=110561
http://mailman.alsa-project.org/pipermail/alsa-devel/2018-November/141942.html
Battery
Working fine, including the interface to get current capacity, temperature,
etc.
Battery life is still suboptimal, because power saving modes for several
devices, like display (panel self refresh), SSD or the Thunderbolt
controllers, aren't working yet. You can expect a battery life of less
than 4 hours.
Bluetooth
Works out of the box, except for the models without Touch Bar, which still
suffer from a bug and need an additional patch as noted in
#29 (comment)
Transmitting audio using A2DP is still choppy for unknown reasons, maybe
because the Bluetooth support is limited to lower bandwidth applications so
far.
See also:
https://bugzilla.kernel.org/show_bug.cgi?id=110901
FaceTime HD camera
In the MacBookPro13,1 (without Touch Bar) the FaceTime HD camera is connected
via PCIe, like in previous MacBook Pro's. It's working with the
bcwc_pcie driver.
The models with Touch Bar have the FaceTime HD camera connected through the
iBridge device via USB. They are exposed as regular USB video devices and are
supported by the uvcvideo driver out of the box.
Graphics card
Intel
Graphical output using the Intel GPU is working out of the box on the
MacBookPro 13,1 and 13,2, without dedicated AMD GPU. For the MacBookPro 13,3
with dedicated AMD GPU, only the AMD GPU is enabled when booting an OS which
isn't macOS, so you have to follow the instructions in the following link to
enable the integrated Intel GPU, if you want to use it:
#6 (comment)
Intel GPU has not yet been tested on the MacBookPro16,1.
Connecting external displays via USB-C-to-DisplayPort cables works fine,
including connections with daisy-chaining/MST. An actual tested and working
setup includes concurrent output on the internal display and two external
displays daisy-chained together with Full HD each.
AMD
Works out of the box for the MacBookPro13,3 and MacBookPro14,3.
The MacBookPro16,1 currently requires a 5.6-RC kernel and the latest amdgpu
drivers.
Keyboard & Touchpad
Works out of the box for the MacBookPro13,* and MacBookPro14,*.
For models with a T2 chip (MacBookPro15,* MacBookPro16,1) you'll need the BCE
drivers from https://github.com/MCMrARM/mbp2018-bridge-drv and the touchpad
and keyboard patches from https://github.com/aunali1/linux-mbp-arch.
For earlier Linux versions you can get the driver from
https://github.com/roadrunner2/macbook12-spi-driver.
The Esc and function keys are part of the Touch Bar in all Touch Bar-models, so
follow the instructions for the Touch Bar to get it working.
Beside the actual keyboard, the power button and the lid close event work out
of the box.
Palm rejection based on touch-sizes and disable-touchpad-while-typing are
working with
this patch
to libinput (master branch).
See also:
https://bugzilla.kernel.org/show_bug.cgi?id=99891
https://bugzilla.kernel.org/show_bug.cgi?id=108331
NVMe
Works out of the box.
The SSDs used in the MacBook Pros don't seem to support APST. As it's currently
unknown how power saving works for those SSDs it's likely they consume way more
power than they need to, therefore reducing the battery life.
Screen
Works out of the box.
Adjustable screen brightness only works out of the box for the models without
additional AMD Radeon GPU (MacBookPro13,1 and MacBookPro1
Read the full README on GitHub