Raspberry Pi OSのバージョンに依存していたり、カメラ ソフトウェア スタックのlegacyとlibcameraとを混同している説明が多い。バージョン毎に、所望のカメラ ソフトウェア スタックを選択する方法を整理する。
- カメラ:Raspbery Pi Camera Ver2.1
- Raspberry Pi 3B+
下記コマンドによりコードネームを表示させbusterかbullseyeかを識別する。
$ lsb_release -c
Codename: bullseye
buster
違いは /boot/config.txt の dtoverlay の記述だけ。
Legacyモード
- raspi-config で camera interface をenable
- /boot/config.txt の dtoverlay= をコメントアウト
vc4-fkms-v3d も imx219 も両方とも - camera_auto_detect をコメントアウト(busterのインストール時には存在しない)
$ vcgencmd get_camera
supported=1 detected=1, libcamera interfaces=0
libcameraモード
- rpi-updateでファームウェアをアップデート
- raspi-config で camera interface をenable
- /boot/config.txt に dtoverlay=imx219を追加
- camera_auto_detect をコメントアウト(インストール時に存在しない)
$ vcgencmd get_camera
supported=1 detected=0, libcamera interfaces=1
bullseye
start_x=1の記述によりlegacyモードに切り替わる。
raspi-configが/boot/config.txtを書き換えることに注意。
legacyモード
- raspi-configでlegacy supportをenable
/boot/config.txt の camera_auto_detect が削除される。
/boot/config.txt の start_x=1が追記される。
$ vcgencmd get_camera
supported=1 detected=1, libcamera interfaces=0
libcameraモード
vcgencmdに対しては libcamera interfaces=0であるが、 libramera-vid –list-cameras に対しては検出される。
- raspi-configでLegacy Cameraをdisableに設定
raspi-configが /boot/config.txt の camera_auto_detect =1 を追記する。
値は0でも1でも動きに変わりは無さそう。 - raspi-configでAdvanced Options → Glamorをenableに設定
設定しないとプレビューウィンドウを表示できない。 - /boot/config.txt に dtoverlay=im219 を追記する
vcgencmd get_cameraに対し libcamera interfaces=0
libcamera-hello –list-cameras に対し im219 を検出
v4l2-ctl –list-devices に対し /dev/video0 を検出 - /boot/config.txt に dtoverlay=im219 を追記しない
vcgencmd get_cameraに対し libcamera interfaces=0
libcamera-hello –list-cameras に対し No cameras available!
v4l2-ctl –list-devices に対し /dev/video0 が検出されない
Glamorがdisableになっている場合は下記のエラーが表示される。
-nオプションを付けプレビューウィンドウを非表示にすれば実行は可能。
libEGL warning: DRI2: failed to authenticate
Made X/EGL preview window
…
busterとbullseyeとの違い
- 情報源はこちら
- ハードウェアアクセラレータが使えなくなった
Raspberry Pi Camera V2本体内のH.264エンコードを用いる。
又は、libcameraによりソフトウェアエミュレーションさせる。