-
Notifications
You must be signed in to change notification settings - Fork 1
disable screen off
AudioをHDMIに頼っているのと、インターフェイスがスリープすると音も止まってしまうため、HDMI出力を落とさないように設定する必要があります。
まずは、Xorgの設定を確認してみます。
root@beaglebone:~# cat /etc/X11/xorg.conf
Section "Module"
Load "extmod"
Load "dbe"
Load "glx"
Load "freetype"
Load "type1"
Load "record"
Load "dri"
EndSection
Section "Monitor"
Identifier "Builtin Default Monitor"
EndSection
Section "Device"
Identifier "Builtin Default fbdev Device 0"
Driver "modesetting"
EndSection
Section "Screen"
Identifier "Builtin Default fbdev Screen 0"
Device "Builtin Default fbdev Device 0"
Monitor "Builtin Default Monitor"
DefaultDepth 16
EndSection
Section "ServerLayout"
Identifier "Builtin Default Layout"
Screen "Builtin Default fbdev Screen 0"
EndSection
Xorgにはスリープ系の設定はないようです。
一般的には、ここに下記のような設定を書き込んで、スリープする時間を設定しますが、見当たりません。
Option "StandbyTime" "10"
Option "SuspendTime" "20"
Option "OffTime" "30"
or
Option "BlankTime" "30"
GUIからSystem->Prefrence->PowerManagementで省電力設定ユーティリティを起動してみます。
30minに設定されていました。これをNeverに設定してみましたが、やはり画面が切れます。
ここでの設定の効果はないようです。
ターミナルから、Xorgの設定状態を見てみましょう。
sshの画面から、環境変数SCREENを設定してみたのですが、操作できませんでした。シリアルコンソールからはできるかもしれません。GUI画面から、ターミナルアプリケーションを起動して設定を見ます。
sh-4.2# xset q
Keyboard Control:
auto repeat: on key click percent: 0 LED mask: 00000000
auto repeating keys: 00ffffffdffffbbf
fadfffefffedffff
9fffffffffffffff
fff7ffffffffffff
bell percent: 50 bell pitch: 400 bell duration: 100
Pointer Control:
acceleration: 2/1 threshold: 4
Screen Saver:
prefer blanking: yes allow exposures: yes
timeout: 600 cycle: 600
Colors:
default colormap: 0x20 BlackPixel: 0x0 WhitePixel: 0xffff
Font Path:
/usr/share/fonts/X11/misc/,/usr/share/fonts/X11/100dpi/,/usr/share/fonts/X11/75dpi/,built-ins
DPMS (Energy Star):
Server does not have the DPMS Extension
Font cache:
Server does not have the FontCache Extension
スクリーンセーバー機能が設定されているのがわかります。タイムアウトは600秒です。省電力機能としてのDPMSは使われていないようです。
タイムアウトをオフにしてみましょう。
sh-4.2# xset s off
sh-4.2# xset q
Screen Saver:
prefer blanking: yes allow exposures: yes
timeout: 0 cycle: 600
はやり切れてしまいます。効果がありませんでした。
"prefer blanking"をオフにしてみましょう。
sh-4.2# xset s noblank
sh-4.2# xset s off
sh-4.2# xset q
Screen Saver:
prefer blanking: no allow exposures: yes
timeout: 0 cycle: 600
これも、効果がありませんでした。
どうやら、Xorgからスクリーンを切る指示がでているわけではなさそうです。
フレームバッファの設定が確認できる/sys/class/graphics/fb0/以下を見てみましょう。
root@beaglebone:~# cat /sys/class/graphics/fb0/modes
U:1280x720p-0
root@beaglebone:~# cat /sys/class/graphics/fb0/pan
0,0
root@beaglebone:~# cat /sys/class/graphics/fb0/stride
2560
root@beaglebone:~# cat /sys/class/graphics/fb0/bits_per_pixel
16
root@beaglebone:~# cat /sys/class/graphics/fb0/blank
一般的な値は確認できます。"blank"に値はありませんでした。状態の確認はできず、値を書きこむことしかできないようです。
"blank"の設定に"0"を書き込んで無効にしてみます。
root@beaglebone:~# echo 0 > /sys/class/graphics/fb0/blank
しかし、しばらくすると画面が切れました。効果はないようです。
ただ、切れた状態からの復帰はできる。
そのくらいで有効だとすると、kernel起動オプションでやるしかないのか。
optargs="consoleblank=0"追記。
root@beaglebone:~# vi /media/BEAGLEBONE/uEnv.txt
optargs="quiet drm.debug=7 consoleblank=0"
root@beaglebone:~# cat /media/BEAGLEBONE/uEnv.txt
optargs="quiet drm.debug=7 consoleblank=0"
root@beaglebone:~# reboot
root@beaglebone:~# cat /proc/cmdline
console=ttyO0,115200n8 quiet drm.debug=7 consoleblank=0 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait
効いてはいるみたい。
ダメ、止まった。
何か別のものが止めている。
何が止めているのかわからない。
うまくいったら、.xinitrcに書いて終わる予定だったのだが。
xset s off
xset -dpms
xset s noblank
しょうがないので、cronで回す?
root@beaglebone:~# crontab -e
crontab: installing new crontab
root@beaglebone:~# crontab -l
30 * * * * /usr/bin/ntpdate-sync silent
5 * * * * echo 0 > /sys/class/graphics/fb0/blank
しかし、この間に上書きで割り込まれたら、止まってしまう。
根本的な解決ではない。
これで、1時間回して落ちないということは、落としているのはfb自身ってことかな。
書くとタイマ更新されるので、落とされないのじゃなかろうか。
それとも、何か別の原因、モニタ側との通信に何か問題があるという可能性もある。
モニタを変えて再現するかどうか確認してみるか。
blankに5分おきに書き込んでもスリープしてしまう。 であれば、キーボード入力を定期的に発生させればいい。
Linux Input Subsystemの使い方 http://www.tatapa.org/~takuo/input_subsystem/input_subsystem.html