Raspberry pi zero で HDMI を無効化する備忘録

Environment
Photo by hyt.

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]

以上!

EnvironmentGadget
スポンサーリンク
Following hyt!
タイトルとURLをコピーしました