Ubuntu 26.04 on Mid-2014 MacBook Pro – everything finally works
After Fedora 44 and Linux Mint, I wiped the old MacBook Pro and installed Ubuntu 26.04.1 LTS on it. Wi-Fi, camera, mic, speakers, and fans all work now. Here's everything I had to fix, in case I need to redo it.
Wi-Fi didn't work out of the box. The BCM4360 chip needs the proprietary wl driver because b43 grabs the card first.
# Preferred
sudo apt install broadcom-sta-dkms
sudo dkms autoinstall
# Or from the .deb (dpkg skips dependencies, fix them after)
wget http://mirrors.kernel.org/ubuntu/pool/restricted/b/broadcom-sta/broadcom-sta-dkms_6.30.223.271-29ubuntu1_amd64.deb
sudo dpkg -i broadcom-sta-dkms_6.30.223.271-29ubuntu1_amd64.deb
sudo apt --fix-broken install
# Either way
sudo update-initramfs -u
sudo modprobe wl
ip link show | grep wl
I used the .deb from a Linux Mint forum thread, and it broke until --fix-broken install fixed it. The update-initramfs -u step is required for the b43 blacklists to apply at boot.
The FaceTime HD camera needs three pieces, the DKMS module, the firmware, and the sensor files.
sudo apt install dkms build-essential linux-headers-$(uname -r) git curl
git clone https://github.com/patjak/bcwc_pcie.git
cd bcwc_pcie
sudo dkms add .
sudo dkms build facetimehd/0.7.0.1
sudo dkms install facetimehd/0.7.0.1
sudo depmod
sudo modprobe facetimehd
echo facetimehd | sudo tee -a /etc/modules > /dev/null
ls /dev/video0
Check cat dkms.conf | grep PACKAGE_VERSION first, because the repo says 0.7.0.1 while guides still say 0.2.
git clone https://github.com/patjak/facetimehd-firmware.git
cd facetimehd-firmware
make # fails on the assistant hash, this is expected
sudo make install
mkdir -p /tmp/facetime-fw && cd /tmp/facetime-fw
for f in 9112 1771 1871 1874; do
curl -fsSL -o ${f}_01XX.dat \
https://raw.githubusercontent.com/eudoxos/skoly/main/tweaks/macbook-air/firmware/${f}_01XX.dat
done
sudo cp *.dat /usr/lib/firmware/facetimehd/
sudo modprobe -r facetimehd && sudo modprobe facetimehd
The make failure is expected, and firmware.bin still extracts fine. After the sensor files, dmesg | grep facetimehd should show no more failed with error -2 lines.
For the fans, mbpfan with the default config is enough.
sudo apt install -y mbpfan
sudo systemctl status mbpfan
cat /sys/devices/platform/applesmc.768/fan*_input
The fans spike to ~6000 RPM during install, then settle back to ~2000 RPM.
That's it.
On a fresh install, the order is apt update/upgrade, Wi-Fi, camera, mbpfan, reboot, and check Wi-Fi, /dev/video0, and mbpfan.