Raspberry pi zero で HDMI を無効化する備忘録です.
Bitly
ググると tvservice を用いた方法がよく出てきますが,少なくとも Debian bullseeye ベース以降の Raspberry pi OS (本稿執筆時点の最新版 bookworm のひとつ前)の場合は,これだとうまくいかないようです.
設定方法
少なくとも本稿執筆時点の最新の Raspberry Pi OS Lite(Debian bookworm ベース)の場合は,以下のように設定する必要があるようです.
vc4-kms-v3d の無効化
/boot/formware/config.txt から dtoverlay=vc4-kms-v3d を以下の通り無効化します.
$ sudo vi /boot/firmware/config.txt .... # Automatically load initramfs files, if found auto_initramfs=1 # Enable DRM VC4 V3D driver #dtoverlay=vc4-kms-v3d max_framebuffers=2 # Don't have the firmware create an initial video= setting in cmdline.txt. # Use the kernel's default instead. disable_fw_kms_setup=1 ....
vcgencmd display_power 0
次に vcgencmd を用いて,HDMI を無効化します.無効化できているか否かもこのコマンドで確かめることができます.
$ sudo apt install libraspberrypi-bin $ sudo vcgencmd display_power 0 #無効化 display_power=0 $ vcgencmd display_power #設定チェック display_power=0 $ vcgencmd display_power 1 #有効化 display_power=1 $ vcgencmd display_power #設定チェック display_power=1
なお,vcgencmd の使い方についての概要は以下のページを見れば良いようです.
302 Found
起動時に無効化
起動時に無効化したい場合は,/etc/rc.local を以下の通り設定します.
$ sudo vi /etc/rc.local ... # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi /usr/bin/vcgencmd display_power 0 exit 0
tvservice を使いたい場合
現在の Raspberry pi OS では,vcgencmd を用いて無効化するのが推奨のようですが,tvservice もかなり頑張れば使えるようにできます.
Just a moment...
導入の準備
ソースコードから導入するので,ソースコードをコンパイルするのに必要なパッケージを準備します.
$ sudo apt install git cmake make build-essential
ソースコードの取得とインストール
ソースコードからのインストールは以下の手順に従います.
$ cd /tmp $ git clone http://github.com/raspberrypi/userland $ cd userland $ ./buildme $ sudo ln -s /opt/vc/bin/tvservice /usr/bin/. $ sudo vi /etc/ld.so.conf include /etc/ld.so.conf.d/*.conf /opt/vc/lib # この行を追加 $ sudo ldconfig
動作確認
動作確認の様子は以下の通りです.
$ sudo tvservice --off Powering off HDMI $ sudo tvservice -s state 0x120000 [TV is off]
以上!