MacBook Air 2013 Webcam

I'm trying to get the webcam working in Zorin 18 on my MacBook Air 2013 (MacBookAir6,2 1.0).

I've been trying to follow the steps here:

sudo apt install xz-utils curl cpio make

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
xz-utils is already the newest version (5.6.1+really5.4.5-1ubuntu0.2).
xz-utils set to manually installed.
curl is already the newest version (8.5.0-2ubuntu10.6).
curl set to manually installed.
cpio is already the newest version (2.15+dfsg-1ubuntu2).
cpio set to manually installed.
make is already the newest version (4.3-4.1build2).
make set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

sudo apt-get install linux-headers-generic git kmod libssl-dev checkinstall

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
kmod is already the newest version (31+20240202-2ubuntu7.1).
The following additional packages will be installed:
  git-man liberror-perl linux-headers-6.8.0-90 linux-headers-6.8.0-90-generic
Suggested packages:
  gettext git-daemon-run | git-daemon-sysvinit git-doc git-email git-gui gitk
  gitweb git-cvs git-mediawiki git-svn libssl-doc
The following NEW packages will be installed:
  checkinstall git git-man liberror-perl libssl-dev linux-headers-6.8.0-90
  linux-headers-6.8.0-90-generic linux-headers-generic
0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.
Need to get 25.5 MB of archives.
After this operation, 154 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
Get:1 http://us.archive.ubuntu.com/ubuntu noble/universe amd64 checkinstall amd64 1.6.2+git20170426.d24a630-4 [106 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu noble/main amd64 liberror-perl all 0.17029-2 [25.6 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu noble-updates/main amd64 git-man all 1:2.43.0-1ubuntu7.3 [1,100 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu noble-updates/main amd64 git amd64 1:2.43.0-1ubuntu7.3 [3,680 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu noble-updates/main amd64 libssl-dev amd64 3.0.13-0ubuntu3.6 [2,408 kB]
Get:6 http://us.archive.ubuntu.com/ubuntu noble-updates/main amd64 linux-headers-6.8.0-90 all 6.8.0-90.91 [14.0 MB]
Get:7 http://us.archive.ubuntu.com/ubuntu noble-updates/main amd64 linux-headers-6.8.0-90-generic amd64 6.8.0-90.91 [4,163 kB]
Get:8 http://us.archive.ubuntu.com/ubuntu noble-updates/main amd64 linux-headers-generic amd64 6.8.0-90.91 [10.9 kB]
Fetched 25.5 MB in 2s (12.6 MB/s)                 
Selecting previously unselected package checkinstall.
(Reading database ... 252093 files and directories currently installed.)
Preparing to unpack .../0-checkinstall_1.6.2+git20170426.d24a630-4_amd64.deb ...
Unpacking checkinstall (1.6.2+git20170426.d24a630-4) ...
Selecting previously unselected package liberror-perl.
Preparing to unpack .../1-liberror-perl_0.17029-2_all.deb ...
Unpacking liberror-perl (0.17029-2) ...
Selecting previously unselected package git-man.
Preparing to unpack .../2-git-man_1%3a2.43.0-1ubuntu7.3_all.deb ...
Unpacking git-man (1:2.43.0-1ubuntu7.3) ...
Selecting previously unselected package git.
Preparing to unpack .../3-git_1%3a2.43.0-1ubuntu7.3_amd64.deb ...
Unpacking git (1:2.43.0-1ubuntu7.3) ...
Selecting previously unselected package libssl-dev:amd64.
Preparing to unpack .../4-libssl-dev_3.0.13-0ubuntu3.6_amd64.deb ...
Unpacking libssl-dev:amd64 (3.0.13-0ubuntu3.6) ...
Selecting previously unselected package linux-headers-6.8.0-90.
Preparing to unpack .../5-linux-headers-6.8.0-90_6.8.0-90.91_all.deb ...
Unpacking linux-headers-6.8.0-90 (6.8.0-90.91) ...
Selecting previously unselected package linux-headers-6.8.0-90-generic.
Preparing to unpack .../6-linux-headers-6.8.0-90-generic_6.8.0-90.91_amd64.deb ...
Unpacking linux-headers-6.8.0-90-generic (6.8.0-90.91) ...
Selecting previously unselected package linux-headers-generic.
Preparing to unpack .../7-linux-headers-generic_6.8.0-90.91_amd64.deb ...
Unpacking linux-headers-generic (6.8.0-90.91) ...
Setting up liberror-perl (0.17029-2) ...
Setting up libssl-dev:amd64 (3.0.13-0ubuntu3.6) ...
Setting up checkinstall (1.6.2+git20170426.d24a630-4) ...
Setting up linux-headers-6.8.0-90 (6.8.0-90.91) ...
Setting up git-man (1:2.43.0-1ubuntu7.3) ...
Setting up linux-headers-6.8.0-90-generic (6.8.0-90.91) ...
/etc/kernel/header_postinst.d/dkms:
 * dkms: running auto installation service for kernel 6.8.0-90-generic
