Webcam Support in Arch Linux on Macbooks
I'm running Manjaro Linux (an Arch Linux derivative) on my MacbookPro12,1 (Retina, 13-inch, Early 2015).
I was astonished how many things just worked out-of-the-box. Kudos to the Arch and Manjaro teams for their great work!
Unfortunately one thing that did not work out-of-the-box is the webcam.
It requires a driver that is not part of the official kernel but must be installed separately.
The code is in the Arch User Repository (AUR).
I use yay to install packages from AUR which I can highly recommend and which I will use in this article.
Let's get our hands dirty!
First let's get information about all installed kernels and see if the headers are installed for all of them:
$ pacman -Q | grep -E 'linux[0-9]+' # see which kernels are installed
For each installed linux kernel there should be a -headers
file next to it, e.g.
linux419 4.19.113-1
linux419-headers 4.19.113-1
linux54 5.4.28-1
linux54-headers 5.4.28-1
linux55 5.5.13-1
linux55-headers 5.5.13-1
If the headers are missing, make sure to install them:
$ yay -S linux-headers # select the headers that are missing
Then let's get the driver and install it from AUR:
$ yay -S bcwc-pcie-git
After the installation we need to load the kernel module:
$ modprobe facetimehd
You can test if the video source has been identified correctly by executing v4l2-ctl --list-devices
.
If everything worked out, the output should be:
Apple Facetime HD (PCI:0000:02:00.0):
/dev/video0
If the output is instead No /dev/video0 device
, then make sure to unload the kernel module bdc_pci
as described in the wiki.
This can be done by running the following commands:
modprobe -r facetimehd # temporary remove facetimehd module
modprobe -r bdc_pci # remove disturbing kernel module
# make sure that the disturbing kernel module is blacklisted
# and cannot be loaded as a dependency of another module.
echo "blacklist bdc_pci\ninstall bdc_pci /bin/false" > /etc/modprobe.d/bcwc-pcie.conf
modprobe facetimehd # load the facetimehd module again
The webcam should work now. You can test it on any website that requires a webcam, such as meet.jit.si. Have fun!