Raspberry PiでTV録画環境を作る話【EPGStation】

久しぶりに録画マシンを作ろうと思ったのですが、今回はWindowsマシンを使いたいと思っていました。そして、録画用のPCを注文したものの、まったく納品される気配がなく10月からのクールの作品が録画できない状態でした。なんとかして録画するには手持ちのマシンでなんとかするしかないですが、手持ちはRaspberry Piだけだったので、今回はこれで録画マシンを構築します。

このブログではそもそも何年か前に一度Raspberry Piでの導入記事も書いているのですが、それから時間がかなり立ってしまったので、今回は確認の意味も込めて作業を改めてみることにします。

細かい違いだと以前はRaspbian(現Raspberry Pi OS 32bitに相当)を使っていたのですが、今回は最新のRaspberry Pi OS 64bit版で環境を構築していきます。構築する環境や使用機器をまとめると以下のようになります。

  • Raspberry Pi 4 model B
    • Raspberry Pi OS Lite 64bit
  • EPGStation
  • mirakurun
  • PX-MLT5PE
    • 外付け用電源: UD-AC12V2A
    • ライザーカード

初めに必要なツールやら諸々をaptから入れます。環境を作る最初のうちにアップデートも済ませておきます。

sudo apt update
sudo apt upgrade
sudo apt-get install cmake automake autoconf pcscd libpcsclite1 libpcsclite-dev libccid pcsc-tools build-essential curl git-core libssl-dev yasm libtool autoconf git raspberrypi-kernel-headers

次にPX-MLT5PE用のドライバをいれます。安定している非公式ドライバを使います。ですが、このオリジナルレポジトリは最新のカーネルには対応していないため、有志の方がメンテナンスを続けておりその方のフォークを利用します。以前はファームウェアを抜き出したり色々していましたが、たった数行でできるようになっていました。

wget https://github.com/tsukumijima/px4_drv/releases/download/v0.4.5/px4-drv-dkms_0.4.5_all.deb
sudo apt install -y ./px4-drv-dkms_0.4.5_all.deb
sudo modprobe px4_drv

認識されているかを確認します。

$ lsmod | grep -e ^px4_drv
px4_drv               143360  0

libarib25を入れます。なお、必要ならここらへんでSoftCasを入れたい人は入れてください。導入方法は解説しません。

wget https://github.com/stz2012/libarib25/archive/master.zip
unzip master.zip
cd libarib25-master
cmake CMakeLists.txt WITH_PCSC_PACKAGE=libpcsckai
make
sudo make install

SoftCasを使う人はlibpcsckaiをコピーする場所が

/lib/aarch64-linux-gnu/libpcsckai.so

となります。usrのとこに入れてもldが見つけられません。ここは注意。

recpt1をインストールします。

git clone https://github.com/stz2012/recpt1.git
cd recpt1/recpt1
./autogen.sh
./configure --enable-b25
make
sudo make install

録画確認をして問題がなければOK。

次にmirkurunを導入します。nodejsのバージョンは参照する必要がありますが、現段階では18系で対応しています。また、aptも18系なので何も考えずaptで入れます。

sudo apt-get install nodejs npm
sudo npm install pm2 -g
sudo npm install mirakurun -g --unsafe-perm --foreground-scripts --production
sudo nano /usr/local/etc/mirakurun/tuners.yml

各種チューナーの設定をします。MLT5PEなので以下のようにしました。

- name: PX_MLT1
  types:
    - GR
    - BS
    - CS
  command: recpt1 --b25 --device /dev/pxmlt5video0 <channel> - -
  isDisabled: false

- name: PX_MLT2
  types:
    - GR
    - BS
    - CS
  command: recpt1 --b25 --device /dev/pxmlt5video1 <channel> - -
  isDisabled: false

- name: PX_MLT3
  types:
    - GR
    - BS
    - CS
  command: recpt1 --b25 --device /dev/pxmlt5video2 <channel> - -
  isDisabled: false

- name: PX_MLT4
  types:
    - GR
    - BS
    - CS
  command: recpt1 --b25 --device /dev/pxmlt5video3 <channel> - -
  isDisabled: false

- name: PX_MLT5
  types:
    - GR
    - BS
    - CS
  command: recpt1 --b25 --device /dev/pxmlt5video4 <channel> - -
  isDisabled: false

ここまで来たらmirakurunを再起動してチャンネルスキャンをしておきます。

sudo pm2 restart mirakurun-server
curl -X PUT "http://localhost:40772/api/config/channels/scan"

スキャンが終わるまでしばらく放置したらもう一度再起動しておきます。

sudo pm2 restart mirakurun-server 

最後にEPGStaionのインストールです。公式を見ながらインストールします。

git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
npm run all-install
npm run build

各種設定ファイルをコピーして作成します。

cp config/config.yml.template config/config.yml
cp config/operatorLogConfig.sample.yml config/operatorLogConfig.yml
cp config/epgUpdaterLogConfig.sample.yml config/epgUpdaterLogConfig.yml
cp config/serviceLogConfig.sample.yml config/serviceLogConfig.yml
cp config/enc.js.template config/enc.js

config.ymlが録画ディレクトリなど設定するファイルになるので適宜変更してください。詳細な設定は公式のこちらのページにあります。

正規表現を有効にする場合は以下のようにします。これも公式のページで解説があります。更新されればwgetの先なども変わるので、適宜読み替えていただければ大丈夫です。

wget https://www.sqlite.org/2024/sqlite-amalgamation-3460100.zip
wget https://www.sqlite.org/2024/sqlite-src-3460100.zip
unzip sqlite-src-3460100.zip && unzip sqlite-amalgamation-3460100.zip
cp sqlite-src-3460100/ext/misc/regexp.c sqlite-amalgamation-3460100
cd sqlite-amalgamation-3460100
gcc -g -fPIC -shared regexp.c -o regexp.so
sudo cp regexp.so EPGStation/data/

設定ファイルを編集して、最後にコピーしたregexp.soの場所をconfig.ymlに記載して有効にしていきます。

sudo nano EPGStation/config/config.yml
sqlite:
    extensions:
        - '/hoge/regexp.so'
    regexp: true

置いた場所で適宜ディレクトリは変更してください。

あとは起動して問題ないか確認します。事前にEPGStaionのディレクトリまで戻っておいてください。

npm start
sudo pm2 startup
pm2 start dist/index.js --name "epgstation"
pm2 save

ブラウザでIP:8888と入力して画面が表示されて、番組表が正しくみれれば正しく設定できています。起動しない場合は、設定ファイルが間違っていないことが多いです。番組表がいつまでも表示されない場合はmirakurunの設定が正しくできているかを確認するとよいでしょう。いずれもlogを見ることである程度判別できます。

以上です。お読みいただきありがとうございました。

投稿日:
カテゴリー: DTVLinux

2件のコメント

  1. 昔 消えちゃっててこのサイトが見えないけど、ここのやり方でないと上手に行かないから復活お願いしますって変な方法で連絡した人です。
    32bitで Node.js 14.21.1で今元気に動いてはいるんですが、近いうちに参考にさせてもらって、Raspberry Pi OS 64bit版に更新したいと思います。何かあったら質問させてもらうかもしれませんがよろしくお願いします

    1. コメントありがとうございます。
      引越しついでのメンテナンス中に声をかけていただいた方ですね。
      嬉しかったのとタイミングの悪さもあってよく覚えております。
      比較的最近に作った環境なので、全く変わっていて役に立たないことはないと思います。
      何かあれば気軽にコメントください!

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です