Sign command: /usr/bin/kmodsign
Signing key: /var/lib/shim-signed/mok/MOK.priv
Public certificate (MOK): /var/lib/shim-signed/mok/MOK.der

Building module:
Cleaning build area...
make -j4 KERNELRELEASE=6.8.0-90-generic KVER=6.8.0-90-generic....
Signing module /var/lib/dkms/broadcom-sta/6.30.223.271/build/wl.ko
Cleaning build area...

wl.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/6.8.0-90-generic/updates/dkms/
depmod...
dkms autoinstall on 6.8.0-90-generic/x86_64 succeeded for broadcom-sta
 * dkms: autoinstall for kernel 6.8.0-90-generic
   ...done.
Setting up linux-headers-generic (6.8.0-90.91) ...
Setting up git (1:2.43.0-1ubuntu7.3) ...
Processing triggers for man-db (2.12.0-4build2) ...

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

Cloning into 'facetimehd'...
remote: Enumerating objects: 1183, done.
remote: Counting objects: 100% (56/56), done.
remote: Compressing objects: 100% (29/29), done.
remote: Total 1183 (delta 39), reused 28 (delta 27), pack-reused 1127 (from 3)
Receiving objects: 100% (1183/1183), 432.69 KiB | 5.77 MiB/s, done.
Resolving deltas: 100% (785/785), done.

cd facetimehd/
make

make -C /lib/modules/6.14.0-37-generic/build M=/home/russ/Downloads/facetimehd modules
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-37-generic'
make[2]: Entering directory '/home/russ/Downloads/facetimehd'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
  You are using:           gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
  CC [M]  fthd_ddr.o
  CC [M]  fthd_hw.o
  CC [M]  fthd_drv.o
  CC [M]  fthd_ringbuf.o
  CC [M]  fthd_isp.o
  CC [M]  fthd_v4l2.o
  CC [M]  fthd_buffer.o
  CC [M]  fthd_debugfs.o
  LD [M]  facetimehd.o
  MODPOST Module.symvers
  CC [M]  facetimehd.mod.o
  CC [M]  .module-common.o
  LD [M]  facetimehd.ko
  BTF [M] facetimehd.ko
Skipping BTF generation for facetimehd.ko due to unavailability of vmlinux
make[2]: Leaving directory '/home/russ/Downloads/facetimehd'
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-37-generic'

ls /sys/kernel/btf/vmlinux
/sys/kernel/btf/vmlinux

sudo ln -sf /sys/kernel/btf/vmlinux /usr/lib/modules/$(uname -r)/build/

