« Screenlets標準のApplicationってのが便利。 | トップページ | デザイン変更・雑記 »

サスペンドからの時間指定による復帰の覚書

TV録画などで、サスペンドしていても、時間になったら復帰させたいことはよくあります。
ワタクシは、以下のスクリプトで、サスペンド時にその設定を行っています。

/etc/pm/sleep.d/48ivtv
#!/bin/bash

/usr/lib/pm-utils/functions

echo `date` $1 >> /tmp/48ivtv.log

case "$1" in
    hibernate|suspend)
        TMP=`atq | awk '{printf("%s %02d %s %s\n", $3, $4, $5, $6) }' | sort | head -n1 `
        SECS=`date --date "$TMP UTC" "+%s"`
        SECS=`expr $SECS - 300`
        echo $TMP > /tmp/wakeup.time
        echo $SECS > /tmp/wakeup.secs

        if [ -e /sys/class/rtc/rtc0/wakealarm ]; then
            echo 0 > /sys/class/rtc/rtc0/wakealarm
            echo $SECS > /sys/class/rtc/rtc0/wakealarm
        fi
        cat /proc/driver/rtc > /tmp/ivtv_rtc.log
        ;;
    thaw|resume)
        /sbin/modprobe -r ivtv;
        /sbin/modprobe ivtv;
        echo "ls /home/kaoru > /tmp/ls.txt" | /usr/bin/at now+1minute
        /bin/sleep 10s
        /usr/bin/v4l2-ctl -d /dev/video0 -i 0 --set-standard=2
        /usr/bin/v4l2-ctl -d /dev/video0 --set-ctrl volume=40000
        /usr/bin/v4l2-ctl -d /dev/video0 --set-ctrl median_filter_type=4
        /usr/bin/v4l2-ctl -d /dev/video0 --set-ctrl spatial_luma_filter_type=4
        ;;
    *)
        ;;
esac

exit $?


注意すべき点は、以下の点。

  • BIOSの時間と、Ubuntuの時間が一致していること。
  • BIOSの時間指定起動は無効にしておくこと。
なお、実行時に本当に実行直前に起動してしまうと、サスペンドからの復帰に思ったより時間がかかったりした場合にNGなので、上記スクリプトでは、指定時間の5分前に起動するようにしています。
        SECS=`expr $SECS - 300`

5分前ではなく3分前がよい場合には、300を180にするなり、調整します。
さらに、なぜか9.04では、サスペンドからの復帰で、cronが正しく実行されないので、サスペンドからの復帰後、1分後にダミーのatコマンドを定義し、実行させることで、その後のcronも正常に実行されるようになります。
ダミー実行はなんでもいいみたいですね。
        echo "ls /home/kaoru > /tmp/ls.txt" | /usr/bin/at now+1minute


BIOS時間とUbuntu時間が一致していることを確認し、その設定を保持するためには、以下のファイルを確認。
/etc/default/rcS
中の
UTC=no
となっていれば、BIOS時間もJSTに設定されているはず。
UTC=yes
だと、BIOS時間はUTCになっているので9時間ずれます。
その運用にしたい場合には、以下の行を変更します。
        SECS=`date --date "$TMP UTC" "+%s"`
BIOS時間をUTCにする場合。

        SECS=`date --date "$TMP JST" "+%s"`


正しく起動時間が設定されているかどうかは以下のコマンドで確認できます。
cat /proc/driver/rtc

本日ハマったので、メモ。

ちなみに、起動時間指定のコアな部分は以下。
            echo 0 > /sys/class/rtc/rtc0/wakealarm

            echo $SECS > /sys/class/rtc/rtc0/wakealarm

起動する時間を1970年1月1日からの秒数で指定するようです。

何度か設定をしているんですが、自分のブログにも設定としてまとめてなかったので、ここでまとめておきます。
#まあ、個々の情報としては役に立ってたんですけどね。


|

« Screenlets標準のApplicationってのが便利。 | トップページ | デザイン変更・雑記 »

Ubuntu」カテゴリの記事

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/500703/46266004

この記事へのトラックバック一覧です: サスペンドからの時間指定による復帰の覚書:

« Screenlets標準のApplicationってのが便利。 | トップページ | デザイン変更・雑記 »