はじめに
今般、新しく購入したRaspberry Pi 5で録画サーバを構築したので、そのセットアップの過程をここにメモする。
ハードウェアを準備する
録画サーバの構築に必要な主なハードウェアは以下の通り。
- サーバ: Raspberry Pi 5
- 地上デジタル放送チューナー: PLEX PX-S1UD V2.0
- ICカードリーダ/ライタ: SCR3310 v2.0
ソフトウェアをセットアップする
必要なハードウェアが準備できたら次にソフトウェアをセットアップする。
microSDカードにRaspberry Pi OSをインストールする
Raspberry Pi Imagerを使用してmicroSDカードにRaspberry Pi OSを書き込む。PCにmicroSDカードを挿入後、Raspberry Pi Imagerを起動すると以下の画面が表示される。
Raspberry PiデバイスにRASPBERRY PI 5、OSにRASPBERRY PI OS(64bit)を選択し、次へを押下する。
「Would you like to apply OS customization settings?」「OSを自分好みに設定しますか?」で「設定を編集する」を選択する。
「一般」タブで以下を設定する。
- ユーザ名とパスワード
- ロケール(タイムゾーンとキーボードレイアウト)
OSをインストールした後はコンソールから操作するため、「サービス」タブで「SSHを有効化する」と「パスワード認証を使う」をそれぞれ有効化し、「保存」を押下する。
再び下記の画面で「はい」を選択する。
上記の終了画面が表示される際、Windowsからドライブをフォーマットするかどうかを尋ねるポップアップが表示されるので、誤ってはいを選択してmicroSDカードを初期化しないよう注意する。
OSのインストール後、Raspberry PiにmicroSDカード、HDMI端子、有線LAN、キーボード、マウスをセットして最後に電源を投入する。
Raspberry Piはサーバとして使用するため、グラフィカルな画面は必ずしも必要としない。このため、以後の作業はssh経由とする。以前とは異なり、現在のWindows10は標準でsshクライアントがインストールされているため、コマンドプロンプト画面から以下の書式でPCからRaspberry Piにssh経由で接続できる。
$ ssh ユーザ名@IPアドレス
OSをアップデートする
以下のコマンドでOSを最新の状態へアップデートする。updateでパッケージのリストを更新し、upgradeでそのリストに基づき更新可能なパッケージを更新する。
$ sudo apt update $ sudo apt upgrade
終了後、Raspberry Piを再起動する。
$ sudo reboot
チューナのドライバをインストールする
今回使用する地上デジタル放送のチューナは、Ver3.15以降のLinux Kerneでサポートされているため、別途、新しくドライバを追加する必要はない。ただ、チューナを正常動作させるためには、メーカが提供するファームウェアを所定のディレクトリに配置しなければならないようなので、以下のコマンドを実行する。
$ wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip $ unzip PX-S1UD_driver_Ver.1.0.1.zip $ sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/
ファームウェアをインストール後、チューナをRaspberry Piに接続し、/dev/dvbフォルダにadapter0が見えることを確認する。
ICカードリーダ/ライタのドライバをインストールする
$ sudo apt install pcscd libpcsclite-dev libccid pcsc-tools
ドライバをインストール後、B-CASカードが挿入されたICカードリーダ/ライタをRaspberry Piに接続し、以下のコマンドでスキャンする。
$ pcsc_scan
スキャンすると「Japanese Chijou Digital B-CAS Card (pay TV)」が表示されることを確認する。確認後、「Ctrl + C」でスキャンを終了する。
デコーダライブラリをインストールする
チューナで受信したTS(トランスポートストリーム)を復号化するライブラリlibarib25を以下のコマンドでインストールする。
$ sudo apt install cmake $ git clone https://github.com/stz2012/libarib25 $ cd libarib25 $ cmake . $ make $ sudo make install
録画プログラムをインストールする
録画プログラムrecdvbを以下のコマンドでインストールする。
$ sudo apt install autoconf $ git clone https://github.com/kaikoma-soft/recdvb $ cd recdvb $ ./autogen.sh $ ./configure --enable-b25 $ make $ sudo make install
インストール後、チューナ、ICカードリーダ/ライタ、及びそれらに関連するソフトウェアが正常に動作することを確認するため、試しに以下のコマンドで録画してみる。
$ recdvb --b25 --strip 物理チャンネル番号 30 example.m2ts
物理チャンネル番号はリモコンの番号と異なることに注意。以下のサイトから居住している地域のチャンネル番号を調べる。
https://www.maspro.co.jp/contact/channel.pdf
Windows10ではMPEG2のコーデックがデフォルトでインストールされていないため、録画したファイルを再生できないことがある。この場合、Microsoft Storeから「MPEG-2 ビデオ拡張機能」をインストールすることでWindows10の標準アプリでm2tsファイルを再生できるようになる。
チューナサーバをインストールする
後述する予約録画システムをインストールするために必要となるチューナサーバMirakurunをインストールする。このプログラムはnode.jsで実行されるため、以下のコマンドでnode.jsの実行環境をインストールする。
$ sudo apt install npm
以下のコマンドでインストールされたnode.jsのバージョンを確認する。
$ node -v
当環境の場合、バージョンはv18.19.0であった。次にMirakurunが依存するプロセスマネージャをインストールする。
$ sudo npm install -g pm2
そしてMirakurunをインストールする。
$ sudo npm install mirakurun -g --unsafe-perm --omit=dev
インストール後、ブラウザから「<Raspberry PiのIPアドレス>:40772」にアクセスし、Mirakurunのトップページが表示されることを確認する。次にチューナを設定する。以下のコマンドで設定ファイルを編集する。
$ sudo vi /usr/local/etc/mirakurun/tuners.yml
設定ファイルに記載する内容は以下の通り。
- name: PX-S1UD types: - GR command: recdvb --b25 --strip --dev 0 <channel> - - isDisabled: false
設定ファイルを変更後、Mirakurunを再起動する。
$ sudo mirakurun restart
再起動したら10分程度経過した後に以下のコマンドで地上波のチャンネルを設定する。
$ curl -X PUT "http://localhost:40772/api/config/channels/scan"
チャンネルのスキャンに成功したらMirakurunを再起動する。
$ sudo mirakurun restart
ブラウザから「<Raspberry PiのIPアドレス>:40772」にアクセスするとチャンネルの一覧が表示されることを確認する。そしてVLCプレーヤーで下記のアドレスを指定するとTVが視聴できることを確認する。
http://<Raspberry PiのIPアドレス>:40772/api/channels/GR/<チャンネル>/services/<サービスID>/stream
なお、<チャンネル>と<サービスID>はMirakurunのトップページに表示されるチャンネル一覧から各チャンネルにマウスポイントを重ねると表示される(SIDがサービスID、Channelがチャンネル)。
予約録画システムをインストールする
ブラウザに表示される番組表から録画を予約するシステムEPGStationをインストールする。 始めにプロジェクトをダウンロードする。
$ git clone https://github.com/l3tnun/EPGStation.git
以下のコマンドでEPGStationをインストールする。
$ 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
Raspberry Piを起動すると自動的にEPGStationも起動するようにする。
$ sudo pm2 startup ubuntu $ sudo pm2 start dist/index.js --name "epgstation" $ sudo pm2 save
ブラウザから「<Raspberry PiのIPアドレス>:8888」にアクセスするとEPGStationiのページが表示されることを確認する。