reviving a Macbook pro 2015 (A1502)
July 7, 2025
getting WiFi and the Camera working
I have generous people in my life. One of them gave me a Macbook Pro from 2015 recently. I’m excited because it means I get to move out of the Macbook Air 2011 that I’ve been limping along on for the past few years. I’m doubling my RAM (all the way to 8GB) but the chip is a bit of a downgrade technically (the macbook air had the i7 chip while the macbook pro has an i5, still it’s a huge improvement). Also get the nice Retina display and other good things.
Now, you may have noticed from previous outings that I’m a fan of Manjaro linux. Strickly speaking, I can’t say why. When looking into getting linux going on macs, the suggestion is that manjaro (xfce desktop for those keeping track) provides a light footprint, great defaults and a decent set of drivers that should mostly work out of the box. Now, with hardware this old, it’s hard to expect ALL the drivers to work.
Of course with mac hardware like this, while it is 64-bit intel inside from this era, you are taking your chances or at least I am.
Fired up Manjaro, installed and immediately noticed while I could see wifi networks I could not connect to any of them. That is to say I could see the SSIDs in the list but when connecting and putting in the correct password it would spin and then bounce back as if the password was wrong. To say this was frustrating would be polite. So I started doing the homework and discovered that wpa_supplicant (the default out of the box for Manjaro) doesn’t play nice with this broadcom wifi chip as of kernel 6.10 (according to this posting which I found much later and has an alternate solution which I have not tried as downgrading seems worse than what I’ve done but I could be wrong).
Some more homework revealed that iwd is one suggested solution (which happened to work for me). From this posting I got as far as installing iwd
pamac install iwd
Everything else in this posting is either wrong or misleading.
This posting appears to have the rest of the required steps
systemctl stop wpa_supplicant
systemctl mask wpa_supplicant
Now, you need to make iwd the “backend” of NetManager as this is what’s setup by default in Manjaro… to do this you will need to create this file
/etc/NetworkManager/conf.d/wifi_backend.conf, and add the following entry
[device]
wifi.backend=iwd
Now, this next step is debated as to it’s utility
systemctl enable iwd.service
since that’s being enabled and not started I’m going to go with this is a useful thing to do… at worst it does no harm.
Now reboot.
The first reboot after making the above changes worked. wifi came up and life was good. THEN I rebooted again (after doing a bunch of installs go figure) and wifi was dead again. wpa_supplicant had run on the bootup when the wifi didn’t work (going to connect gave an immediate failure, wasn’t even trying to actually connect. Errors initially in journalctl -f showed an odd statement asking if another supplicant was running.
So more homework and a bunch of fiddling about mostly repeating the above (including a full re-install of Manjaro since I had no idea why the masking of wpa_supplicant didn’t appear to be working). In fact I had the same problem again and kept fiddling about again as above. Rebooted again at one point and there it was working. I suspect it had to do with ensuring the masking of wpa_supplicant works correctly. If I was very brave I’d uninstall wpa_supplicant as suggested by some of the things I read.
Now after all of that excitement I had it in my mind that this laptop will be my work laptop. My work is remote and therefore I need zoom and other video conferencing software to work. This includes the camera. And of course when looking at it quickly after installing a bunch of stuff I discovered that of course the camera doesn’t work.
Now this posting very quickly lead me to the answer. Which lead to this github repository. NOTE: Manjaro is an Arch Linux distro (in case you didn’t know, kinda like ubuntu is a debian distro… etc), the reason for the note is that the readme for the repository has an Arch linux install set of instructions.
Also note, the kernel knows all and has the drivers for these things usually, in this case this github is installing a dynamic kernel module… so you need to have the DKM Headers installed correctly for your kernel before this will work. To that end find out what kernel you’re running
mhwd-kernel -li
Then install the headers (see this article to understand why and what)
The spell to install the correct headers is
sudo pacman -Syu linux<Kernel Number Goes Here>-headers
(in my case sudo pacman -Syu linux612-headers) and then the final thing from this page
yay -S facetimehd-dkms
That is assuming you’ve installed Yay (which I did for a bunch of reasons including getting at zoom, toptracker and now this driver). Follow these instructions here to install yay without effort.
After installing this the camera came to life and was available to zoom and discord which is the minimum I needed.
After that it was a matter of installing all the tools and things I need to do work on this laptop.
This has been my experience of this, your mileage may vary.