Raspberry Pi 3で地デジを見る

はじめに

  • どこでもテレビを見れる環境が欲しかった
  • 主に寝かしつけした後に動かずにそのままテレビ見たいなーという要望に応えることにしました

やったこと

  • 家にあったタッチパネルに入っていたラズパイで構築 → めっちゃ苦戦したので、NG
    • 苦戦した内容については後述します
  • 新しくSDカードにOSをインストールして1から構築 → OK

必要なもの

  • ラズパイ
    • 家にあったのは3ですが、変換処理しないのであれば、ほかのでも大丈夫そうです。
  • 地デジチューナー
    • 本当は複数のやつほしっかったのですが、売ってなかった

www.amazon.co.jp

  • B-CAS読み込みするもの

www.amazon.co.jp

  • B-CAS
    • 家で不要になったテレビから借りたものの、Mini B-CASだったので、アダプタを購入

www.amazon.co.jp

インストール

  • 以下のリンクからOSを書き込み。便利ですね

www.raspberrypi.org

  • 書き込みしたMicroSDカードをラズパイに入れて起動
  • 起動すると以下のような設定が出てくる。キーボードで全部できるのはありがたい

    • 言語・タイムゾーンの設定
    • パスワードの設定(デフォルトから変更してねってことらしい)
    • Wifiの設定
    • 画面の設定
      • ラズパイはデフォルトで起動すると、画面の端っこのほうは何も表示されない場合があります
      • ↑のは以前にだいぶ苦戦した記憶が。。再起動しないと有効にならないものの、簡単になったものだ。
    • SoftwareUpdate
      • 時間がかかるのでのんびり待ちます。
  • バージョンの確認(前は8ではまったので)

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

ドライブ周り

チューナの設定

  • ドライバをインストールします
curl -O 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/
  • チューナを接続してドライバが認識しているか確認します
tail -f /var/log/messages
Aug 13 10:54:06 raspberrypi kernel: [  425.858809] smsusb:smsusb_probe: Device initialized with return code 0
Aug 13 10:54:06 raspberrypi kernel: [  425.899897] dvbdev: DVB: registering new adapter (Siano Rio Digital Receiver)
Aug 13 10:54:06 raspberrypi kernel: [  425.900359] dvbdev: dvb_create_media_entity: media entity 'dvb-demux' registered.
Aug 13 10:54:06 raspberrypi kernel: [  425.901140] usb 1-1.3: DVB: registering adapter 0 frontend 0 (Siano Mobile Digital MDTV Receiver)...
Aug 13 10:54:06 raspberrypi kernel: [  425.901161] dvbdev: dvb_create_media_entity: media entity 'Siano Mobile Digital MDTV Receiver' registered.
Aug 13 10:54:06 raspberrypi kernel: [  425.901561] smsdvb:smsdvb_hotplug: DVB interface registered.
Aug 13 10:54:06 raspberrypi kernel: [  425.903403] usbcore: registered new interface driver smsusb
  • 大丈夫そうなので先に進めます

B-CASの設定

  • 認識に必要なツールを入れます
sudo apt install pcscd pcsc-tools libpcsclite-dev cmake build-essential
  • B-CASの読み込みに必要っぽいツールを入れます
git clone https://github.com/stz2012/libarib25
cd libarib25/
cmake .
make
sudo make install
  • makeのコマンドは久しぶりだ。。

  • B-CASの認識確認

$ sudo pcsc_scan
Using reader plug'n play mechanism
Scanning present readers...
0: SCM Microsystems Inc. SCR 3310 [CCID Interface] (53312015230277) 00 00
 
Thu Aug 13 11:11:58 2020
 Reader 0: SCM Microsystems Inc. SCR 3310 [CCID Interface] (53312015230277) 00 00
  Event number: 0
  Card state: Card inserted, 
  ATR: 3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99

ATR: 3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99
+ TS = 3B --> Direct Convention
+ T0 = F0, Y(1): 1111, K: 0 (historical bytes)
  TA(1) = 12 --> Fi=372, Di=2, 186 cycles/ETU
    21505 bits/s at 4 MHz, fMax for Fi = 5 MHz => 26881 bits/s
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = FF --> Extra guard time: 255 (special value)
  TD(1) = 91 --> Y(i+1) = 1001, Protocol T = 1 
