Note to Self by notekunst

ただの備忘録です

FacetimeHDカメラを使う(Ubuntu 20.04 on MacBookPro 15" Late2013)

Ubuntu上でMacBookProのFacetimeHDカメラを利用するために、Patrik Jakobsson氏のツールを用います。
github.com
この記事に沿って作業を進めると、MacBookPro (15" Late2013) のFacetimeHDカメラを簡単に使えるようになりました。
手順は、氏の以下の記事"Get Started"に書かれています。
Get Started · patjak/bcwc_pcie Wiki · GitHub

ファームウェアの抽出

$ git clone https://github.com/patjak/facetimehd-firmware.git
$ sudo apt install make curl cpio   (もしインストールしてなければ)
$ cd facetimehd-firmware/
$ make
Found matching hash from OS X, El Capitan 10.11.5
==> Extracting firmware...
 --> Decompressing the firmware using gzip...
 --> Deleting temporary files...
 --> Extracted firmware version 1.43.0
$ sudo make install
Copying firmware into '//usr/lib/firmware/facetimehd'

インストール

以下の記事"Get Started"によれば、Ubuntuでの手順は、Debianでの手順とほぼ同じです(違いは、ファームウェアのコピー先が異なることだけです)。この記事には、Ubuntu用のスクリプトもあります。私は、スクリプトを用いずに、手動で作業を進めました。
Get Started · patjak/bcwc_pcie Wiki · GitHub

自分のシステムのカーネルのバージョンと同じバージョンのヘッダをインストールします。

$ uname -r
5.4.0-40-generic
$ sudo apt install linux-headers-5.4.0-40-generic

続けて、作業を進めます。

$ sudo apt install kmod libssl-dev checkinstall   (もしインストールしてなければ)
$ git clone https://github.com/patjak/bcwc_pcie.git
$ cd bcwc_pcie
$ make
$ sudo checkinstall
パッケージドキュメントを聞かれたら、適当な説明 (例えば "FacetimeHD Linux Driver")を入力

新たに作ったモジュール"facetimehd"をロードする前に、モジュール"bdc_pci"を外します。モジュール"bdc_pci"は、デバイス"/dev/video0"の準備を妨げます。

$ sudo modprobe -r bdc_pci

bdc_pciをロードしないようにブラックリストに登録します。
/etc/modprobe.d/blacklist-bdc_pci.confに以下を記載します

blacklist bdc_pci

モジュール"facetimehd"をロードします。

$ sudo depmod
$ sudo modprobe facetimehd

これで、FacetimeHDカメラが利用できるようになります。gnomeのアプリ"Cheese"を起動すると、緑色のランプが点灯し、撮影画像が表示されます。
Macの起動時に自動的に"facetimehd"をロードするように、/etc/modulesに以下を記載します。

facetimehd

カメラを扱うツール"v4l-utils"は、便利そうです。

$ sudo apt install v4l-utils

カメラの情報を確認できます。

$ v4l2-ctl --list-device
Apple Facetime HD (PCI:0000:04:00.0):
	/dev/video0