Ubuntu+Chinachu+Mirakurun 環境を3コマンドで構築する

gadget

今回は Ubuntu での TV 録画サーバーのお話です。

3年くらい前から Chinachu+Mirakurun で環境を組んでいるのですが、システムのアップデートやメンテナンスのたびに設定方法を忘れてしまうので、ゴールデンウィーク中にメモまとめ&スクリプト化しましたので公開します。

この記事は、以下のような方向けです。

  • Ubuntu のインストールはできるけど、TV 録画サーバー設定方法は難しくてよくわからないので、とにかくセットアップだけしたい人
  • TV 録画サーバーの設定(もしくは既に運用)をしていて、設定のためのヒントを部分的に得たい人

ただあくまで自分用メモなので、どんな環境でも絶対に動作するという保証はありません。

(2022/04/05 追記)

先日 Ubuntu20.04 環境でセットアップしていて少し不備があったのでスクリプトを更新しました。

また、Mirakurun の nodejs に対するバージョン制約を気にしなくても済むようにしました(Mirakurun の package.json 見て適切なバージョンの nodejs を入れるようにしてみた)。

動作確認環境

  • Ubuntu 18.04 or 20.04 server (x86_64)
    • 今回は 18.04.5 と 20.04.2 で動作確認
    • デスクトップ版でも問題ないと思いますが、今回は試していません
    • ネットワーク接続されていること(apt install でパッケージがインストールできること)
  • PX-W3PE4(地上波 2ch + BS/CS 2ch チューナー)
    • PX-Q3PE4 などでも同じ手順でセットアップできるはずです(ただし PCIe 接続の PX-W3PE5 はムリかも)。
  • SCR3310(B-CAS カードリーダー)
PLEX 地上デジタル・BS・CS対応TVチューナー PX-W3PE4
同時録画・視聴に対応しているためPX-W3PE4は地上デジタル放送x2ch、BS/CS放送x2chの計4chを同時録画可能。 ※Windows Media Centerには対応しておりません。 フルハイビジョン画質(HD画質)を録るために設計された高感度シリコンチューナを搭載。地上波デジタル放送、BS/CS衛星放送のデ...

おおまかな流れ

作業は以下の手順で進めます。

  1. Ubuntu をクリーンインストール
  2. PC に PX-W3PE4SCR3310 を接続(Ubuntu インストール前でも OK)
  3. Ubuntu にドライバをインストール
  4. Mirakurun+Chinachu 用の Docker コンテナをセットアップ

お急ぎの方向けセットアップガイド(3コマンドセットアップ)

  1. Ubuntu をクリーンインストール
  2. PC に PX-W3PE4SCR3310 を接続(Ubuntu インストール前でも OK)
  3. recorder-setup_20220404.tgz をダウンロード・展開
  4. 以下を実行
$ sudo ./px4-driver-setup.sh
$ sudo reboot # 再起動
$ ./px4-docker-setup.sh ~/recorder # 引数は録画ファイルの保存場所。sudo はつけない。

px4-docker-setup.sh の実行後1~2時間くらい待って、セットアップした PC の IP アドレスにブラウザでアクセスすれば、Chinachu の画面が見えるようになっているはずです。

これだけです。

Ubuntu インストール

これは特筆すべきところはありません。普通にインストールしてください。

PX-W3PE4 と SCR3310 を接続

これも特筆すべきところはありません。普通に接続するだけです。

PX-W3PE4 は PCIe x1 スロットを使いますが、こちらは給電のみで、実際のデータのやり取りは USB 経由で行います。

そのため、マザーボード上に USB 用のピンヘッダがないと使えないのでご注意ください。

その意味では、最初から USB 接続版にしておいた方が良いかもしれません。

あと、PX-W3PE4 上のカードリーダーは Ubuntu では使えませんので、おとなしく SCR3310 などのカードリーダーをきちんと購入しておきましょう。

ドライバなどをインストール

ホスト環境に PX-W3PE4 用ドライバと pcscd をインストールします。

とにかくインストールする

recorder-setup_20220404.tgz をダウンロード・展開します。

中に入っている px4-driver-setup.sh を sudo つきで実行して、終わったら Ubuntu を再起動すれば OK です。

