再びRaspbianでHDMIをスリープさせない設定
ハマった。 実は幾つもの場面でそれぞれの設定がある。ということっぽい。
コンソールの待ち状態で
/etc/kbd/config の以下の部分
# screen blanking timeout. monitor remains on, but the screen is cleared to # range: 0-60 min (0==never) kernels I've looked at default to 10 minutes. # (see linux/drivers/char/console.c) BLANK_TIME=30 <中略> # Powerdown time. The console will go to DPMS Off mode POWERDOWN_TIME # minutes _after_ blanking. (POWERDOWN_TIME + BLANK_TIME after the last input) POWERDOWN_TIME=30
この
BLANK_TIME=30 POWERDOWN_TIME=30
をそれぞれ=0にする。
またはsettermコマンドで指定する。
$ setterm -blank 0 -powersave off -powerdown 0
この方法は、その場限り。恒久的にするには~/.bashrcに追記する。 が、このファイルは、ターミナルからログインした時も読込まれるので、その時は下記エラーが表示される。
setterm: cannot (un)set powersave mode: Inappropriate ioctl for device
参考:StackExchange: Stopping Raspberry Pi display sleep
x without desktop
/etc/X11/xinit/xserverrc の設定
exec /usr/bin/X -nolisten tcp "$@"
を
exec /usr/bin/X -s 0 dpms -nolisten tcp "$@"
とする。
これで下記のようにアプリを実行してやればデスクトップなしで起動し、かつスリープしない。
$ xinit /path/to/app $ startx /path/to/app
ちなみに、どちらの方法でも /etc/X11/xinit/xinitrc と~/.xinitrcは読み込まれないっぽい?環境かバージョンによるのかな?
これが原因でハマった。要は上記方法で実行する場合では、どちらに設定を追記しても反映されないのです・・・。
xinitへ直接設定を渡すには--の後にパラメータで指定できる。
$ xinit /path/to/app -- -retro -retro: start with classic stipple and cursor -nocursor: disable the cursor
$ startx だけでディスクトップを起動した場合は、両方とも読込まれる。が~/.xinitrcを作成すると何故かディスクトップが起動しなくなる。
※この設定はどうやらLDXEデスクトップでも引き継がれる。-s 0 dpmsによってスリープしなくなる。
LDXE デスクトップ
xsetコマンドで設定する。デフォルトではコマンドが使えないのでインストールする。
$ sudo apt-get install x11-xserver-utils
/etc/xdg/lxsession/LXDE/autostartを編集。
#@xscreensaver -no-splash @xset s off @xset -dpms @xset s noblank
または/etc/X11/xinit/xinitrcに追記する。
xset s off xset -dpms xset s noblank
~/.xinitrc に同じ内容を記述すると、startxコマンドでディスクトップが起動しなくなる。何で?
参考:RaspberryPi Forum: How to disable screen blanking
その他
tvserviceを使って強制的にオンオフすることも可能。
$ tvservice -o # スリープ $ tvservice -p # オン
Xのログ
上手く行かない時などの確認に。
/var/log/Xorg.0.log










