もぐてっく

人は1つ歳をとるたび、1ビットづつ大きくなれると信じてた。

2020年夏 Linux地デジ視聴環境を簡単&安価に構築する方法

いつもながら、僕は前書きが長いと思います。

アンパンマンの同じ話を延々繰り返し見るのはもう嫌だ!」

子供たちと不毛なチャンネル争いをせずに、金曜ロードショー新海誠アニメとかを思う存分楽しみたいと思ったのでした。

調べるとLinuxにEPGStationってソフトがある模様。これを使えばPCやタブレットからTVが見られそう。

早速構築手順を調べてみると、PCでの地デジ界隈は15年前位に大きな盛り上がりがあったことが分かりました。 当時は地デジで放送されたデジタルデータをコピープロテクトがかかっていない生データ(ts)で取りだす方法が大人の事情で塞がれており、有志がドライバのセキュリティホールを突いたり?とかグレーっぽい感じでそれを実現していたようです。

その界隈のノウハウもWeb上には結構残っているんですが、「地デジの暗号化アルゴリズムの勉強のために作られたソースをコンパイルする」とか、「特定のバージョンのドライバに出所不明の謎パッチを充てる」とか、とにかく煩雑かつ正解がなんなのかよくわからない世界になっていました。

最近はLinuxのデジタルTV系のデバイスB-CASカードがあれば普通にts保存ができるっぽいですね。海外の地デジはコピープロテクトが無いらしいので、それの普及によって状況が変わったんですかね。

今回は15年前のカオスから徹底的に目を背け、ソースコードコンパイルとか謎パッチ適用とかを一切せずにLinuxでテレビを見る方法をご紹介します。

Webにある情報を集約してる感じですが、2020年6月時点の正解ルートを残しておく感じと言うことで
(※2021年10月に内容更新しました。)

OSはLinux(Ubuntu Server)です。

用意するもの

以下のH/Wが現状一番苦労が無い&最安値だと思います。

PX-S1UD互換のTVチューナー

Amazonを見ると、PLEX純正の他にもまったく見た目が同じ奴が売ってます。 ここではAmazon最安(\3095)かつ箱付きのVAST DTVをチョイスしました。

dmesgを見るとPX-S1UD Digital TV Tunerと認識してるので、PLEXOEM提供してるっぽいですね。

SCR3310互換のICカードリーダー

NTTCom製が有名ですが、こっちも安い互換品(\1889)があるのでそれを使います。

PCで地デジ界隈でよく名前が出てくる日立のHX-520UJはLinuxでは使えないので要注意です。 (良く調べずにメルカリで買ってめでたく爆死)

インストール手順

Ubuntu Server 20.04のインストール

GUI不要かつdeb系が好きなので。 特に注意事項はありません。

以降はsudo -sして、root権限で作業します。

PX-S1UDのファームウェアのインストール

PLEXが配っているドライバからファームウェア(isdbt_rio.inp)を抜き出して/lib/firmwareにコピーするのが定石ですが、 Debianのnonfreeにも使えるファームウェアがあったのでそっちを使います。

packages.debian.org

この方法だと、ドライバを展開するunzipのインストールとファームウェアをコピーする手順が不要になるので、多分これが一番早いと思います。

curl -O http://http.us.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-siano_20190114-2~bpo9+1_all.deb
dpkg -i firmware-siano_20190114-2~bpo9+1_all.deb

docker-composeのインストール

特筆事項無し

apt-get install docker-compose

docker-mirakurun-epgstationのクローン

mirakurunとepgstationから成るコンテナを作ってくれるdocker-compose定義をGithubからさくっといただきます。

※2021年10月23日時点の最新コミットをcheckoutするようにしています。最新版がいい場合はgit checkoutせずに突き進んでください。

(その後のセットアップ手順がうまくいかなくなる可能性があります。)

apt-get install git

git clone https://github.com/l3tnun/docker-mirakurun-epgstation

git checkout  f048b3c76

cd docker-mirakurun-epgstation

cp -p docker-compose-sample.yml docker-compose.yml

mirakurunの設定

「みらくるん」ってなんなんですかね。 今春のプリキュア映画のゲストキャラがそんな名前らしいですけど。

tuners.ymlの設定

お好きなエディタ(まぁ皆さんvimだと思いますけど) mirakurun/conf/tuners.yml

以下の定義をして下さい。

- name: adapter0
  types:
    - GR
  dvbDevicePath: /dev/dvb/adapter0/dvr0
  decoder: arib-b25-stream-test
  command: >-
    dvbv5-zap -a 0 -c ./config/dvbconf-for-isdb/conf/dvbv5_channels_isdbt.conf -r -P <channel>

EPGStationの設定

cd epgstation/config/
cp -p config.yml.template config.yml
cp -p enc.js.template enc.js
cp -p epgUpdaterLogConfig.sample.yml epgUpdaterLogConfig.yml
cp -p operatorLogConfig.sample.yml operatorLogConfig.yml
cp -p serviceLogConfig.sample.yml serviceLogConfig.yml

コンテナ起動

cd ../../
docker-compose up -d

チェンネルスキャン

以下のURLを叩くと受信可能なチャンネルを勝手にmirakurun/config/channel.ymlに登録してくれます。

curl -X PUT "http://localhost:40772/api/config/channels/scan"

スキャンが終わったらmirakurunを再起動します。

http://サーバのIPアドレス:40772にアクセス。

右上のRestartをクリックします。

f:id:moguno:20200628231714p:plain

ステータスがstandbyになった後Eventsを見ると、番組表のダウンロードが始まっていることが分かると思います。

f:id:moguno:20200629005334p:plain

番組表がダウンロートし終わったぽくなったら、EPGStationを開いてみます。

http://サーバのIPアドレス:8888にアクセスして番組表(GR)を選択。

f:id:moguno:20200629002110p:plain

「ライブ」タブまたは番組表のTV局をクリックすると放送中の動画がブラウザで見れます。