録画サーバを構築して運用していると、ときどきチューナーの見失いで録画が失敗することはないでしょうか?
特に、px-w3u4やpx-q3u4のUSB接続タイプのチューナーを使っている場合、スリープやスタンバイ復帰時にデバイスを見失いやすいです。
私も、以前はこの事象に何度か遭遇していまして、そこである対策を行いました。
ある対策を行ってからは一切チューナーを見失うことは無くなり、録画に失敗することが無くなりました。
本記事では、そんなデバイスを見失う事象を回避する方法について紹介します。
参考ということで。
Contents
チューナーの見失い?
録画サーバを構築して運用していると、チューナーを見失い録画に失敗することがあります。
特に、USB接続タイプのpx-w3u4やpx-q3u4のUSB接続タイプのチューナーを使っている場合、スリープやスタンバイ復帰時にデバイスを見失いやすいです。
例えば、EPGStationであれば、以下のようなエラーが吐かれてかつそれが続く場合、それはチューナーを見失っている可能性が高いです。
1 |
YYYY-MM-DDTHH:MM:SS.mmm+09:00 warn: ChannelItem#'XX:XXX' service scan has failed [Error: stream has closed before get network] |
や
1 |
YYYY-MM-DDTHH:MM:SS.mmm+09:00 warn: Network#N EPG gathering has failed [Error: no available tuners] |
このエラーが続くようなら、ホスト側でチューナー(デバイス)を見失っているかもしれません。
チューナーデバイスの「見失い」の確認方法
これは、単純です。
サーバがチューナーをデバイスとして認識しているかを確認します。
例えば、px4_drvを使っている場合、チューナは/dev/px4video*と認識されます。
そのため、以下のコマンドでデバイスが認識されているかを確認します。
1 |
ls /dev/px4video* |
ここで、見えるはずのデバイスが見えなかったら、チューナーをロスト(見失い)しています。
私がとった対策
私がとった対策として、以下のスクリプトを作りました。
1 |
emacs /usr/tool/chk4rec |
1 2 3 4 5 6 7 8 9 10 11 12 |
#! /bin/bash if [ ! -e /dev/px4video0 ]; then echo "px4_drv reinstall!!" cd /home/${USER}/src/px4_drv/driver/ # ${USER}はユーザ名に書き換える apt install linux-headers-$(uname -r) make clean make make install modprobe -r px4_drv modprobe px4_drv fi |
このスクリプトは、ドライバのソースが/home/${USER}/src/px4_drv/driver/に配置されていることが前提となります。
やってることは、/dev/px4video*を確認し、デバイスが見つからなかったらドライバを再インストールする、です。
賞味、デバイスが無かったら、modprobe -r px4_drvだけでも良いかと思うのですが、カーネルがアップデートしたことによってドライバが使えなくなる場合も考えて、このようにしています。
自動でカーネルをアップデート(アップグレード)している場合は、参考にしてください。
以下の記事を参考に構築していただければ、そのまま使えます。
どう使う?
このスクリプトを手動で実行してももちろんOKですが、自動化したいですよね。
EPGStationの録画準備開始時に自動実行する
1つの方法として、ホストにEPGStationを入れて使っている場合は、録画準備開始時に任意のコマンドを実行する機能がありますので、これを使うのがよさそうです。
config.jsonに以下を追記します。
1 |
"recordedPreStartCommand": "/bin/bash /usr/tool/chk4rec", |
これで、録画直前にデバイスが認識されるようになります。
Crontabで定期実行する
DockerでEPGStationを構築している場合は、コンテナ内でドライバを再インストールしても意味がないのでCronを使います。
1 |
emacs /etc/crontab |
例えば、毎日7:55と8:55にデバイスチェックしたい場合は以下を追記してください。
1 |
55 7-8 * * * root /usr/tool/chk4rec |
これで毎日8時前と9時前にチューナーを認識しますので、デバイスをロストする確率は下がると思います。
cron実行の場合、シェルスクリプトに記載しているファイルパスは環境変数($USER)は、使わないようベタ書きしてください。
まとめ
スリープ復帰時等のチューナー見失い対策について記事にしてみました。
特に、px-w3u4やpx-q3u4のUSB接続タイプのチューナーを使っている場合、スリープやスタンバイ復帰時にデバイスを見失いやすいです。
こんな事象に遭遇した方に参考にしていただきたいです。
この手の対策はいくつかあるのですが私はこの方法で対策を行い、以後一回もチューナー見失いによる録画失敗を経験していません。
参考になれば幸いです。
コメント