I have a 2018 MacBook Pro with Touch Bar running macOS Catalina. However, i've always wanted to install Ubuntu on it. Sadly, installing any of the versions of Ubuntu or several other Linux distros results in my MacBook's keyboard, track pad and SSD not being detected.

I had given up on the idea of getting it working until the other day when I was bored and decided to do some research on the issue. What I found was that there was a few projects on Github that help to get Fedora, Arch and Ubuntu running on MacBooks with essentially everything working. This was a huge step forward compared to when I had a 2015 12" MacBook that had zero support for Ubuntu. I obviously got excited and ran off to get a USB flash drive and bam! Reality set in and I figured out that it's not as easy as I hoped for.

As usual, the standard version of Ubuntu doesn't work and needs several changes to be made by installing various bits and pieces from Github that if done correctly, will result in a working installation of Ubuntu 20.04 LTS on a MacBook Pro. I tried to do this by installing Ubuntu, plugging in a USB hub with an external keyboard and mouse, installed the various patches and fixes via terminal and failed miserably.

I eventually found a pre-made ISO on Github that had all of the fixes already included. I used this ISO to make a bootable USB and installed it as normal. Amazingly it worked perfectly! Well almost perfectly. The only issue I currently have is that Wi-Fi isn't working. I've tried all the various fixes that's suggested on Github but so far I've had no success. (There's one trick left that I still have to try...)

The good news is that the Touch Bar, track pad and SSD is detected and working perfectly. Holding in the Fn key shifts the Touch Bar from the default function keys to allowing me to change volume, keyboard and display brightness as well as playback controls.

Needless to say, I'm still trying my best to figure out how to get the Wi-Fi to work. I'm quite confident that I will get it working eventually since other people with identical MacBooks have got it working.

My MacBook Pro is the 15,2 and running the following terminal command in macOS:

ioreg -l | grep C-4364

results in:

RequestedFiles" = (\{"Firmware"="C-4364__s-B2/maui.trx","TxCap"="C-4364__s-B2/maui-X3.txcb","Regulatory"="C-4364__s-B2/maui-X3.clmb","NVRAM"="C-4364__s-B2/P-maui-X3_M-HRPN_V-m__m-7.7.txt"\})\ | | | | | "images" = \{"C-4364__s-B2/maui-X3.txcb"=\{"imagetype"="TxCap","required"=No,"imagename"="C-4364__s-B2/maui-X3.txcb"\},"C-4364__s-B2/maui-X3.clmb"=\{"imagetype"="Regulatory","required"=Yes,"imagename"="C-4364__s-B2/maui-X3.clmb"\},"C-4364__s-B2/maui.trx"=\{"imagetype"="Firmware","required"=Yes,"imagename"="C-4364__s-B2/maui.trx"\},"C-4364__s-B2/P-maui-X3_M-HRPN_V-m__m-7.7.txt"=\{"imagetype"="NVRAM","required"=Yes,"imagename"="C-4364__s-B2/P-maui-X3_M-HRPN_V-m__m-7.7.txt"\}\}\

That gives me a list of current firmware used by my MacBook's specific WiFi card. What I figured out by reading through several posts on Github was that using the firmware from Catalina won't work. For whatever reason, the older Mojave firmware, when copied over to Ubuntu supposedly gets the WiFi working on MacBooks similar or identical to mine except that it doesn't work on mine.

When I run:

dmesg

I get the following error:

brcmf_pcie_download_fw_nvram: FW failed to initialize

Modprobe is supposed to help me figure out the rambase address but this is what I get:

modprobe -r brcmfmac; modprobe brcmfmac rambase_addr=0x160000
modprobe: ERROR: ../libkmod/libkmod-module.c:799 kmod_module_remove_module() could not remove 'brcmfmac': Operation not permitted

This is a work in progress installation so I'm hoping over the next few days/weeks/months, I'll get WiFi working as well as solve issues with sleep, battery life etc.

I'm really happy then I've got almost everything working compared to where I was the other day when essentially nothing worked. I'm also hoping that some of these fixes that allowed the SSD, keyboard and track pad to be detected will eventually become part of the next kernel for Ubuntu.

Conclusion

I was under the impression that once I installed this custom Ubuntu 20.04 LTS image that everything would work and I could use Ubuntu daily instead of macOS Catalina. Unfortunately, this is not the case:

  • Sometimes I cannot boot to Ubuntu without having to switch off, restart, switch off again etc.
  • Closing the lid will cause the system to sleep but when it wakes up, the touch bar is unresponsive.

These are issue that can be fixed but I'm not sure if it's worth the effort. I really appreciate all the effort made by all the people involved with figuring out how to get certain hardware to work but also their generosity in sharing this information. I'll continue my adventures with getting Ubuntu working on my MacBook Pro 2018 and keep this article update accordingly.

However, my plan for the future is to save up and buy a Dell XPS 13, ideally the Developer Edition that I know will support Ubuntu 100%.

Pre-made Ubuntu 20.04 LTS ISO with all the relevant patches to support most modern MacBooks: https://github.com/marcosfad/mbp-ubuntu/releases

Repository of WiFi firmware: https://packages.aunali1.com/apple/wifi-fw/

Pre-made Fedora ISO with all the relevant patches to support most modern MacBooks:: https://github.com/mikeeq/mbp-fedora/releases

UPDATE: 15 October 2020

After trying several ideas, I finally fixed the WiFi issue this week. What I tried initially was a script that auto-downloads the correct WiFi firmware from the repository mentioned above and the running a second script auto-installs it. Restarting the MacBook resulted in the WiFi card being detected and available in Settings.

Script to auto-install WiFi driver:

stefanpartheym/mbp15-wifi-driver
Scripts to collect or download and install MacBookPro15,2 wifi driver files on Linux. - stefanpartheym/mbp15-wifi-driver

However, when I tried connecting to a network, any WiFi network, I keep getting asked over and over again for a password. The password was correct of course so I had to then figure out what was causing this new issue.

I was already on my third installation of Ubuntu in one morning at this point and had decided to manually install the firmware instead of the script just in case that was the cause.

It turned out that Network Manager needed to use IWD instead of WPA Supplicant. This means that for whatever strange reason, the default WiFi manager had an issue with my WiFi card/settings/firmware and neeed to be replaced.

I used info found here:

Replacing WPA Supplicant with iwd in Ubuntu 19.10 Eoan Ermine — Blobfolio
Intel’s iwd networking drivers are a (mostly) production-ready drop-in replacement for the aging wpa_supplicant libraries. This tutorial explains how to Ubuntu Eoan Ermine users can make the switch!

to install IWD and to configure Network Manager to use IWD as it's backend.

Install IWD:

sudo apt-get update && sudo apt-get install iwd

Edit Network manager Config:

sudo nano etc/NetworkManager/NetworkManager.conf

I deleted everything in the config file and replaced it with:

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no
wifi.backend=iwd

Now I have working WiFi that connects without issue.

To sum up, despite using the script initially to install the firmware, what finally worked was manually installing the firmware, intalling and configuring IWD and then it was problem solved. There's a chance that the script works but I wasn't in the mood to wipe everything and start from scratch to confirm.

There's still a few small issues:

  • The TouchBar doesnt work after wking from sleep (there's scrip on GitHub that might fix it).
  • Poor battery life.
  • The trackpad isn't as controllable as in macOS. Adjusting it in settings helps but it's not as smooth as in macOS.

I'll get around to fixing these issues over the next few days.