systemdで起動するときにfbiを使用して画像を表示する

systemdで起動するときにfbiを使用して画像を表示する

次のコマンドを使用して画像を正常に表示できます。

sudo fbi -T 1 /home/pi/photo-screen/photos/*.jpg -t 4

Raspberry PIが起動するとすぐに、これらの画像のスライドショーを開始したいと思います。

そのため、次のようなシステムファイルを追加しました。

[Unit]
Wants=graphical.target
After=graphical.target

[Service]
Type=simple
User=pi
Group=pi
WorkingDirectory=/home/pi/photo-screen
ExecStart=sudo bash -c "fbi -T 1 -d /dev/fb0 photos/*"
Restart=always
RestartSec=20

[Install]
WantedBy=multi-user.target
● photo-screen.service
     Loaded: loaded (/etc/systemd/system/photo-screen.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-12-11 15:12:07 CET; 61ms ago
   Main PID: 1080 (sudo)
      Tasks: 2 (limit: 472)
        CPU: 23ms
     CGroup: /system.slice/photo-screen.service
             ├─1080 sudo bash -c fbi -T 1 -d /dev/fb0 photos/*
             └─1082 fbi -T 1 -d /dev/fb0 photos/0058966c-7ee5-4fc0-80ec-55885809567b.jpg photos/04669eb7-bf5e-4cbf-ab8f-fc7b3566186d.jpg photos/0cc1ad40-1b05-4f1c-beae-0c285d6b62>

Dec 11 15:12:07 foto systemd[1]: Started photo-screen.service.
Dec 11 15:12:07 foto sudo[1080]:       pi : PWD=/home/pi/photo-screen ; USER=root ; COMMAND=/usr/bin/bash -c fbi -T 1 -d /dev/fb0 photos/*
Dec 11 15:12:07 foto sudo[1080]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)

私はSSH経由でログインしているので、正しいttyを割り当てると、そのパラメータが-T 1正しく機能します。

私は試した:

  • chvt 1;私のスクリプトに含まれています
  • 次のように実行root
  • -d /dev/fb0私のスクリプトにオプションを追加する
  • しかし、私は使用してfim同じ問題があります
  • 緊急パスを使用する

画面が接続されており、ログインプロンプトは時々黒く表示されますが、画像は表示されません。

OOPS Terminatedある時点で、ログインプロンプトの上の画面に表示されました。

また、画面を任意の項目で埋めると、しばらくすると画面の約80%を覆う黒いバーで覆われます。

cat /dev/random > /dev/fb0

ここに画像の説明を入力してください。

FBIスクリプトを次のように置き換えようとしましたが、cat /dev/random > /dev/fb0画面が埋められませんでした。

私は高いbash端末を提供することで問題を解決できると思いました。

sudo bash -c "chvt 1; fbi -T 1 -d /dev/fb0 images/*"

これは私のSSH端末を介して再び機能しますが、systemdを使用しません。

答え1

私は成功せずにこのウサギの洞窟の下に降りてきました。 systemdデーモンでfbiのtty1にアクセスする方法が見つかりません

代わりにcrontabを使用してください。まず、設定> Raspberry Piの設定を選択して、GUIを介した自動ログインを無効にしました。 「システム」タブで「自動ログイン」を「無効」に設定しました。

その後、cronエントリを追加しました(sudo crontab -eしたがってrootとして実行されます)。

@reboot fbi -a --noverbose -T 1 -d /dev/fb0 -l /home/ed/Documents/PictureFrame/images.txt --random --blend 120 -t 30

したがって、pi が現れるとコマンドが実行されます。しかし、それはうまくいきませんでした。スライドショーがしばらく始まるのがわかりますが、その後ログイン画面に進みます。スライドショーが早すぎます。大丈夫です。とにかく私が本当に望むのは、SmugMugから毎回新しい画像バッチをダウンロードすることです。そのため、イメージをダウンロードしてfbiを呼び出すシェルスクリプトを作成しました。したがって、私のcronタスクはネットワーク接続を待ってから、次のことを行うシェルスクリプトを呼び出します。

@reboot /bin/bash -c 'until nc -z 8.8.8.8 53; do sleep 1; done; /home/ed/Documents/PictureFrame/FBISlideShow'

私はNCを得るために逃げたsudo apt install netcat-traditional。スリープ10などが使えます。

Piが起動した後、しばらく遅れますが、私のスライドショーは自動的に始まります。

これはDebian BookwormがインストールされているRaspberry Pi 4にあります。

関連情報