Installing Elementary OS 7 Horus on my MacBook Air (13-inch, Early 2014)

I have an older MacBook Air that is still in good condition, although it doesn't receive the latest macOS updates anymore. An easy solution to that is to install a Linux distribution. I have dual-booted Kali in the past but that didn't last very long. I decided to try out elementary OS this time.

Specs

  • Model: MacBookAir6,2
  • Storage: 128 GB

Install the OS

Download and follow the official instructions to create a bootable USB flash drive.

I chose to manually partition the drive with a 1 GiB EFI partition (fat32), a 10 GiB swap partition (swap), and the remaining space in-between as the root partition (ext4).

Drivers

Some of the drivers for this hardware are not included or available with Linux. I ended up tethering via USB to my phone to download and install the WiFi driver.

$ lspci -nn -d 14e4:
02:00.0 Multimedia controller [0480]: Broadcom Inc. and subsidiaries 720p FaceTime HD Camera [14e4:1570]
03:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM4360 802.11ac Wireless Network Adapter [14e4:43a0] (rev 03)
0a:00.0 Ethernet controller [0200]: Broadcom Inc. and subsidiaries NetXtreme BCM57762 Gigabit Ethernet PCIe [14e4:1682]

WiFi

The wireless adapter is a Broadcom BCM4360. The issue for me was that the installed kernel header files were the wrong version and the wl module was not getting loaded correctly.

Module build for kernel 5.19.0-38-generic was skipped since the
kernel headers for this kernel does not seem to be installed.
modprobe: FATAL: Module wl not found in directory /lib/modules/5.19.0-38-generic

Install the correct kernel headers:

sudo apt install linux-headers-5.19.0-38-generic

Re-install the driver:

sudo apt install --reinstall bcmwl-kernel-source

This should re-build and install the kernel module. This worked without having to reboot.

FaceTime HD Camera

Getting the camera to work was more complicated. There are some guides on the Internet that refrence the iSight camera, however this is the USB version that was used on older computers. This MacBook Air has a PCIe device produced by Broadcom (more proprietary drivers, yay!) known as the FaceTime HD camera. I was able to get the camera working by using this reverse engineered driver here:

GitHub - patjak/facetimehd: Reverse engineered Linux driver for the FacetimeHD (Broadcom 1570) PCIe webcam
Reverse engineered Linux driver for the FacetimeHD (Broadcom 1570) PCIe webcam - GitHub - patjak/facetimehd: Reverse engineered Linux driver for the FacetimeHD (Broadcom 1570) PCIe webcam

One thing to note as of this writing is that the kernel module will need to be rebuilt every time the kernel version is changed.