-----
  TA(2) = 81 --> Protocol to be used in spec mode: T=1 - Unable to change - defined by interface bytes
  TD(2) = B1 --> Y(i+1) = 1011, Protocol T = 1 
-----
  TA(3) = 7C --> IFSC: 124
  TB(3) = 45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5
  TD(3) = 1F --> Y(i+1) = 0001, Protocol T = 15 - Global interface bytes following 
-----
  TA(4) = 03 --> Clock stop: not supported - Class accepted by the card: (3G) A 5V B 3V 
+ Historical bytes: 
+ TCK = 99 (correct checksum)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B F0 12 00 FF 91 81 B1 7C 45 1F 03 99
        Japanese Chijou Digital B-CAS Card (pay TV)
  • Japanese Chijou Digital B-CAS Card (pay TV) と出ていればOKらしい

Mirakurunのインストール

  • Mirakurunをインストールします
    • チューナ的なやつらしい

github.com

  • インストールは公式にしたがって。
    • ラズパイのバージョンが古いとnodeがうまく入らなくてメッチャ苦戦します。
    • 古い場合はおとなしく新しいバージョンにupgradeするのが賢明です
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install mirakurun -g --production
sudo mirakurun init # to install as service
sudo mirakurun restart # when updated
  • initしたときにエラーっぽいのが出ますが、気にしない。

mirakurunの設定

  • dvbv5のインストール
sudo apt install dvb-tools
  • チャンネル設定の追加
cd /usr/local
sudo mkdir conf
cd conf
sudo curl -O https://raw.githubusercontent.com/Chinachu/dvbconf-for-isdb/master/conf/dvbv5_channels_isdbt.conf
sudo npm install arib-b25-stream-test -g --unsafe

mirakurunの動作確認

  • mirakurunはWebから設定などが確認できるようになったので、確認します
  • http://IP :40772

f:id:nyaonyaoto:20200813112920p:plain
mirakurun

  • Eventタブを見るとチャンネルの情報が反映されているのがわかります。
  • ログも追いやすくてとても良いですね。

いったん動作確認

  • この時点でVLCなどを利用して見れるようになっているはずなので、確認をしてみます

  • VLCを起動して、「メディア」 - 「ネットワークストリームを開く」を選択

  • URLに「http://mirakurunのIP:port/api/channels/GR/27/stream」を入れる
  • 27の部分はチャンネルなので、mirakurunのWebからConfig - Channelsを選択してみて適当なチャンネルを選択してみてください
  • ここでチャンネルが見れれば今までの設定はOK

f:id:nyaonyaoto:20200813113454p:plain

EPGStationのインストール

  • 毎回URLを指定するのは面倒なので、簡単に表示できるようなWebのものをインストールします
  • セットアップマニュアルを参考に進めます

github.com

  • 依存するものは全部入っていたので飛ばす(前のOSだと入っていなかったのに)
git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
npm install
  • 謎のエラーが出る
npm ERR! cb() never called!

npm ERR! This is an error with npm itself. Please report this error at:
npm ERR!     <https://npm.community>

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/pi/.npm/_logs/2020-08-13T03_05_43_923Z-debug.log
  • エラーの解消方法として紹介されていた手順を試す
npm cache verify
ulimit -n 20000
  • でもエラーが出る。。。
  • 何度か試していたらエラーがなくなった。
    • タイムアウトっぽい挙動なので、その時間を延ばしてあげるのが良かったのかと。
npm run build
cp config/config.sample.json config/config.json
cp config/operatorLogConfig.sample.json config/operatorLogConfig.json
cp config/serviceLogConfig.sample.json config/serviceLogConfig.json
  • windowで動作確認しているので、それ用の設定を追加しておく

github.com

  • 起動の設定
sudo pm2 start dist/server/index.js --name "epgstation"
sudo pm2 save
  • 起動確認
    • http://IPアドレス:8888 にアクセスして、画面が表示されることを確認する

感想

  • 知らないツールをいろいろ調べながらインストールするのは久しぶりだったのでめっちゃはまった
    • それはまた別の記事にしようかと
  • ブログに記事書くの大変。再現性あるようにいい感じに調整しないとダメなんだもんね。。

参考サイト

denor.jp

ywnb.net

www.messiahworks.com