recfsusb2nとmirakurun連携メモ

買ってみたのはいいけど、OpenELECのセットアップにドハマりした後、放置していたbananapi-M2をUSBチューナーサーバーに仕立て上げるため、recfsusb2nとmirakurunをセットアップした。
recfsusb2nは、ソースからビルドしてインストール。
mirakurunは、mirakurunのGitページにあるマニュアルを見ながら、npmでシコシコインストールすれば良いだけなので、特にハマることはなし。
その後の連携にはまりました。原因はmirakurunが把握しているrecfsusb2nのプロセスが、実際はforkして別PIDのプロセスで動くような挙動らしく、録画終了時にrecfsusb2nがkillされても、recfsusb2nの子プロセスがUSBデバイスをロックしたまま残ってしまうという問題にぶち当たる。
結局、2chのスレで発見した方法を参考に以下のようなScriptを間にかますようにして無事解決。


#!/bin/bash

PID=$$
trap ‘[ “`ps -h -o pid –ppid $PID`” ] && kill `ps -h -o pid –ppid $PID`’ 0 1 2 3 9 15

/usr/local/bin/recfsusb2n –b25 $@ &

wait

話は、変わるけどbananapi-M2はちょっと高負荷になるとすぐリブートする非常に困ったちゃんです。OrangePiあたりに買い換えようかなぁ。