sudo apt install dwarves pahole

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  dwarves pahole
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 279 kB of archives.
After this operation, 1,661 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu noble/universe amd64 pahole amd64 1.25-0ubuntu3 [277 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu noble/universe amd64 dwarves all 1.25-0ubuntu3 [2,186 B]
Fetched 279 kB in 0s (1,024 kB/s)   
Selecting previously unselected package pahole.
(Reading database ... 283615 files and directories currently installed.)
Preparing to unpack .../pahole_1.25-0ubuntu3_amd64.deb ...
Unpacking pahole (1.25-0ubuntu3) ...
Selecting previously unselected package dwarves.
Preparing to unpack .../dwarves_1.25-0ubuntu3_all.deb ...
Unpacking dwarves (1.25-0ubuntu3) ...
Setting up pahole (1.25-0ubuntu3) ...
Setting up dwarves (1.25-0ubuntu3) ...
Processing triggers for man-db (2.12.0-4build2) ...

sudo apt install build-essential

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
build-essential is already the newest version (12.10ubuntu1).
build-essential set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

make

make -C /lib/modules/6.14.0-37-generic/build M=/home/russ/Downloads/facetimehd modules
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-37-generic'
make[2]: Entering directory '/home/russ/Downloads/facetimehd'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
  You are using:           gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
make[2]: Leaving directory '/home/russ/Downloads/facetimehd'
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-37-generic'

export CC=x86_64-linux-gnu-gcc-13

make

make -C /lib/modules/6.14.0-37-generic/build M=/home/russ/Downloads/facetimehd modules
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-37-generic'
make[2]: Entering directory '/home/russ/Downloads/facetimehd'
warning: the compiler dif
fers from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
  You are using:           gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
make[2]: Leaving directory '/home/russ/Downloads/facetimehd'
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-37-generic'

sudo apt update
sudo apt install linux-headers-$(uname -r)

Hit:1 https://brave-browser-apt-release.s3.brave.com stable InRelease
Hit:2 http://us.archive.ubuntu.com/ubuntu noble InRelease                      
Get:3 http://us.archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]     
Hit:4 http://us.archive.ubuntu.com/ubuntu noble-backports InRelease            
Get:5 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]      
Get:6 http://us.archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [1,698 kB]
Hit:7 https://packages.zorinos.com/stable noble InRelease                      
Hit:8 https://packages.zorinos.com/patches noble InRelease                     
Get:9 http://us.archive.ubuntu.com/ubuntu noble-updates/main i386 Packages [573 kB]
Hit:10 https://ppa.launchpadcontent.net/zorinos/apps/ubuntu noble InRelease    
Get:11 http://us.archive.ubuntu.com/ubuntu noble-updates/main Translation-en [314 kB]
Get:12 http://us.archive.ubuntu.com/ubuntu noble-updates/restricted i386 Packages [24.2 kB]
Get:13 http://us.archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [1,519 kB]
Hit:14 https://packages.zorinos.com/apps noble InRelease                       
Get:15 http://us.archive.ubuntu.com/ubuntu noble-updates/universe i386 Packages [998 kB]
Get:16 http://us.archive.ubuntu.com/ubuntu noble-updates/universe Translation-en [310 kB]
Get:17 http://us.archive.ubuntu.com/ubuntu noble-updates/multiverse i386 Packages [7,804 B]
Get:18 http://us.archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Packages [30.9 kB]
Hit:19 https://ppa.launchpadcontent.net/zorinos/drivers/ubuntu noble InRelease 
Hit:20 https://packages.zorinos.com/drivers noble InRelease          
Hit:21 https://ppa.launchpadcontent.net/zorinos/patches/ubuntu noble InRelease
Hit:22 https://ppa.launchpadcontent.net/zorinos/stable/ubuntu noble InRelease
Get:23 http://security.ubuntu.com/ubuntu noble-security/universe amd64 c-n-f Metadata [19.7 kB]
Fetched 5,746 kB in 1s (4,311 kB/s)                               
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
linux-headers-6.14.0-37-generic is already the newest version (6.14.0-37.37~24.04.1).
linux-headers-6.14.0-37-generic set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

make

make -C /lib/modules/6.14.0-37-generic/build M=/home/russ/Downloads/facetimehd modules
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-37-generic'
make[2]: Entering directory '/home/russ/Downloads/facetimehd'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
  You are using:           gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
make[2]: Leaving directory '/home/russ/Downloads/facetimehd'
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-37-generic'

make install

make -C /lib/modules/6.14.0-37-generic/build M=/home/russ/Downloads/facetimehd modules_install
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-37-generic'
make[2]: Entering directory '/home/russ/Downloads/facetimehd'
  INSTALL /lib/modules/6.14.0-37-generic/updates/facetimehd.ko