コマンドとしてはこれだけです。

$ sudo bash px4-driver-setup.sh
$ sudo reboot

内容の補足

以下、内容を知りたい方に関して少し補足です。興味ない方は飛ばしていただいて構いません。

pcscd

pcscd はホスト環境(Docker コンテナではなく、の意味)にインストールしています。

pcscd をコンテナ内に入れるとカードリーダーの USB ポートが固定されたり(別の USB ポートに挿しなおせない)、他用途でバッティングしたりであまりイイことないと思うんだけどな・・・と思ってまして、ホスト環境に直にインストールするようにしています。

チューナードライバ

チューナーのドライバは非公式版(というか個人的にはこちらが公式と言っていいほど安定していると思う)を使わせていただいています。

GitHub - nns779/px4_drv: Unofficial Linux driver for PLEX PX4/PX5/PX-MLT series ISDB-T/S receivers (not V4L-DVB)
Unofficial Linux driver for PLEX PX4/PX5/PX-MLT series ISDB-T/S receivers (not V4L-DVB) - nns779/px4_drv

dkms にも対応していて最高です。

ファームウェア(pxw3u4_BDA_ver1x64.zip)は PLEX 公式のものをダウンロードするようにしていますが、いつダウンロードできなくなるかもわからないので(失礼)、別途ダウンロード済みのファイルをカレントディレクトリに置いておけばそちらを使用するようにしています。

参考サイト様

なおこの内容は、有名な「自分に負けないラボラトリー」様を参考にさせていただいております。みなさま手を合わせて感謝しましょう。

Mirakurunのインストール手順(Ubuntu・Debian・CentOS) | 自分に負けないラボラトリー
Chinachu Airのチューナー制御部であるMirakurunのインストール手順と録画方法について説明し
Chinachu γ(ガンマ) インストール手順(Ubuntu・Debian編) | 自分に負けないラボラトリー
Ubuntu・DebianにChinachu γ(ガンマ)をインストールする手順を説明します。 はじめに

Mirakurun+Chinachu 用の Docker コンテナをセットアップ

Mirakurun と Chinachu をコンテナに閉じ込めてセットアップします。

とにかくセットアップする

PLEX のチューナーデバイスを使用されているのであれば、recorder-setup_20220404.tgz をダウンロードして px4-docker-setup.sh を実行するだけで OK です。

$ tar -xvzf recorder-setup.tgz 
$ bash ./px4-docker-setup.sh $HOME/recorder

px4-docker-setup.sh の引数は、録画データや各種コンフィギュレーションファイルの保存用のディレクトリを指定してください。

Docker のセットアップやらなんやら含めて全てまとめてやります。

Mirakurun 用の tuners.yml や channels.yml も自動生成します。

補足1

「とにかくセットアップ」したいだけの方も、こちらの補足1はごらんください。

実行ユーザー

root ではなく、普段使っている一般ユーザーで実行してください。

セットアップ時間

環境にもよりますが、セットアップにはかなり時間がかかります。

お出かけ前、就寝前などに実行するのがオススメです。

まず、初回セットアップ(Docker コンテナ作成)に20~30分程度かかります。

以下のように Successfully built と表示されていれば、コンテナ作成は完了しています。

Successfully built 171b8fbc586c
Successfully tagged recorder:latest
ae0f0397ba7c474a6197d70f1a59e30c929eff094f37b9e00eaed8b74e4103ca
ad27329958fb6d7e3a2659ad649d5aff2aef236726fc66be48d04bb4df7eb5f5

この時点では、ブラウザでアクセスしても何も表示されません。

初回セットアップ時の場合、ここからチャンネルスキャンが実施され、さらに15分ほどかかります。

頃合いを見て、セットアップしたホストの IP アドレスにブラウザでアクセスしてみてください。

Chinachu の画面が表示されると思います。

この時点では番組表などの情報が表示されませんが、正常です。

ここから EPG データのダウンロードなどが行われますので、番組表などが表示されるのにさらに1時間程度かかります。

Ubuntu 20.04 だと少し後の(6~8時間くらい?)からしか番組表データが取れないようです。詳細は未調査・・・

