Raspberry Pi用の便利なコマンド
現在、Raspberry Pi用のAlmaLinuxにはRaspberry Pi OSで便利に使用しているコマンドであるvcgencmd
やtvservice
が含まれていません。
Raspberry Pi OSの公式ドキュメントでは、主にHDMIディスプレイの情報取得と設定に使用されるtvservice
とRaspberry Pi上のVideoCore GPUから情報を出力するとされているvcgencmd
があります。
これらのコマンドのソースがGitHubでuserland
として公開されていますから、それを利用してRaspberry PiにインストールしたAlmaLinux上でビルドしていくことにします。
開発環境のインストール
最初に開発環境をインストールします。AlmaLinuxで提供されているパッケージのグループを確認してみます。
$ env LANG=C dnf group list
AlmaLinuxでは、開発環境がDevelopment Tools
としてグループで提供されています。
$ sudo dnf group install -y "Development Tools"
ここで、Raspberry Pi用のuserland
をビルドする際にはcmake
も必要になりますから、追加でインストールしておきます。ここで必須というわけではありませんが、さらにrsync
とvim
、wget
コマンドもインストールしておきます。
$ sudo dnf install -y cmake rsync vim wget
userland
のクローンとビルド
開発環境の準備ができましたから、GitHubからソースをクローンしてビルドします。
$ git clone https://github.com/raspberrypi/userland.git
クローンしたソースをビルドします。
$ cd userland
$ ./buildme --aarch64
実は、ここでbuildme
を実行するとビルドに続けて/opt/vc
ディレクトリーにコマンドとライブラリーをインストールしています。
vcgencmd
の実行
ビルドとインストールが出来ましたら、vcgencmd
を実行してみます。
先ほど実行したbuildme
で、vcgencmd
の実行に必要なライブラリーを/opt/vc/lib
ディレクトリーにインストールしていますから、これを使用できるように設定します。
$ cd /etc/ld.so.conf.d
$ sudo vi vclib.conf
/opt/vc/lib
$ sudo ldconfig
/etc/ld.so.conf.d
ディレクトリーに、vclib.conf
ファイルを作成して/opt/vc/lib
としてライブラリーのパスを追加しています。続けてldconfig
コマンドを実行してライブラリーを使用できるように設定しています。
実際に実行してみましょう。
$ sudo /opt/vc/bin/vcgencmd measure_temp
temp=43.8'C
vcgencmd
で使用できるコマンドが数多くありますが、ここではRaspberry Pi内部のSoCの温度を表示しています。
ところが、ここではsudo
で実行しています。Raspberry Pi OSのように、alma
のような一般ユーザーがsudo
無しで実行できるように設定していきます。
$ cd /etc/udev/rules.d
$ sudo vi 92-local-vchiq-permissions.rules
KERNEL=="vchiq",GROUP="video",MODE="0660"
$ ls -l /dev/vchiq
rw-------. 1 root root 10, 124 3月 20 09:00 /dev/vchiq
$ sudo udevadm trigger /dev/vchiq
$ ls -l /dev/vchiq
rw-rw----. 1 root video 10, 124 3月 20 09:00 /dev/vchiq
$ sudo usermod -aG video alma
vcgencmd
で使用するデバイス/dev/vchiq
のパーミッションを変更してグループをvideo
にして、video
グループにアクセス権を付与しています。同時にalma
ユーザーをvideo
グループに所属させています。
alma
ユーザーの設定
ここで、alma
ユーザーをログインし直します。id
コマンドを実行すると、video
グループに所属しています。
$ id
uid=1000(alma) gid=39(video) groups=39(video),4(adm),190(systemd-journal),1000(alma) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
今度は、sudo
なしでvcgencmd
を実行してみます。
$ /opt/vc/bin/vcgencmd measure_temp
temp=44.3'C
無事に実行できるようになりました。追加でパスの設定をしておきます。
$ vi ~/.bashrc
export PATH=/opt/vc/bin:$PATH
$ source ~/.bashrc
さらに、ログインする度に現在の温度を表示するように$HOME/.bash_profile
に次の行を追加します。
$ vi ~/.bash_profile
echo
echo CPU temperature=$(vcgencmd measure_temp)
一旦ログアウトして、再度ログインし直してみます。
Last login: Mon Aug 14 08:18:51 2023
CPU temperature=45.7'C
[alma@almalinux ~]$
さらに、次のようなalias
を作成しておきます。
$ mkdir ~/.bashrc.d
$ vi ~/.bashrc.d/bash.alias
alias temp='vcgencmd measure_temp'
この内容を反映させるために、ログインし直すか~/.bashrc
を再読み込みしておきます。
$ source ~/.bashrc
$ temp
temp=44.3'C
temp
と入力するだけで温度を表示するようになりました。
vcgencmd
の利用
vcgencmd
には、多くのコマンドが用意されていて次のようにcommands
として表示することができます。
$ vcgencmd commands
commands="commands, set_logging, bootloader_config, bootloader_version, cache_flush, codec_enabled, get_mem, get_rsts, measure_clock, measure_temp, measure_volts, get_hvs_asserts, get_config, get_throttled, pmicrd, pmicwr, read_ring_osc, version, readmr, otp_dump, set_vll_dir, set_backlight, get_lcd_info, arbiter, test_result, get_camera, enable_clock, scaling_kernel, scaling_sharpness, hdmi_ntsc_freqs, hdmi_adjust_clock, hdmi_status_show, hvs_update_fields, pwm_speedup, force_audio, hdmi_stream_channels, hdmi_channel_map, display_power, memtest, dispmanx_list, schmoo, render_bar, disk_notify, inuse_notify, sus_suspend, sus_status, sus_is_enabled, sus_stop_test_thread, egl_platform_switch, mem_validate, mem_oom, mem_reloc_stats, hdmi_cvt, hdmi_timings, file, vcos, ap_output_control, ap_output_post_processing, vchi_test_init, vchi_test_exit, pm_set_policy, pm_get_status, pm_show_stats, pm_start_logging, pm_stop_logging, vctest_memmap, vctest_start, vctest_stop, vctest_set, vctest_get"
例えば、bootloader_version
で現在のブートローダーのバージョンを確認したり、bootloader_config
でEEPROMの設定内容を確認したりすることができます。他にも、get_config
で/boot/config.txt
で設定しているような内容を確認することもできます。
vcgencmd
のオプションとしては、AlmaLinuxでは使用できないコマンドがあるかも知れませんが、Raspberry Pi上でAlmaLinuxを使用する際には便利なコマンドの一つです。
参考: Useful Utilities Raspberry Pi公式ドキュメント
GitHub – userland Raspberry Pi用のコマンドとライブラリーのソース
Install Raspberry Pi’s vcgencmd
on Fedora Leo341’s Personal Site