Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。

この記事はRaspberry PiではなくLinux全般の記事です。 お間違えの無いよう記しておきます。

OSのアップデートリストから外れて数年経ってしまったMacBookPro(2015)に、Ubuntuをインストールして使ってきました。いくつか不具合があった中、Ubuntuをアップグレードしていくうちに少しずつ解消し不満も少なくなっています。 しかし、最初から1つだけ困ったことが解消できずにいました。内蔵のWebカメラです。 ちょうどUbuntuを24.04LTSにアップグレードした段階でもう一度トライしてみたところ、条件付きながら動作するようになりました。 この内蔵カメラのトラブルは、主に海外の情報が中心で古い記事しか見つかりません。環境の違いなどでエラーが出ることもあり厄介なトラブルです。 改めて2024年現在の情報として記しておくので、同じバージョン環境で困っているなら参考にしてください。 動作した環境 同じMacBookProでも異なる場合があるようです。恐らく、2011〜2015年のモデルだと似たような結果になると想像します。 MacBook Pro (Retina, 13-inch, Early 2015) Ubuntu 24.04LTS Guvcviewで確認 同じカメラを動作させるアプリでも、Cheeseはやはりダメだった。静止画のまま操作できなくなります。 結論は次から説明する手順を施し、Guvcviewを使うならほぼ完璧に動作することが分かりました。 抜けていた箇所 これまでもトライしてきただけに、いくつかの手順は覚えていました。どうやらfirmware.binをコピーする場所が異なっていたらしく、コピー先を変えたら、内蔵カメラデバイスを難なく認識して動作しました。 Cannot open device /dev/video0, exiting. /dev/video0が存在しないと出ている場合は、make install(checkinstall)したfirmware.binをコピーすることで対応できます。 手順は次の通りです。 facetimehdを認識させる作業手順 ※ git cloneしてダウンロードしたシェルスクリプトは使用しないで行いました。 最初にgitやmakeコマンド、checkinstallとv4l-utilsをインストールしておきます。 sudo apt install git libssl-dev checkinstall v4l-utils 次にgit cloneでfacetimehd-firmwareをダウンロードしてmakeします。 cd /usr/local/src sudo git clone https://github.com/patjak/facetimehd-firmware.git cd facetimehd-firmware sudo make 続けて、bcwc_pcieも同じようにダウンロードしてmakeし、こちらはcheckinstall(make install)まで行い再起動させます。 cd .. sudo git clone https://github.com/patjak/bcwc_pcie.git cd bcwc_pcie sudo make sudo checkinstall sudo reboot 再起動後、最初のmakeでできたfirmware.binを特定の場所にコピーします。 これまで認識しなかったのは、自分の環境だと/lib/firmware/facetimehd/ではなく、/usr/lib/firmware/facetimehd/に置かないといけなかったみたい。 sudo cp /usr/local/src/facetimehd/firmware.bin /usr/lib/firmware/facetimehd/ 続けてmodprobeで認識させます。 sudo depmod sudo modprobe -r bdc_pci sudo modprobe facetimehd 解説:この3行は次のような意味です。 sudo depmod #カーネルモジュール依存関係リストを更新するため sudo modprobe -r bdc_pci #bdc_pciモジュールを削除 sudo modprobe facetimehd #facetimehdモジュールのロード(読み込み) 最後に、confファイルを作成してすることで、再起動してもfacetimehdモジュールが再ロードされるようにします。 echo facetimehd | sudo tee /etc/modules-load.d/facetimehd.conf よく見かけるsudo cat facetimehd » /etc/modulesというコマンドは今後からサポートしないらしいためteeコマンドです。 確認してみる カメラの確認する方法は、ハードとしての認識と/dev/video0へ繋がっているかの確認です。 sudo dmesg | grep -i camera 同様にlsmodでも表示されるかどうか。 lsmod | grep face* 最後に、デバイスリストにFacetimeと/dev/video0が表示されていればOKです。 v4l2-ctl –list-devices Apple Facetime HD (PCI:0000:02:00.0): /dev/video0 Guvcviewで動作確認 内蔵カメラを使うアプリで有名なCheeseでは動かないので、Guvcviewをインストールして起動させてみました。 Guvcviewはsnap版ではなく、aptコマンドでインストールするapt版で試しました。 sudo apt install guvcview モザイクは加工です 音声がやや遅延して映像が追従することにはなるものの、概ね問題無いレベルでした。やったー! UbuntuをインストールしているノートパソコンはMacBookProなのですが、macOSとして使う場合とあまり変わらないレベルです。 Guvcviewのコントロールはすべて動作しました。今まで認識できなかったカメラなので感動します。ちなみにオプションのビデオフィルタもすべて適用されて問題はありません。 元々、MacBookPro内蔵の音声入力(マイク)は問題は出ていません。テストとして録画してみたところ、映像の遅延は僅かに感じても、普通に使えるレベルです。 今回はMacBookPro(2015)の内蔵カメラでした。他の年代やインチ違いモデルでも、カメラデバイスが変更になっていないモデルなら動作するかもしれません。 MacBookProの内蔵カメラがUbuntuで動かない場合は参考にしてください。 参考: Get Started MacBook Pro (Retina, 13-inch, Early 2015) 720p FaceTime HDカメラ MacBook Pro (Retina, 13-inch, Early 2015) - 技術仕様 - Apple サポート (日本)