録画ファイル保存場所

px4-docker-setup.sh の引数に指定したディレクトリ(以下 $RECORDER)以下に、recorded ディレクトリが作成され、そこへ保存されます。

他にも chinachu ディレクトリや mirakurun ディレクトリもありますが、それらは気にしなくて OK です。

補足2

Docker あれこれ

Chinachu や Mirakurun コンテナはいくつか既に公開されていますので、そちらを使用された方が良いかもしれません。

が、ホントの意味で All-in-one が欲しかったので、自分で作成するようにしました。


コンテナ名は recorder-YYMMDD です。

スクリプトの先頭で CONTAINER_NAME 変数として定義しているので、適当に変更してもらって構いません。


docker-compose は使っていません。

コンテナ作成の前後でいろいろやりたいっていう場合、 docker-compose だとかゆいところに手が届かないというか・・・使いにくくありません?


px4-docker-setup.sh では、一般ユーザーで Docker を使用できるように設定します。


privileged 設定は使用していません。安易に使うのって良くないですよね(pcscd をホストにインストールしている理由の1つでもあります)。

ただしその代償として、コンテナのポータビリティ性が少し下がっています。

例えば、Ubuntu 18.04 環境上で作成した Docker イメージやコンテナを save や export して Ubuntu 20.04 環境上に持っていっても動作しません(たぶん)。

これはどうも、pcscd と libpcsclite のバージョン互換性の問題のようです。

B−CASリーダをDocker内で読もうとしてlibpcscliteのバージョン違いではまった話
ChinachuをDockerに入れようとしたらカードリーダーがB−CASをうまく認識しなくてつらかった話。

でも、どうせそんなに頻繁に環境変えないでしょ?だったら privileged つけずに運用できた方がイイなと。

Docker Hub だとイメージで配る関係で、どんな環境でも動作させる必要がある→コンテナになんでもかんでも押し込める必要がある→ privileged が必要・・・ということだと思うんですが、自分で作ればそういう心配もありません。

コンフィグファイル保存場所

$RECORDER ディレクトリ以下に、chinachumirakurun ディレクトリが作成され、そこへ保存されます。

ここはコンテナ内の該当箇所を bind mount しているため、コンテナを更新してもそのまま引き継がれます。

具体的には、番組表や録画済み・録画予約一覧などの情報です。

チューナー設定

一応24チューナーまで判別して tuners.yml を作成するようにしています(ただ手元に多チューナー環境がないため動作は未確認)。

また、--lnb 15 オプションは付けていません。我が家はマンションということもありこれで特に問題なく動作していますが、必要に応じて適宜変更して下さい($RECORDER/mirakurun/config/tuners.yml)。

チャンネルスキャン

またまた「自分に負けないラボラトリー」様の神ツールmcconfig.pl を使用させていただいております。

Mirakurunのチャンネル設定更新スクリプトを作ってみた | 自分に負けないラボラトリー
Mirakurunのチャンネル設定を更新するスクリプトを作ってみました。 はじめに Mirakurunのチ

地上波だけでなく、BS/CS のチャンネルスキャンも行い、Mirakurun 用の channels.yml を生成してくれるというまさに神ツールです。

コンテナ起動時に、コンテナ内の /scanned ファイルの存在の有無をチェックし、mcconfig.pl を使用してチャンネルスキャンを実施するようにしています。

チャンネルスキャンを意図的に実施したい場合は、/scanned ファイルを削除してコンテナを再起動してください。

まとめ

というわけで今回は TV 録画サーバーの設定でした。

Ubuntu PC と PLEX のチューナーがあれば、わりと簡単にセットアップできるので、チャレンジしてみてはいかがでしょうか。

ストリーム再生もできるので、簡易版 nasne としても使えますね。

USB 接続版もあります。

上でも書きましたが、どっちにしても USB 接続なので、取り回しや接続しやすさを考えると、自分がこれから買うならたぶんこっちを選ぶと思います。

最後に、このようなステキな環境を提供していただいている開発者のみなさまに感謝申し上げます。ありがとうございます。

Chinachu
Chinachu has 8 repositories available. Follow their code on GitHub.

コメント

タイトルとURLをコピーしました