Raspberry Pi 3で地デジを見る
はじめに
- どこでもテレビを見れる環境が欲しかった
- 主に寝かしつけした後に動かずにそのままテレビ見たいなーという要望に応えることにしました
やったこと
- 家にあったタッチパネルに入っていたラズパイで構築 → めっちゃ苦戦したので、NG
- 苦戦した内容については後述します
- 新しくSDカードにOSをインストールして1から構築 → OK
必要なもの
- ラズパイ
- 家にあったのは3ですが、変換処理しないのであれば、ほかのでも大丈夫そうです。
- 地デジチューナー
- 本当は複数のやつほしっかったのですが、売ってなかった
- B-CAS読み込みするもの
インストール
- 以下のリンクからOSを書き込み。便利ですね
- 書き込みしたMicroSDカードをラズパイに入れて起動
起動すると以下のような設定が出てくる。キーボードで全部できるのはありがたい
バージョンの確認(前は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をインストールします
- チューナ的なやつらしい
- インストールは公式にしたがって。
- ラズパイのバージョンが古いと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
- Eventタブを見るとチャンネルの情報が反映されているのがわかります。
- ログも追いやすくてとても良いですね。
いったん動作確認
この時点でVLCなどを利用して見れるようになっているはずなので、確認をしてみます
VLCを起動して、「メディア」 - 「ネットワークストリームを開く」を選択
- URLに「http://mirakurunのIP:port/api/channels/GR/27/stream」を入れる
- 27の部分はチャンネルなので、mirakurunのWebからConfig - Channelsを選択してみて適当なチャンネルを選択してみてください
- ここでチャンネルが見れれば今までの設定はOK
EPGStationのインストール
- 毎回URLを指定するのは面倒なので、簡単に表示できるようなWebのものをインストールします
- セットアップマニュアルを参考に進めます
- 依存するものは全部入っていたので飛ばす(前の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で動作確認しているので、それ用の設定を追加しておく
- 起動の設定
sudo pm2 start dist/server/index.js --name "epgstation" sudo pm2 save
- 起動確認
- http://IPアドレス:8888 にアクセスして、画面が表示されることを確認する
感想
- 知らないツールをいろいろ調べながらインストールするのは久しぶりだったのでめっちゃはまった
- それはまた別の記事にしようかと
- ブログに記事書くの大変。再現性あるようにいい感じに調整しないとダメなんだもんね。。