Webcam Support in Arch Linux on Macbooks
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:
You can test if the video source has been identified correctly by executing
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!