OSのアップデートリストから外れて数年経ってしまったMacBookPro(2015)に、Ubuntuをインストールして使ってきました。いくつか不具合があった中、Ubuntuをアップグレードしていくうちに少しずつ解消し不満も少なくなっています。

しかし、最初から1つだけ困ったことが解消できずにいました。内蔵のWebカメラです。

ちょうどUbuntuを24.04LTSにアップグレードした段階でもう一度トライしてみたところ、条件付きながら動作するようになりました。

この内蔵カメラのトラブルは、主に海外の情報が中心で古い記事しか見つかりません。環境の違いなどでエラーが出ることもあり厄介なトラブルです。

改めて2024年現在の情報として記しておくので、同じバージョン環境で困っているなら参考にしてください。

動作した環境

同じMacBookProでも異なる場合があるようです。恐らく、2011〜2015年のモデルだと似たような結果になると想像します。

  • MacBook Pro (Retina, 13-inch, Early 2015)
  • Ubuntu 24.04LTS
  • Guvcviewで確認

同じカメラを動作させるアプリでも、Cheeseはやはりダメだった。静止画のまま操作できなくなります。

結論は次から説明する手順を施し、Guvcviewを使うならほぼ完璧に動作することが分かりました。

抜けていた箇所

これまでもトライしてきただけに、いくつかの手順は覚えていました。どうやらfirmware.binをコピーする場所が異なっていたらしく、コピー先を変えたら、内蔵カメラデバイスを難なく認識して動作しました。

Cannot open device /dev/video0, exiting.

/dev/video0が存在しないと出ている場合は、make install(checkinstall)したfirmware.binをコピーすることで対応できます。

手順は次の通りです。

facetimehdを認識させる作業手順

※ git cloneしてダウンロードしたシェルスクリプトは使用しないで行いました。

最初にgitやmakeコマンド、checkinstallとv4l-utilsをインストールしておきます。

sudo apt install git libssl-dev checkinstall v4l-utils

次にgit cloneでfacetimehd-firmwareをダウンロードしてmakeします。

cd /usr/local/src
sudo git clone https://github.com/patjak/facetimehd-firmware.git
cd facetimehd-firmware
sudo make

続けて、bcwc_pcieも同じようにダウンロードしてmakeし、こちらはcheckinstall(make install)まで行い再起動させます。

cd ..
sudo git clone https://github.com/patjak/bcwc_pcie.git
cd bcwc_pcie
sudo make
sudo checkinstall
sudo reboot

再起動後、最初のmakeでできたfirmware.binを特定の場所にコピーします。

これまで認識しなかったのは、自分の環境だと/lib/firmware/facetimehd/ではなく、/usr/lib/firmware/facetimehd/に置かないといけなかったみたい。

sudo cp /usr/local/src/facetimehd/firmware.bin /usr/lib/firmware/facetimehd/

続けてmodprobeで認識させます。

sudo depmod
sudo modprobe -r bdc_pci
sudo modprobe facetimehd

解説:この3行は次のような意味です。

sudo depmod #カーネルモジュール依存関係リストを更新するため
sudo modprobe -r bdc_pci #bdc_pciモジュールを削除
sudo modprobe facetimehd #facetimehdモジュールのロード(読み込み)

最後に、confファイルを作成してすることで、再起動してもfacetimehdモジュールが再ロードされるようにします。

echo facetimehd | sudo tee /etc/modules-load.d/facetimehd.conf

よく見かけるsudo cat facetimehd » /etc/modulesというコマンドは今後からサポートしないらしいためteeコマンドです。

確認してみる

カメラの確認する方法は、ハードとしての認識と/dev/video0へ繋がっているかの確認です。

sudo dmesg | grep -i camera

同様にlsmodでも表示されるかどうか。

lsmod | grep face*

最後に、デバイスリストにFacetimeと/dev/video0が表示されていればOKです。

v4l2-ctl --list-devices
Apple Facetime HD (PCI:0000:02:00.0):
  /dev/video0

Guvcviewで動作確認

内蔵カメラを使うアプリで有名なCheeseでは動かないので、Guvcviewをインストールして起動させてみました。

Guvcviewはsnap版ではなく、aptコマンドでインストールするapt版で試しました。

sudo apt install guvcview

モザイクは加工です

音声がやや遅延して映像が追従することにはなるものの、概ね問題無いレベルでした。やったー!

UbuntuをインストールしているノートパソコンはMacBookProなのですが、macOSとして使う場合とあまり変わらないレベルです。

Guvcviewのコントロールはすべて動作しました。今まで認識できなかったカメラなので感動します。ちなみにオプションのビデオフィルタもすべて適用されて問題はありません。

元々、MacBookPro内蔵の音声入力(マイク)は問題は出ていません。テストとして録画してみたところ、映像の遅延は僅かに感じても、普通に使えるレベルです。

今回はMacBookPro(2015)の内蔵カメラでした。他の年代やインチ違いモデルでも、カメラデバイスが変更になっていないモデルなら動作するかもしれません。

MacBookProの内蔵カメラがUbuntuで動かない場合は参考にしてください。

参考:

Get Started

MacBook Pro (Retina, 13-inch, Early 2015) 720p FaceTime HDカメラ

MacBook Pro (Retina, 13-inch, Early 2015) - 技術仕様 - Apple サポート (日本)