はじめに

今般、Raspberry Pi 5で録画サーバを構築したので、そのセットアップの過程をここにメモする。なお、Raspberry Pi 4の場合も同様の手順でセットアップ可能である。

 

なお、Raspberry Pi 5上でセットアップしたMirco SDカードをそのままRapsberry Pi 4に差し込んでもそのまま問題なく動作する。逆にRaspberry Pi 4上でセットアップしたMicroSDカードをそのままRaspberry Pi 5に差し込んでも問題なく動作する。

ハードウェアを準備する

録画サーバの構築に必要なハードウェアは以下の通り。

  • Windows PC(マイクロSDカードにRaspberry Pi OSを書き出したり遠隔でRaspberry Piを操作したりするために使用)
  • サーバ: Raspberry Pi 4 or 5 (メモリ8GB)
    • 公式Piケース
    • 電源アダプタ(27W USB-C Power Supply US)※国内だとPSEマークの問題で入手困難なため、越境ECサイトから個人輸入
    • MicroSDカード(32GB + 録画番組の保存領域)
      • MicroSDカードリーダ/ライタ
    • キーボード(USB Type-A又はBluetoothで接続できるもの)
    • マウス(USB Type-A又はBluetoothで接続できるもの)
    • LANケーブル
    • HDMIケーブル(少なくとも片方の口はマイクロHDMIコネクタ)
  • 地上デジタル放送チューナー: PLEX PX-S1UD V2.0
    • アンテナケーブル
  • ICカードリーダ/ライタ: SCR3310 v2.0
    • B-CASカード

ソフトウェアをセットアップする

必要なハードウェアが準備できたら次にソフトウェアをセットアップする。

microSDカードにRaspberry Pi OSをインストールする

このページからダウンロードできるRaspberry Pi Imagerを使用してmicroSDカードにRaspberry Pi OSを書き込む。PCにmicroSDカードを挿入後、Raspberry Pi Imagerを起動すると以下の画面が表示される。

 

 

Raspberry PiデバイスにRaspberry Pi 4の場合はRASPBERRY PI 4、Raspberry Pi 5の場合はRASPBERRY PI 5、OSにRASPBERRY PI OS(64bit)を選択し、次へを押下する。

 

 

 

「Would you like to apply OS customization settings?」(OSをカスタム設定しますか?)で「設定を編集する」を選択する。

 

 

「一般」タブで以下を設定する。

  • ユーザ名とパスワード
  • ロケール(タイムゾーンとキーボードレイアウト)

 

OSをインストールした後はコンソールから操作するため、「サービス」タブで「SSHを有効化する」と「パスワード認証を使う」をそれぞれ有効化し、「保存」を押下する。

 

 

再び下記の画面で「はい」を選択する。

 

 
PCに装着されているMicro SDカードの既存のデータを削除してもよいか確認する下記の画面で「はい」を選択する。
 
 
インストールが完了すると以下の画面が表示されるので続けるボタンを選択する。
 
 
OSのインストール後、Raspberry PiにmicroSDカード、HDMI端子、有線LAN、キーボード、マウスをセットして最後に電源を投入する。

 

Raspberry Piはサーバとして使用するため、グラフィカルな画面は必ずしも必要としない。このため、以後はWindows PCからsshによりRaspberry Piを操作する。Windows PCのプロンプト画面で以下のコマンドによりRaspberry Piに接続できる。

$ ssh ユーザ名@IPアドレス

Raspberry Piのネットワークインタフェースに割り当てられているIPアドレスを確認するためには、画面右上にある「↑↓」アイコンにマウスポインタを重ねる(ここでは、192.168.0.6が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カードリーダ/ライタのドライバをインストールする

B-CASカードを読み取るICカードリーダ/ライタのドライバを下記のコマンドでインストールする。
$ sudo apt install libccid libpcsclite-dev pcscd pcsc-tools

ドライバをインストール後、B-CASカードが挿入されたICカードリーダ/ライタをRaspberry Piに接続し、以下のコマンドでスキャンする。なおB-CASカードは金属製のICチップが見える面を上向きにしてカードリーダ/ライタに挿すことに注意する。

$ 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

 

Raspberry Pi上にあるファイル(ここではexample.m2tsファイル)をWindows PC上へ移すためには、ここではscpコマンドを使用する。例えばpiユーザのホームディレクトリにあるファイル(example.m2ts)をWindows PCのカレントディレクトリ上にコピーするためのscpコマンドの書式は次の通り。

$ scp pi@192.168.0.6:/home/pi/example.m2ts .

録画したファイルを視聴するためには、オープンソースのメディアプレーヤであるVLCプレーヤを使用する。ここからインストーラをダウンロードし、インストールする。

チューナサーバをインストールする

後述する予約録画システムをインストールするために必要となるチューナサーバ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

再起動後、以下のコマンドで地上波のチャンネルを設定する。なお、このチャンネルスキャンはあらかじめ電子番組表のデータが取得済みでなければ失敗してしまう模様のため、電子番組表のデータを取得し終えるまでしばらく(数十分ぐらい?)待機した後に以下のコマンドを実行する。電子番組表を取得中の場合、MirakurunのStatusページのTuners欄に「Mirakurun:getEPG()」と表示される。

 

またアドレスの末尾に「refresh=true」を付与する。このオプションがない場合、既存の設定ファイルに登録されているチャンネルが更新されず、住む地域によって同じチャンネルが二重に設定ファイルに登録されるためである(例えば、東京のNHKと自分の住む地域のNHKの2つが設定ファイル(/usr/local/etc/mirakurun/channels.yml)に登録されてしまう)。

$ curl -X PUT "http://localhost:40772/api/config/channels/scan?refresh=true"

チャンネルのスキャンに成功したら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
$ sudo pm2 start dist/index.js --name "epgstation"
$ sudo pm2 save

ブラウザから「<Raspberry PiのIPアドレス>:8888」にアクセスするとEPGStationiのページが表示されることを確認する。番組表が表示されるまで約20分程度要することに注意する。

 
そしてRaspberry Piを再起動後しても自動でMirakurunとEPGStationが起動されることを以下のコマンドで確認する。
$ sudo pm2 status