patjak / facetimehd

Reverse engineered Linux driver for the FacetimeHD (Broadcom 1570) PCIe webcam

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

attempting to install on ubuntu 22.04 early 2015 macbook air

geoihs opened this issue · comments

I need help with this.

UbuntuAir:~/bcwc_pcie$ sudo make install
make -C /lib/modules/5.15.0-47-generic/build M=/home/geo/bcwc_pcie modules_install
make[1]: Entering directory '/usr/src/linux-headers-5.15.0-47-generic'
arch/x86/Makefile:142: CONFIG_X86_X32 enabled but no binutils support
INSTALL /lib/modules/5.15.0-47-generic/extra/facetimehd.ko
SIGN /lib/modules/5.15.0-47-generic/extra/facetimehd.ko
At main.c:160:

  • SSL error:FFFFFFFF80000002:system library::No such file or directory: ../crypto/bio/bss_file.c:67

  • SSL error:10000080:BIO routines::no such file: ../crypto/bio/bss_file.c:75
    sign-file: certs/signing_key.pem: No such file or directory
    DEPMOD /lib/modules/5.15.0-47-generic
    Warning: modules_install: missing 'System.map' file. Skipping depmod.
    make[1]: Leaving directory '/usr/src/linux-headers-5.15.0-47-generic'

    I've been away from linux for a LONG time. Any help appreciated?

Here's what worked for me, I'm successfully using facethimehd on an early 2015 macbook air model 7,1 on Pop_OS! 22.04. Since Pop_OS! is built on Ubuntu 22.04, this should work for you, too:

modprobe -D facetimehd \
  && { echo "facetimehd driver already installed"; exit 0; }
[[ ! -d "facetimehd" ]] \
  && git clone https://github.com/patjak/facetimehd.git
[[ ! -d "facetimehd-firmware" ]] \
  && git clone https://github.com/patjak/facetimehd-firmware.git
# Compile driver
cd facetimehd-firmware
make
sudo make install
# Install driver
cd ../facetimehd
# Create signing_key.pem, required by driver installation
# https://superuser.com/a/1322832
certs_directory=$(find /usr/src/*-generic/certs | head -n 1)
[[ -z "certs_directory" ]] && { echo "Certs directory not found"; exit 1; }
if [[ ! -f "$certs_directory/signing_key.pem" ]]; then
  tee signing_key.config << EOF
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts

[ req_distinguished_name ]
CN = Modules

[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOF
  openssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 -config signing_key.config -outform DER -out signing_key.x509 -keyout signing_key.pem
  sudo mv signing_key.pem signing_key.x509 $certs_directory
fi
# Install driver
make
sudo make install
sudo depmod
sudo modprobe facetimehd
rg -q facetimehd /etc/modules \
  || echo facetimehd | sudo tee -a /etc/modules
# Clean up
cd ..
rm -rf facetimehd facetimehd-firmware

Sources:

While I'm not using your install script, the module has stopped working for me, I think since kernel version 6.0. I suppose Ubuntu is using still an older kernel?

I've read somewhere that the driver needs to be rebuilt with every kernel upgrade. My current kernel version is

❯ uname -r
6.0.6-76060006-generic

and the facetime module works fine.

Was your kernel recently upgraded? Did you then reinstall the module?

I'm on arch, and indeed, I have to rebuild it every upgrade :) it's now 'muscle memory' so yes, I always reinstall it. (Also not rebuilding it means i can't find the module anyway :p)