cp: cannot create regular file '/lib/modules/6.14.0-37-generic/updates/facetimehd.ko': Permission denied
make[4]: *** [/usr/src/linux-headers-6.14.0-37-generic/scripts/Makefile.modinst:126: /lib/modules/6.14.0-37-generic/updates/facetimehd.ko] Error 1
make[3]: *** [/usr/src/linux-headers-6.14.0-37-generic/Makefile:1903: modules_install] Error 2
make[2]: *** [/usr/src/linux-headers-6.14.0-37-generic/Makefile:251: __sub-make] Error 2
make[2]: Leaving directory '/home/russ/Downloads/facetimehd'
make[1]: *** [Makefile:251: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-37-generic'
make: *** [Makefile:18: install] Error 2

sudo make install

make -C /lib/modules/6.14.0-37-generic/build M=/home/russ/Downloads/facetimehd modules_install
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-37-generic'
make[2]: Entering directory '/home/russ/Downloads/facetimehd'
  INSTALL /lib/modules/6.14.0-37-generic/updates/facetimehd.ko
  SIGN    /lib/modules/6.14.0-37-generic/updates/facetimehd.ko
  DEPMOD  /lib/modules/6.14.0-37-generic
Warning: modules_install: missing 'System.map' file. Skipping depmod.
make[2]: Leaving directory '/home/russ/Downloads/facetimehd'
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-37-generic'

sudo depmod
[Nothing appeared in the terminal following this command except for the next prompt.]

sudo modprobe facetimehd
[Nothing appeared in the terminal following this command except for the next prompt.]

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

Cloning into 'bcwc_pcie'...
remote: Enumerating objects: 1183, done.
remote: Counting objects: 100% (56/56), done.
remote: Compressing objects: 100% (29/29), done.
remote: Total 1183 (delta 39), reused 28 (delta 27), pack-reused 1127 (from 3)
Receiving objects: 100% (1183/1183), 432.69 KiB | 1.30 MiB/s, done.
Resolving deltas: 100% (785/785), done.

cd bcwc_pcie/
make

make -C /lib/modules/6.14.0-37-generic/build M=/home/russ/Downloads/bcwc_pcie modules
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-37-generic'
make[2]: Entering directory '/home/russ/Downloads/bcwc_pcie'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
  You are using:           gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
  CC [M]  fthd_ddr.o
  CC [M]  fthd_hw.o
  CC [M]  fthd_drv.o
  CC [M]  fthd_ringbuf.o
  CC [M]  fthd_isp.o
  CC [M]  fthd_v4l2.o
  CC [M]  fthd_buffer.o
  CC [M]  fthd_debugfs.o
  LD [M]  facetimehd.o
  MODPOST Module.symvers
  CC [M]  facetimehd.mod.o
  CC [M]  .module-common.o
  LD [M]  facetimehd.ko
  BTF [M] facetimehd.ko
make[2]: Leaving directory '/home/russ/Downloads/bcwc_pcie'
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-37-generic'

sudo make install

make -C /lib/modules/6.14.0-37-generic/build M=/home/russ/Downloads/bcwc_pcie modules_install
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-37-generic'
make[2]: Entering directory '/home/russ/Downloads/bcwc_pcie'
  INSTALL /lib/modules/6.14.0-37-generic/updates/facetimehd.ko
  SIGN    /lib/modules/6.14.0-37-generic/updates/facetimehd.ko
  DEPMOD  /lib/modules/6.14.0-37-generic
Warning: modules_install: missing 'System.map' file. Skipping depmod.
make[2]: Leaving directory '/home/russ/Downloads/bcwc_pcie'
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-37-generic'

sudo depmod
[Nothing appeared in the terminal following this command except for the next prompt.]

sudo modprobe facetimehd
[Nothing appeared in the terminal following this command except for the next prompt.]

cd ../facetimehd/
make

make -C /lib/modules/6.14.0-37-generic/build M=/home/russ/Downloads/facetimehd modules
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-37-generic'
make[2]: Entering directory '/home/russ/Downloads/facetimehd'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
  You are using:           gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
make[2]: Leaving directory '/home/russ/Downloads/facetimehd'
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-37-generic'

sudo make install

make -C /lib/modules/6.14.0-37-generic/build M=/home/russ/Downloads/facetimehd modules_install
make[1]: Entering directory '/usr/src/linux-headers-6.14.0-37-generic'
make[2]: Entering directory '/home/russ/Downloads/facetimehd'
  INSTALL /lib/modules/6.14.0-37-generic/updates/facetimehd.ko
  SIGN    /lib/modules/6.14.0-37-generic/updates/facetimehd.ko
  DEPMOD  /lib/modules/6.14.0-37-generic
Warning: modules_install: missing 'System.map' file. Skipping depmod.
make[2]: Leaving directory '/home/russ/Downloads/facetimehd'
make[1]: Leaving directory '/usr/src/linux-headers-6.14.0-37-generic'

sudo depmod
[Nothing appeared in the terminal following this command except for the next prompt.]

sudo modprobe facetimehd
[Nothing appeared in the terminal following this command except for the next prompt.]

I have been successful install those facetimehd drivers Ubuntu 24.04 and CachyOS but, I have no idea what's missing to get make and make install to work on Zorin 18.

If anyone can shed some light on why make and make install are failing, that would be very helpful. Thanks.

Ok. So, after I posted this, I went to AI and showed it my transcript and it pointed out that I didn't do the firmware extraction.

Once, I did the firmware extraction:

... then the camera began to work.

Also, the camera works with the Snap version of Cheese but, not with the pre-installed Camera (Gnome Snapshot?) app in Zorin. And, the camera works with Zoom.

I can't help but wonder if there's any way to get Gnome Snapshot to work with the camera?

Well done on resolving your issue. When I was experimenting with Zorin 18 Core with Plasma I replaced the Gnome snapshot feature with Cheese (APT version).

You could try it with this guide: