Difference between revisions of "User:AskApache/MacBookPro14,x"

From ArchWiki
Jump to: navigation, search
(user pages shall not be categorized, see Help:Style#User pages)
(Tag: wiki-scripts)
m (remove dup info, this page will contain only specific info for 14,x)
Line 19: Line 19:
# [[#Installation]]: Actually installing Arch Linux.
# [[#Installation]]: Actually installing Arch Linux.
# [[#Post installation]]: MacBook-specific configuration.
# [[#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, [https://support.apple.com/en-us/HT204904 Apple] has great instructions.}}
It is advisable to keep OS X installed, because MacBook firmware updates can only be installed using OS X.
== ArchBoot ==
== ArchBoot ==
== Installation ==
Installation is similar to any other standard laptop. Please refer to the official [[Installation guide]]. The Apple boot manager is accessible by holding the {{ic|Alt}} button during power on. As any other computer that does not have a CDROM drive, you need to use an [[USB flash installation media]].
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 which is included by default in the kernel (see [[Broadcom wireless#brcm80211|here]]). If this is the case, you should have wireless available from the installer.
Unfortunately, other BCM43xx chipsets my only be supported by a [[Broadcom wireless|proprietary driver]] which is unavailable in the installation environment. It is possible to build the package driver {{AUR|broadcom-wl}} on a separate system, but it '''must''' be built against the exact same kernel version used by the installer. Build the package in a separate machine as follows:
$ curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/broadcom-wl.tar.gz
$ tar -zxvf broadcom-wl.tar.gz
$ cd broadcom-wl
$ makepkg -s
{{Note| For older MacBooks the linked chipset will not work. Instead, use {{AUR|b43-firmware}} by cloning the repository and then following the instructions above. You will then also need to use {{ic|modprobe b43}} instead of {{ic|modprobe wl}} in the steps below.}}
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
# rmmod b43
# rmmod ssb
# modprobe wl
You may now use {{ic|wifi-menu}} to connect to your network of choice.
{{Note|The driver will need to be reinstalled after booting into the system for the first time. For more information, please see [[Broadcom wireless]])}}
== 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 {{ic|/boot}} (that is within the chroot, so mount it as {{ic|/mnt/boot}} with {{ic|mount /dev/sdXY /mnt/boot}})
* Proceed with [[Installation]] 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 {{AUR|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]].
== 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 ===
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.
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%.
=== Fan control ===
=== Fan control ===
Line 119: Line 35:
=== 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 [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.
==== 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 {{AUR|grub-git}} package from the AUR. Using something like:
$ packer -G grub-git
$ cd grub-git
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"
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 {{Pkg|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 <code>gpu-switch -i</code> as sudo, and the card will be active on reboot. Conversely, to enable the dedicated card instead, run <code>gpu-switch -d</code> 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:
<code>@reboot echo OFF > /sys/kernel/debug/vgaswitcheroo/switch</code>
<code>@reboot echo IGD > /sys/kernel/debug/vgaswitcheroo/switch</code>
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 {{Pkg|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 {{ic|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 {{pkg|pavucontrol}} and set Analog Stereo as the fallback device.
=== Touchpad ===
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"
    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"
==== Ctrl-Click as Right-Click ====
Using this SuperUser receipt [http://superuser.com/questions/217615/how-to-right-click-using-the-keyboard-from-ubuntu-on-a-mac] 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 {{AUR|xf86-input-mtrack-git}}. 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.
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"
=== 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)
=== Screen backlight ===
* Intel, works on Linux 3.13
* 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.
* 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. }}
=== 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:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="8406", RUN+="/usr/local/sbin/remove_ignore_usb-device.sh 05ac 8406"
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 {{ic|1=OPTIONS=="ignore_device"}} may not work reliably, the above rules use [https://gist.github.com/anonymous/9c9d45c4818e3086ceca a script] to manually remove the usb device from {{ic|/sys/bus/usb/devices/}}.
If battery life is not satisfactory, it may help to use power saving utilities, such as {{Pkg|tlp}}, and/or {{Pkg|powertop}} from the official repositories. To better optimize battery life, TLP also has a configuration file located at {{ic|/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 {{ic|/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
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 {{AUR|bcwc-pcie-dkms}}{{Broken package link|package not found}} or {{AUR|bcwc-pcie-git}}.
== What does not work ==
Updated 2016-07-21
=== General ===
=== Wi-Fi ===
* {{AUR|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)
** 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 ===
{{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.
== Discussions ==
== Discussions ==

Revision as of 07:05, 9 March 2018

The MacBook Pro 14,x consists of models with Retina display shipped by Apple In June 5, 2017 - 2018. [Specifications]

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


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.



Fan control

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


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

# nano /etc/vconsole.conf


See also