RasPi 3でWayland

いやー,Gemini君のおかげで長年の問題が解決しました.

Raspberry Pi 3 Model B (RPi3)および同Model B+ (RPi3+)でATOM Cam 2の発するRTSPをモニターしてきました.ただこれがWaylandではうまくいかずXorgでやってきました.今回Geminiに聞きながらWaylandにしました.

これまでWaylandで問題になるのは,

  • 起動時に自動起動できない
  • 起動後に手動でVLCを起動しても,HDMIで接続しているデジタルテレビの電源をOFFにしてしばらくしてONにすると映像が来ない

の2点で,これは日常的に使うには致命傷に近いです.まずテレビをOFF/ONすると消えてしまう点について相談しました.

Geminiの回答を引用しますと,

  • GUIでの設定: メニュー > 設定 > Raspberry Piの設定 > ディスプレイ タブから「画面のブランク」を無効にします。
  • 設定ファイルでの対応: ~/.config/wayfire.ini を開き、以下の項目を確認(または追記)してください。
[idle]
dpms_timeout = 0
screensaver_timeout = 0

とのことで,この通りにして解決しました.

こうなると自動起動も解決したいです.RPi3(+)を起動し,まだPIXEL1のデスクトップが表示される前にsshでつないでtopコマンドで状況を見ると,vlcが一瞬見えますが,実際には起動してくれません.

起動の.timerファイルのOnBootSecなりOnStartupSecの時間を3minとか5miniにしても,起動直後にvlcが見えて実際には動作してくれません.

これはひょっとして,RPi3(+)はReal Time Clock (RTC)がバッテリーでバックアップされていないから起動時は1970年1月1日0:00とかになるはずで,それからカウントしているのではないかと思い当たりました.

既に56年経っていれば3分も5分もとっくの昔で,XorgやWaylandが起動するのを待たずに即時起動されるわけです.

Geminiに聞くとまさにそのようで,systemd-time-wait-sync.serviceを起動して,vlcを起動するrun_vlc.serviceでは,

[Unit]
Description=My delayed service
# 時刻同期が完了するまで待つ
After=time-sync.target
Wants=time-sync.target

とするのが肝要とのことで,この既述をしてrun_vlc.timer内で,

[Timer]
OnBootSec=15sec

とすることでうまくいきました.

この辺については,Xorgでは動き,Waylandでは動かないというのは,それぞれの性質によるようです.

  1. Raspberry Pi OSの標準desktop manager. ↩︎