{"id":13563738,"url":"https://github.com/Dunedan/mbp-2016-linux","last_synced_at":"2025-04-03T20:31:42.242Z","repository":{"id":16323313,"uuid":"79715377","full_name":"Dunedan/mbp-2016-linux","owner":"Dunedan","description":"State of Linux on the MacBook Pro 2016 \u0026 2017","archived":false,"fork":false,"pushed_at":"2024-03-10T01:03:45.000Z","size":2809,"stargazers_count":2088,"open_issues_count":39,"forks_count":108,"subscribers_count":127,"default_branch":"master","last_synced_at":"2024-10-15T05:40:51.226Z","etag":null,"topics":["apple","linux","macbook","macbook-pro","notebook"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dunedan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-22T12:06:32.000Z","updated_at":"2024-10-13T06:25:53.000Z","dependencies_parsed_at":"2024-08-01T13:19:42.140Z","dependency_job_id":"2df9222e-38a1-4203-ad09-4480572a91a0","html_url":"https://github.com/Dunedan/mbp-2016-linux","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dunedan%2Fmbp-2016-linux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dunedan%2Fmbp-2016-linux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dunedan%2Fmbp-2016-linux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dunedan%2Fmbp-2016-linux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dunedan","download_url":"https://codeload.github.com/Dunedan/mbp-2016-linux/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223030703,"owners_count":17076483,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apple","linux","macbook","macbook-pro","notebook"],"created_at":"2024-08-01T13:01:22.785Z","updated_at":"2024-11-04T16:31:14.783Z","avatar_url":"https://github.com/Dunedan.png","language":"Shell","readme":"# State of Linux on the MacBook Pro 2016 \u0026 2017\n\nThe following document provides an overview about Linux support for Apple's\nMacBook Pro 2016 and MacBook Pro 2017 models.\n\nThe MacBook Pro 2016 shares surprisingly many components with the Retina\nMacBook (e.g. keyboard and touchpad controller, Wi-Fi and bluetooth chipsets,\n...), so figuring out how things work on one device should benefit both device\nfamilies.\n\nThe Apple MacBook Pro 2017 models are nearly identical to their 2016\ncounterparts, except for the use of newer Intels Kaby Lake processors instead\nof Intel Skylake processors, faster memory and updated AMD Radeon GPUs in the\n15-inch models.\n\nThe checks if hardware works below were done with multiple Linux distributions.\nTo state the obvious: The newer the kernel the better. The information below\nassumes that you run Linux 5.4 or newer.\n\nIf you don't know what the model identifier for your MacBook Pro is (as that\nidentifier is used on several occasions below), check\nhttps://support.apple.com/en-us/HT201300\n\n## Contribution\n\nIf you want to contribute to get Linux running smoothly on the MacBook Pro\n2016, report all findings on how to get devices working as pull requests! All help\nis appreciated.\n\nThere is also a chat available via gitter for discussions:\n[![Gitter chat](https://badges.gitter.im/Dunedan/mbp-2016-linux.png)](https://gitter.im/mbp-2016-linux/Lobby)\n\n## Current status\n\n| Device  | Status |\n| ------- | ------ |\n| [Audio input \u0026 output](#audio-input--output) | ![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 not working](https://img.shields.io/badge/MacBookPro13%2C2-not_working-red.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 partially working](https://img.shields.io/badge/MacBookPro14%2C1-partially_working-yellow.svg) ![MacBookPro14,2 not working](https://img.shields.io/badge/MacBookPro14%2C2-not_working-red.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 not working](https://img.shields.io/badge/MacBookPro16%2C1-not_working-red.svg) ![MacBookPro16,2 not working](https://img.shields.io/badge/MacBookPro16%2C2-not_working-red.svg) |\n| [Battery](#battery) | ![all models working](https://img.shields.io/badge/all_models-working-green.svg) |\n| [Bluetooth](#bluetooth) | ![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) ![MacBookPro16,2 not working](https://img.shields.io/badge/MacBookPro16%2C2-not_working-red.svg) |\n| [FaceTime HD camera](#facetime-hd-camera) | ![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) ![MacBookPro16,2 not working](https://img.shields.io/badge/MacBookPro16%2C2-not_working-red.svg) |\n| [Graphics card](#intel) (Intel) | ![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 unknown](https://img.shields.io/badge/MacBookPro16%2C1-unknown-grey.svg) ![MacBookPro16,2 working](https://img.shields.io/badge/MacBookPro16%2C2-working-green.svg) |\n| [Graphics card](#amd) (AMD) | ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) |\n| [Keyboard \u0026 Touchpad](#keyboard--touchpad) | ![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) ![MacBookPro16,2 working](https://img.shields.io/badge/MacBookPro16%2C2-working-green.svg) |\n| [NVMe](#nvme) (internal SSD) | ![all models working](https://img.shields.io/badge/all_models-working-green.svg) |\n| [Screen](#screen) | ![all models working](https://img.shields.io/badge/all_models-working-green.svg) |\n| [Suspend \u0026 Hibernation](#suspend--hibernation) |![all models partially working](https://img.shields.io/badge/all_models-partially_working-yellow.svg) |\n| [System Management Controller](#system-management-controller) | ![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) ![MacBookPro16,2 not working](https://img.shields.io/badge/MacBookPro16%2C2-not_working-red.svg) |\n| [Thunderbolt](#thunderbolt) | ![all models working](https://img.shields.io/badge/all_models-working-green.svg) |\n| [Touch Bar](#touch-bar) | ![MacBookPro13,2 partially working](https://img.shields.io/badge/MacBookPro13%2C2-partially_working-yellow.svg) ![MacBookPro13,3 partially working](https://img.shields.io/badge/MacBookPro13%2C3-partially_working-yellow.svg) ![MacBookPro14,2 partially working](https://img.shields.io/badge/MacBookPro14%2C2-partially_working-yellow.svg) ![MacBookPro14,3 partially working](https://img.shields.io/badge/MacBookPro14%2C3-partially_working-yellow.svg) ![MacBookPro16,1 partially working](https://img.shields.io/badge/MacBookPro16%2C1-partially_working-yellow.svg) ![MacBookPro16,2 partially working](https://img.shields.io/badge/MacBookPro16%2C2-partially_working-yellow.svg) |\n| [Touch ID](#touch-id) | ![MacBookPro13,2 not working](https://img.shields.io/badge/MacBookPro13%2C2-not_working-red.svg) ![MacBookPro13,3 not working](https://img.shields.io/badge/MacBookPro13%2C3-not_working-red.svg) ![MacBookPro14,2 not working](https://img.shields.io/badge/MacBookPro14%2C2-not_working-red.svg) ![MacBookPro14,3 not working](https://img.shields.io/badge/MacBookPro14%2C3-not_working-red.svg) ![MacBookPro16,1 not working](https://img.shields.io/badge/MacBookPro16%2C1-not_working-red.svg) ![MacBookPro16,2 not working](https://img.shields.io/badge/MacBookPro16%2C2-not_working-red.svg) |\n| [USB](#usb) | ![all models working](https://img.shields.io/badge/all_models-working-green.svg) |\n| [Wi-Fi](#wi-fi) | ![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 not working](https://img.shields.io/badge/MacBookPro13%2C2-not_working-red.svg) ![MacBookPro13,3 not working](https://img.shields.io/badge/MacBookPro13%2C3-not_working-red.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 not working](https://img.shields.io/badge/MacBookPro14%2C2-not_working-red.svg) ![MacBookPro14,3 not working](https://img.shields.io/badge/MacBookPro14%2C3-not_working-red.svg) ![MacBookPro16,1 not working](https://img.shields.io/badge/MacBookPro16%2C1-not_working-red.svg) ![MacBookPro16,2 not working](https://img.shields.io/badge/MacBookPro16%2C2-not_working-red.svg) |\n\n## Audio input \u0026 output\n\n![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 not working](https://img.shields.io/badge/MacBookPro13%2C2-not_working-red.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 partially working](https://img.shields.io/badge/MacBookPro14%2C1-partially_working-yellow.svg) ![MacBookPro14,2 not working](https://img.shields.io/badge/MacBookPro14%2C2-not_working-red.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg)  ![MacBookPro16,1 not working](https://img.shields.io/badge/MacBookPro16%2C1-not_working-red.svg) ![MacBookPro16,2 not working](https://img.shields.io/badge/MacBookPro16%2C2-not_working-red.svg)\n\nWith the applied Cirrus 8409 kernel driver patch from\nhttps://github.com/davidjo/snd_hda_macbookpro the internal audio input and\noutput has been verified to work for the MacBookPro13,1, MacBookPro13,3 and\nMacBookPro14,3.\n\nIf you are having issues with the internal audio input, and you are using\nPulseAudio for your Linux distro; then try switching between the built-in\naudio profiles and see if it's receiving the background sound with help of the\n`pavucontrol` command, it should work on 'Analog Stereo Duplex' built-in audio\nprofile.\n\nWith the MacBookPro14,1 the internal audio output is working, however the\ninternal audio input is not working.\n\nFor the rest of the MacBook Pro models the audio via HDMI or any USB-connected\naudio device is working, so at least they can act as a workaround until\ninternal audio is working.\n\nSee also:\n\n* https://bugzilla.kernel.org/show_bug.cgi?id=195671\n* https://bugzilla.kernel.org/show_bug.cgi?id=110561\n* http://mailman.alsa-project.org/pipermail/alsa-devel/2018-November/141942.html\n\n## Battery\n\n![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) ![MacBookPro16,2 working](https://img.shields.io/badge/MacBookPro16%2C2-working-green.svg)\n\nWorking fine, including the interface to get current capacity, temperature,\netc.\n\nBattery life is still suboptimal, because power saving modes for several\ndevices, like display (panel self refresh), SSD or the Thunderbolt\ncontrollers, aren't working yet. You can expect a battery life of less\nthan 4 hours.\n\n## Bluetooth\n\n![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) ![MacBookPro16,2 not working](https://img.shields.io/badge/MacBookPro16%2C2-not_working-red.svg)\n\nWorks out of the box, except for the models without Touch Bar, which still\nsuffer from a bug and need an additional patch as noted in\nhttps://github.com/Dunedan/mbp-2016-linux/issues/29#issuecomment-371370548\n\nTransmitting audio using A2DP is still choppy for unknown reasons, maybe\nbecause the Bluetooth support is limited to lower bandwidth applications so\nfar.\n\nSee also:\n\n* https://bugzilla.kernel.org/show_bug.cgi?id=110901\n\n## FaceTime HD camera\n\n![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) ![MacBookPro16,2 not working](https://img.shields.io/badge/MacBookPro16%2C2-not_working-red.svg)\n\nIn the MacBookPro13,1 (without Touch Bar) the FaceTime HD camera is connected\nvia PCIe, like in previous MacBook Pro's. It's working with the\n[`bcwc_pcie`](https://github.com/patjak/bcwc_pcie/wiki) driver.\n\nThe models with Touch Bar have the FaceTime HD camera connected through the\niBridge device via USB. They are exposed as regular USB video devices and are\nsupported by the `uvcvideo` driver out of the box.\n\n## Graphics card\n\n### Intel\n\n![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 unknown](https://img.shields.io/badge/MacBookPro16%2C1-unknown-grey.svg) ![MacBookPro16,2 working](https://img.shields.io/badge/MacBookPro16%2C2-working-green.svg)\n\nGraphical output using the Intel GPU is working out of the box on the\nMacBookPro 13,1 and 13,2, without dedicated AMD GPU. For the MacBookPro 13,3\nwith dedicated AMD GPU, only the AMD GPU is enabled when booting an OS which\nisn't macOS, so you have to follow the instructions in the following link to\nenable the integrated Intel GPU, if you want to use it:\nhttps://github.com/Dunedan/mbp-2016-linux/issues/6#issuecomment-286168538\n\nIntel GPU has not yet been tested on the MacBookPro16,1.\n\nConnecting external displays via USB-C-to-DisplayPort cables works fine,\nincluding connections with daisy-chaining/MST. An actual tested and working\nsetup includes concurrent output on the internal display and two external\ndisplays daisy-chained together with Full HD each.\n\n### AMD\n\n![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg)\n\nWorks out of the box for the MacBookPro13,3 and MacBookPro14,3.\n\nThe MacBookPro16,1 currently requires a 5.6-RC kernel and the latest `amdgpu`\ndrivers.\n\n## Keyboard \u0026 Touchpad\n\n![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) ![MacBookPro16,2 working](https://img.shields.io/badge/MacBookPro16%2C2-working-green.svg)\n\nWorks out of the box for the MacBookPro13,* and MacBookPro14,*.\n\nFor models with a T2 chip (MacBookPro15,* MacBookPro16,1) you'll need the BCE\ndrivers from https://github.com/MCMrARM/mbp2018-bridge-drv and the touchpad\nand keyboard patches from https://github.com/aunali1/linux-mbp-arch.\n\nFor earlier Linux versions you can get the driver from\nhttps://github.com/roadrunner2/macbook12-spi-driver.\n\nThe Esc and function keys are part of the Touch Bar in all Touch Bar-models, so\nfollow the instructions for the [Touch Bar](#touch-bar) to get it working.\n\nBeside the actual keyboard, the power button and the lid close event work out\nof the box.\n\nPalm rejection based on touch-sizes and disable-touchpad-while-typing are\nworking with\n[this patch](https://gist.github.com/peterychuang/5cf9bf527bc26adef47d714c758a5509)\nto [libinput](https://cgit.freedesktop.org/wayland/libinput) (master branch).\n\nSee also:\n\n* https://bugzilla.kernel.org/show_bug.cgi?id=99891\n* https://bugzilla.kernel.org/show_bug.cgi?id=108331\n\n## NVMe\n\n![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) ![MacBookPro16,2 working](https://img.shields.io/badge/MacBookPro16%2C2-working-green.svg)\n\nWorks out of the box.\n\nThe SSDs used in the MacBook Pros don't seem to support APST. As it's currently\nunknown how power saving works for those SSDs it's likely they consume way more\npower than they need to, therefore reducing the battery life.\n\n## Screen\n\n![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) ![MacBookPro16,2 working](https://img.shields.io/badge/MacBookPro16%2C2-working-green.svg)\n\nWorks out of the box.\n\nAdjustable screen brightness only works out of the box for the models without\nadditional AMD Radeon GPU (MacBookPro13,1 and MacBookPro13,2). For the\nMacBookPro13,3 with additional AMD Radeon GPU the following patch is necessary:\nhttps://bugzilla.kernel.org/show_bug.cgi?id=105051#c32\n\nThere is one oddity in the EDID data of the 13\" models, as it contains a\n`2800x1800` mode in addition to the correct `2560x1600` mode. In the end that\ndoesn't matter, as Xorg probes and sets the correct resolution of `2560x1600`.\n\n## Suspend \u0026 Hibernation\n\n![MacBookPro13,1 partially working](https://img.shields.io/badge/MacBookPro13%2C1-partially_working-yellow.svg) ![MacBookPro13,2 partially working](https://img.shields.io/badge/MacBookPro13%2C2-partially_working-yellow.svg) ![MacBookPro13,3 partially working](https://img.shields.io/badge/MacBookPro13%2C3-partially_working-yellow.svg) ![MacBookPro14,1 partially working](https://img.shields.io/badge/MacBookPro14%2C1-partially_working-yellow.svg) ![MacBookPro14,2 partially working](https://img.shields.io/badge/MacBookPro14%2C2-partially_working-yellow.svg) ![MacBookPro14,3 partially working](https://img.shields.io/badge/MacBookPro14%2C3-partially_working-yellow.svg)\n![MacBookPro16,1 partially working](https://img.shields.io/badge/MacBookPro16%2C1-partially_working-yellow.svg) ![MacBookPro16,2 not working](https://img.shields.io/badge/MacBookPro16%2C2-not_working-red.svg)\n\nPutting the MacBook Pro into suspend mode works on all models, but successful\nresume requires additional prerequisites as explained below.\n\nModels with Apple's NVMe controller (MacBookPro13,1, MacBookPro13,2,\nMacBookPro14,1 and MacBookPro14,2) require disabling the `d3cold` PCIe power\nstate for the NVMe controller to successfully wake up again:\n\n```\necho 0 \u003e /sys/bus/pci/devices/0000\\:01\\:00.0/d3cold_allowed\n```\n\nThis command must be executed from root, and ideally on startup, since the file\nis rewritten to '1' on startup. Even then resume is incredible slow and takes\nup to a minute, probably due to\nadditional bugs.\n\nFor the 15\" models with additional AMD GPU resume only works when using the\ninternal Intel GPU.\n\n## System Management Controller\n\n![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) ![MacBookPro16,2 not working](https://img.shields.io/badge/MacBookPro16%2C2-not_working-red.svg)\n\nThe System Management Controller (SMC) is responsible for interactions with\nsensors and fans.\n\nFans, temperature and voltage sensors work out of the box using the `applesmc`\nkernel module.\n\nEven though the MacBook Pro manages fan speed automatically,\nmanually setting the fan speed through `applesmc` works as well. That's useful\nif you want to use a different fan speed profile than the hardware uses by\ndefault. In that case, you might want to use a tool like\n[`mbpfan`](https://github.com/dgraziotin/mbpfan).\n\nThe ambient light sensor is working out of the box for the models without Touch\nBar, using the `applesmc` module as well. In models with Touch Bar, the ambient\nlight sensor isn't connected to the traditional SMC, but to the iBridge\ninstead. For it to function, you need the third-party `apple-ib-als` kernel\nmodule you can find in the following git repository:\nhttps://github.com/roadrunner2/macbook12-spi-driver\n\nAn accelerometer isn't available at all.\n\n## Thunderbolt\n\n![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) ![MacBookPro16,2 working](https://img.shields.io/badge/MacBookPro16%2C2-working-green.svg)\n\nWorks out of the box.\n\nUp to now power management support for the Thunderbolt controllers isn't\ncomplete yet, resulting in unnecessary battery drain when no devices are\nattached to the Thunderbolt ports.\n\n## Touch Bar\n\n![MacBookPro13,2 partially working](https://img.shields.io/badge/MacBookPro13%2C2-partially_working-yellow.svg) ![MacBookPro13,3 partially working](https://img.shields.io/badge/MacBookPro13%2C3-partially_working-yellow.svg) ![MacBookPro14,2 partially working](https://img.shields.io/badge/MacBookPro14%2C2-partially_working-yellow.svg) ![MacBookPro14,3 partially working](https://img.shields.io/badge/MacBookPro14%2C3-partially_working-yellow.svg)\n![MacBookPro16,1 partially working](https://img.shields.io/badge/MacBookPro16%2C1-partially_working-yellow.svg) ![MacBookPro16,2 partially working](https://img.shields.io/badge/MacBookPro16%2C2-partially_working-yellow.svg)\n\nNot working out of the box, but thanks to @roadrunner2 basic functionality\nis working using the `apple-ib-tb` kernel module you can find in the following\ngit repository: https://github.com/roadrunner2/macbook12-spi-driver\n\nStarting with Linux 5.9 a forked version of the driver is necessary, which is\navailable at https://github.com/PatrickVerner/macbook12-spi-driver\n\nMissing is as of now just the advanced functionality with custom graphics Apple\noffers in macOS.\n\n## Touch ID\n\n![MacBookPro13,2 not working](https://img.shields.io/badge/MacBookPro13%2C2-not_working-red.svg) ![MacBookPro13,3 not working](https://img.shields.io/badge/MacBookPro13%2C3-not_working-red.svg) ![MacBookPro14,2 not working](https://img.shields.io/badge/MacBookPro14%2C2-not_working-red.svg) ![MacBookPro14,3 not working](https://img.shields.io/badge/MacBookPro14%2C3-not_working-red.svg) ![MacBookPro16,1 not working](https://img.shields.io/badge/MacBookPro16%2C1-not_working-red.svg) ![MacBookPro16,2 not working](https://img.shields.io/badge/MacBookPro16%2C2-not_working-red.svg)\n\nNot working.\n\n## USB\n\n![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 working](https://img.shields.io/badge/MacBookPro13%2C2-working-green.svg) ![MacBookPro13,3 working](https://img.shields.io/badge/MacBookPro13%2C3-working-green.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 working](https://img.shields.io/badge/MacBookPro14%2C2-working-green.svg) ![MacBookPro14,3 working](https://img.shields.io/badge/MacBookPro14%2C3-working-green.svg) ![MacBookPro16,1 working](https://img.shields.io/badge/MacBookPro16%2C1-working-green.svg) ![MacBookPro16,2 working](https://img.shields.io/badge/MacBookPro16%2C2-working-green.svg)\n\nWorks out of the box.\n\n## Wi-Fi\n\n![MacBookPro13,1 working](https://img.shields.io/badge/MacBookPro13%2C1-working-green.svg) ![MacBookPro13,2 not working](https://img.shields.io/badge/MacBookPro13%2C2-not_working-red.svg) ![MacBookPro13,3 not working](https://img.shields.io/badge/MacBookPro13%2C3-not_working-red.svg) ![MacBookPro14,1 working](https://img.shields.io/badge/MacBookPro14%2C1-working-green.svg) ![MacBookPro14,2 not working](https://img.shields.io/badge/MacBookPro14%2C2-not_working-red.svg) ![MacBookPro14,3 not working](https://img.shields.io/badge/MacBookPro14%2C3-not_working-red.svg) ![MacBookPro16,1 not working](https://img.shields.io/badge/MacBookPro16%2C1-not_working-red.svg) ![MacBookPro16,2 not working](https://img.shields.io/badge/MacBookPro16%2C2-not_working-red.svg)\n\nThe MacBook Pro models without Touch Bar come with a `Broadcom Limited BCM4350\n802.11ac Wireless Network Adapter` which works fine out of the box using the\n`brcmfmac` driver (ensure you got the matching firmware package installed).\n\nThe MacBook Pro models with Touch Bar come with a `Broadcom Limited BCM43602\n802.11ac Wireless LAN SoC (rev 02)` which is also supported by `brcmfmac`, but\nhas several issues rendering it unusable, caused by the available firmware.\nThe issues are caused by failing country detection and are:\n\n* Only 2.4Ghz APs are shown\n* Connecting to an AP barely works or fails directly\n\nAccording to Broadcom releasing a fixed firmware would require verification to\nensure that it complies with regulatory limits, which is very unlikely to\nhappen as it wouldn't provide enough return on investment for them (see\nhttps://bugzilla.kernel.org/show_bug.cgi?id=193121 for details).\n\nThe MacBookPro16,1 comes with a `Broadcom Inc. and subsidiaries BCM4364\n802.11ac Wireless Network Adapter (rev 04)` which is detected with wifi\npatches from [here](https://github.com/aunali1/linux-mbp-arch) but doesn't\nwork as no appropriate firmware is available. Catalina firmware doesn't\nseem to work here and no pre-Catalina firmware is available for this card.\n\n## Misc\n\n### History of improvements per kernel version\n\n#### 4.9\n\n* Working AMD graphics of the MacBookPro13,3 (which is the only model with both\n  Intel and AMD graphics).\n\n#### 4.10\n\n* `intremap=nosid` as kernel boot parameter not necessary anymore, although\n  it's unclear why.\n\n#### 4.11\n\n* The NVMe controller in the MacBookPro13,1 and MacBookPro13,2 is now working\n  out of the box (the one in the MacBookPro13,3 was already working before).\n  ([linux/commit/124298b](https://github.com/torvalds/linux/commit/124298bd03acebd9c9da29a794718aca31bec1f7))\n* When booting with kernel modesetting (KMS) the screen isn't scrambled during\n  boot anymore.\n\n#### 4.13\n\n* On the Touch Bar models the FaceTime HD camera is working out of the box.\n  ([linux/commit/7b848ed](https://github.com/torvalds/linux/commit/7b848ed60f409ce860023c79aa9a5c8d1833ebab))\n* Adds support for the Alpine Ridge 4C Thunderbolt Chip used in the MacBook Pro's\n  ([linux/commit/5e2781b](https://github.com/torvalds/linux/commit/5e2781bcb1e876d314832489ff8177ef917d9b45))\n\n#### 4.14\n\n* Includes the foundation for upstreaming the\n  [`applespi`](https://github.com/cb22/macbook12-spi-driver)-driver.\n  ([linux/commit/ca9ef3a](https://github.com/torvalds/linux/commit/ca9ef3ab68d3530ac93d4254f9e47724ea51758d),\n  [linux/commit/899596e](https://github.com/torvalds/linux/commit/899596e090ea21918c55cbccea594be840af44ea),\n  [linux/commit/75fc70e](https://github.com/torvalds/linux/commit/75fc70e07314347465c7df6d6b79535cf3db0e2a),\n  [linux/commit/630b3af](https://github.com/torvalds/linux/commit/630b3aff8a51c90ef15b59c9560ac35e40e7ec09))\n\n#### 4.16\n\n* Bluetooth is now working out of the box.\n  ([linux/commit/8353b4a](https://github.com/torvalds/linux/commit/8353b4a636f2c83de748656acc6b6a8757d7a0ff),\n  [linux/commit/8bfa7e1](https://github.com/torvalds/linux/commit/8bfa7e1e03aca3626b82857850a1e18ae0ed291d),\n  [linux/commit/4c33162](https://github.com/torvalds/linux/commit/4c33162c1ad0d3524455d6c10de2a05847ad5617))\n\n#### 4.20\n\n* Fixes a garbled screen issue with Intel graphics when using KMS, introduced\n  with Linux 4.18.\n  ([linux/commit/d9a5158](https://github.com/torvalds/linux/commit/d9a515867bdba59ebf196a6ade10faae8e8be36a))\n* Fixes a black screen issue for models with AMD graphics, introduced with\n  Linux 4.18.\n  ([linux/commit/07e3a1c](https://github.com/torvalds/linux/commit/07e3a1cfb0568b6d8d7862077029af96af6690ea))\n* Fixes a GPE storm, which caused unnecessary battery drain.\n  ([linux/commit/ca1721c](https://github.com/torvalds/linux/commit/ca1721c5bee77105829cbd7baab8ee0eab85b06d))\n\n#### 5.1\n\n* Fixes a regression introduced with Linux 4.17 with prevented the MacBook\n  Pro's without Touch Bar to boot.\n  ([linux/commit/6f913de](https://github.com/torvalds/linux/commit/6f913de3231e1d70a871135b38219da7810df218))\n\n#### 5.3\n\n* The `applespi` driver for the internal keyboard and trackpad of the\n  MacBookPro13,* and MacBookPro14,* is now included upstream and works out of\n  the box.\n  ([linux/commit/038b1a0](https://github.com/torvalds/linux/commit/038b1a05eae6666b731920e46f47d8e2332e07ff))\n\n#### 5.4\n\n* Includes support for the NVMe controller found in MacBookPro's released\n  since 2018.\n  ([linux/commit/6634133](https://github.com/torvalds/linux/commit/66341331ba0d2de4ff421cdc401a1e34de50502a))\n  \n#### 5.8\n\n* Fixes the built-in display for the MacBookPro13,3, which stopped working in\n  Linux 5.6.\n  ([linux/commit/cbd14ae](https://github.com/torvalds/linux/commit/cbd14ae7ea934fd9d9f95103a0601a7fea243573))\n  This fix also got backported to the 5.7.8 stable kernel.\n\n### iBridge\n\nThe models with Touch Bar feature an additional USB device, called `iBridge`\n(`Bus 001 Device 002: ID 05ac:8600 Apple, Inc.`). It's the interface to the\nembedded T1-chip running iOS and providing access to the ambient light sensor,\nthe FaceTime HD camera, the Touch Bar and Touch ID.\n\nA prerequisite for all devices connected to the iBridge to work is a\nfirmware stored by macOS on the EFI system partition (ESP). For the time being\nthe easiest way to keep this firmware available is to install Linux in\naddition to macOS and keeping the contents of the original ESP in place.\n\nIf the iBridge couldn't be initialized (e.g. because the firmware is\nmissing), instead of the usual USB device, the following USB device is\npresent: `Apple Mobile Device [Recovery Mode]` (`Bus 001 Device 003: ID\n05ac:1281 Apple, Inc.`)\n\n`usb-devices` shows that *iBridge* exposes four interfaces:\n\n```\nT:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  2 Spd=480 MxCh= 0\nD:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  3\nP:  Vendor=05ac ProdID=8600 Rev=01.01\nS:  Manufacturer=Apple Inc.\nS:  Product=iBridge\nC:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA\nI:  If#= 0 Alt= 0 #EPs= 0 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo\nI:  If#= 1 Alt= 0 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo\nI:  If#= 2 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid\nI:  If#= 3 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=01 Driver=usbhid\n```\n\nThe two `video` interfaces could be the FaceTime HD camera and the Touch Bar,\nwhile the two `HID` interfaces could be the Touch Bar and the Touch ID button.\n\nBooting macOS as a VM interestingly leads to the following changed output of\n`usb-devices`:\n\n```\nT:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  2 Spd=480 MxCh= 0\nD:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  3\nP:  Vendor=05ac ProdID=8600 Rev=01.01\nS:  Manufacturer=Apple Inc.\nS:  Product=iBridge\nC:  #Ifs= 8 Cfg#= 2 Atr=e0 MxPwr=0mA\nI:  If#= 0 Alt= 0 #EPs= 0 Cls=0e(video) Sub=01 Prot=00 Driver=usbfs\nI:  If#= 1 Alt= 0 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=usbfs\nI:  If#= 2 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=01 Driver=usbfs\nI:  If#= 3 Alt= 0 #EPs= 2 Cls=10() Sub=00 Prot=00 Driver=usbfs\nI:  If#= 4 Alt= 0 #EPs= 0 Cls=02(commc) Sub=0d Prot=00 Driver=usbfs\nI:  If#= 5 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=01 Driver=usbfs\nI:  If#= 6 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=01 Driver=usbfs\nI:  If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=f9 Prot=11 Driver=usbfs\n```\n\nmacOS somehow initializes some additional capabilities of the *iBridge*.\nThose additional interfaces are likely responsible for Touch Id and the\nadvanced graphical functionality of the Touch Bar. There might also be some\nkind of interface for *iBridge*-firmware updates.\n\n### Disable auto-boot\n\nApple introduced an \"auto-boot\" feature with the MacBook Pro 2016 causing the\nnotebook to be switched on, whenever the screen lid is opened. By modifying a\nNVRAM variable this can be (luckily) disabled again.\n\nHow to do that from macOS as well as enabling the startup chime again is\ndocumented e.g. at\nhttp://www.idownloadblog.com/2016/10/31/how-to-stop-the-new-macbook-pro-from-automatically-turning-on-when-the-lid-is-open/\n\nTo disable auto boot from within Linux, ensure that `efivarfs` is mounted and\nrun:\n\n```\nprintf \"\\x07\\x00\\x00\\x00\\x00\" \u003e /sys/firmware/efi/efivars/AutoBoot-7c436110-ab2a-4bbb-a880-fe41995c9f82\n```\n\nIf you get \"No space left on device\" errors, it's probably because of\n`dump-type0-*`-variables written by the Linux kernel taking up all space.\nRemoving them solves the problem:\n\n```\nfor i in $(find /sys/firmware/efi/efivars/ -name 'dump-type0*'); do chattr -i $i; rm $i; done\n```\n\nWith disabled auto boot the MacBook Pro will show the battery percentage for a\nbrief second as an image on the screen whenever you open the lid or plug in the\npower cord while the lid is open.\n\nTo re-enable auto boot again run:\n\n```\nchattr -i /sys/firmware/efi/efivars/AutoBoot-7c436110-ab2a-4bbb-a880-fe41995c9f82\nrm /sys/firmware/efi/efivars/AutoBoot-7c436110-ab2a-4bbb-a880-fe41995c9f82\n```\n\n### Links\n\n* Excellent collection providing a status of hardware support for the MacBook\n  Pro 2016 as well:\n  https://gist.github.com/roadrunner2/1289542a748d9a104e7baec6a92f9cd7\n","funding_links":[],"categories":["Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDunedan%2Fmbp-2016-linux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDunedan%2Fmbp-2016-linux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDunedan%2Fmbp-2016-linux/lists"}