現在は下記の記事を参照のこと。

 

はじめに

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

ハードウェアを準備する

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

  • Windows PC(OSをマイクロSDカードに書き出したり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カードの既存のデータを削除してもよいか確認する下記の画面で「はい」を選択する。
 
 
インストールが完了すると以下の画面が表示されるので続けるボタンを選択する。
 
 

上記の終了画面が表示される際、Windowsからドライブをフォーマットするかどうかを尋ねるポップアップが表示されるので、誤ってはいを選択してmicroSDカードを初期化しないよう注意する。

 

OSのインストール後、Raspberry PiにmicroSDカード、HDMI端子、有線LAN、キーボード、マウスをセットして最後に電源を投入する。

 

Raspberry Piはサーバとして使用するため、グラフィカルな画面は必ずしも必要としない。このため、以後はWindows PCからRaspberry Piに対するssh経由とする。以前とは異なり、現在のWindows10は標準でsshクライアントがインストールされているため、コマンドプロンプト画面から以下の書式でPCからRaspberry Piにssh経由で接続できる。

$ 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 pcscd libpcsclite-dev libccid 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

TSを複合化するライブラリのインストールに関し、不正競争防止法および著作権法に定められている著作物の技術的保護手段の回避に抵触する可能性について私見を述べたいと思います。

 

国民共有の財産である電波により不特定多数の個人に対して映像・音響を無料で届ける放送を視聴・記録することは、個人で楽しむ限りにおいて、著作者の経済的利益を侵害し得ません。仮に無料放送に係る複合化ライブラリの頒布・実行までもが既存の法律で技術的保護手段の回避に該当するのであれば、それは他者の権利を不当に侵害しない限りにおいて自由を追求することを認める憲法十三条に違反しているのではないでしょうか?

 

無料で誰しもが視聴可能な放送はその国の文化、歴史、伝統を体現します。新聞記事のスクラップのように、個人としてこれらを記録しコレクションできることは、人が文化的に生きる上で自然なことではないでしょうか?

 

録画プログラムをインストールする

録画プログラム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

再起動したら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のページが表示されることを確認する。番組表が表示されるまで約20分程度要することに注意する。