Foltia with AppleScript

Foltia animelockerのトラブルシューティング

Foltia 魔の50分台

多くの方が報告している様に、Foltiaは1時間おきに50分台に録画が止まりやすいという現象があります。 これをまあ呼称しやすい様に、"魔の50分"と呼ぶことにしましょう。 この50分台に何が起こってるか先ずは原因を推測して見ます。

原因:観測と考察

実は50分から/home/foltia/perl/schedulecheck.pl というスクリプトが動作していて、名前の通りePEG予約表のデーターをチューナを介してダウンロードしている時間帯になります。 ePEG予約のデーター、インターネットを介して収集しているのだと思っていたのですが、どうやら地上波放送やCS/BS放送の電波上からチューナーを介してデーターを取り込んでいます。 Foltiaはデフォルトで1時間おきに50分から数分かけてこのePEG情報を取り込みに行くため、頻繁にチューナーがON/OFFを繰り返します。 その際チューナのファンが4秒おきにオンオフを繰り返したりするのを観測したりすることあると思います。

例えばps axuでサーチしてゆくと通常の録画の際はrecpt1はこのように表示されます。

18285 ?        DNl    0:01 /home/foltia/perl/tool/recpt1 --b25 --sid hd 26 344 /home/foltia/php/tv/6802-18-20240129-0845-26.m2t

これは--b25つまりB-CASカードでスクランブル解除、 hdは地上波 26は物理チャネルの 344は 344秒記録するというコール そしてその後は書き出されるファイルです。パスは/home/foltia/php/tv/というディレクトリ名に 最初の6802はしょぼいカレンダーの番組シリアル番号その後の18は18話目 次は日付(2024/01/29)その次はスタート時間(08:45)その次は物理チャネル26のファイルという意味になります。 

この50分台には

19340 ?        D      0:00 /home/foltia/perl/tool/recpt1 22 3 /home/foltia/php/tv/__22.m2t

こういうプロセスが表示されます。 これを見ると --b25がないのでスクランブル解除は無しなのでB-CASへのアクセスは無いと思われがちですが、カードリーダーのLEDランプのアクセス状況がブリンキングしているのでカードへのアクセスはあるようです。 こうやって取り出された情報からePEG番組表を表示していると言う事ですね。 

また/var/log/messagesを閲覧して見ると。(cat /var/log/messages |grep pcscdってな具合で)ちょうどこの50分台にpcscd関連のエラーが多発して、その後映像が記録出来ない状況が続いているのが解ります。  つまりこのePEGへのアクセスによるチューナーへのコマンドの集中あるいはB-CASカードへのアクセスの集中がpcscd関連のエラーを引き起こし録画が出来なくなるという状況を作り出していると考えられます。

この観察からもう一ついえることは、チューナは必ず1個開けておく必要があるということで、いかに地上は4ch BS/CS 4ch記録できるキャプチャーボードでも同時録画はそれぞれ3chが限度と思われます。 それは録画時間の最後と次の録画の最初がオーバラップ(前後に30秒ほど余裕を持って録画されている様子)であることも関連してると思います。

対応策

この50分問題を解決する方法は、自分が録画したい番組が集中している時間にePEGサーチしないようにすることで対応すると良いかもしれません。 

皆さんが見たい番組の多くはある一定の時間・例えば深夜とか集中していると思います。 その時間帯を外してePEGサーチしてもらえれば問題ないわけです。 そんなに頻繁に番組表は変更されませんので。 
このサーチですが、foltiaアカウントのcronで設定されてます。 なんて偉そうに申し上げてますが、私もUnix初心者であんまり自信はないです。 

ちなみに私もこちらで付け焼き刃しました。ありがとうQiita

これによると

crontab -l

で現在のcronの設定が解ります。 今回の場合user foltiaでのファイル実行ですので、sshでuser foltiaでログインし。上記のコマンドをポチッとやると

[foltia@foltia ~]$ crontab -l
50 * * * * /home/foltia/perl/schedulecheck.pl >/dev/null 2>&1
32 5 * * * /home/foltia/perl/cron_foltia_dayly.sh >/dev/null 2>&1
32 4 * * 1 /home/foltia/perl/syobocalxml.pl 28 >/dev/null 2>&1
32 3 21 * * /home/foltia/perl/syobocalxml.pl 42 >/dev/null 2>&1
34 */17 * * * /home/foltia/perl/maintenancedb.pl LIGHT >/dev/null 2>&1

この1行目が毎時50分 (左辺の数字は左から 分、時、日、月、曜日(0-7で、0と7は日曜日) この時間にスクリプトを実行するという定義になります。 ) にschedulecheck.plが実行されています。 これを

crontab -e

として後はviやvimと同じようにcronファイルを編集してやるわけですが、 1行目を

50 3,4,5,6,7,8,9,10,11,12,13,16,17,18,19,20,21 * * * /home/foltia/perl/schedulecheck.pl >/dev/null 2>&1

といった風に明示すると、私の場合一番記録が集中する22時から2時までと、 14-15時までの間ePEGの読み込みを停止させる事が出来ます。 

このコマンドカンマで区切って数字を列挙してますね。 カテゴリーはそれぞれスペースで離してやってます。 皆さんも自分の録画したい番組の時間帯をこれで除外してやれば、魔の50分問題はほぼ解決すると思います。