2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ラズパイ4を使った地上波録画サーバーを作る 後編(docker-px4_drv版)

2
Last updated at Posted at 2022-05-28

初版:2022/5/28
更新:2026/2/28

メンテ&トラブルシューティング
 ∟ 定時診断スクリプト
前編
 1.ラズパイとサーバーの概要
 2.録画に必要なものを集める、購入する
 3.OSのインストールとセットアップ
 4.NASの構築
後編(docker-dvb版)
後編(docker-dvb版)
● 後編(docker-px4_drv版) now!
後編(非docker-px4_drv版)
 5.チューナードライバの導入
 6.Mirakurun,EPGStation等の導入
運用実践編
 7.録画管理方法 8.エンコードと再生
 9.システムバックアップ
番外.まとめ版
番外.Mirakurunのチャンネル手動設定
番外.ラズパイ用ケース作成 番外.古いコード置き場

非公式ドライバpx4_drv(tsukumijima
tsukumijimaフォーク版)を使った場合です。(参考:今後使わない元版)
対応機種↓ 
・PX-W3U4、PX-Q3U4
・PX-W3PE4、PX-Q3PE4
・PX-MLT5PE、PX-MLT8PE
など。詳しくは配布元を参照。
PX-S1UDやQ1UDなどは対応してません。なおURとかはpx4_drvで行けるようです。
多くのPlexチューナーはなぜか公式ドライバでは安定せず(ドロップが多発する?)、非公式ドライバpx4_drvでは安定するとのこと。注意点としては、
・dvb系のコマンドで録画はできない?
・なのでrecpt1またはrecisdbコマンドを追加し、使う
・内蔵カードリーダーは使えない

5.チューナードライバの導入

ここからチューナー関連の設定を行っていく。
・チューナーのドライバ(px4_drvやdvbなど)を導入
・カードリーダーでB-Casカードを読めるようにして復号化を行えるようにする、またはsoftcasでリーダー無しで行けるようにする
・必要ならば、dockerを導入する
・チューナーコマンド(mirakurun,mirakc,edcbなど)をインストール&録画テストする
・録画を管理するツール(epgstation,edcbなど)を入れ、他のマシンのブラウザから管理できるようにする
といった流れになります。

dockerかdockerではない通常版(非dockerとしておく)か

dockerは簡単に言えばソフトウェアの仮想化(どちらかといえばサンドボックスに近い概念か?)。これにより、ライブラリ依存などの問題を回避できるという長所がある。性能面で言えばわずかに不利ではあるが、環境に依存しないということで、一部のソフトウェア開発等では必須のものになっているらしい。
さて、TS抜き界隈では、dockerは重宝するのだろうか?→正直、一長一短でしかないと思う。
・SoftCas使用時:非dockerの方が断然楽と思われる
・S1UDやQ1UD+Mirakurun+EPGStation:かなりの設定が自動化されるので、dockerのメリットが大きい
・px4_drv使用時:MirakurunとEPGStationを一度に入れるならメリットはまぁまぁある。
 その他の場合だと逆にdocker入れる価値が下がりそう。まぁ好みのレベルか
てなわけで、環境によって分けるのが賢いでしょう。

SoftCASってどうなの?

あくまでここでは違法性は抜きにした、利便性の観点です。
〇 リーダーが不要のため省スペース、USBポートが一つ空く。省電力性はまだ不明。
〇 動作が早い。キーの更新が楽。
(× かつての実装方法だと無線LANだと特に面倒)
△ 安定性が悪いという5chの書き込みがある。本当かは不明
■ 正直、長所の方が多いと思う。短所はほとんど違法性の部分。

チューナーのファーム、ドライバを導入する

tsukumijima/px4_drv

ファームウェアとドライバのインストール.
*ただし、最新版を入れるため、githubのページに飛んだ方がいいと思います。
wget https://github.com/tsukumijima/px4_drv/releases/download/v0.5.5/px4-drv-dkms_0.5.5_all.deb
sudo apt install -y ./px4-drv-dkms_0.5.5_all.deb

# 読み込まれていないこともあるので、一応打っておく
sudo modprobe px4_drv

# 読み込まれているかの確認方法.
lsmod | grep -e ^px4_drv
↓px4_drvが出ればOK。数字は環境依存。
px4_drv                81920  0

デバイス自体の認識も場合によってはチェック。
ls /dev/px*
MLT5PEの場合はpxmlt5video*が出る。

*もしここで読み込んでいない、かつここに至るまでに大きなエラーが見当たらない場合はチューナーの認識の方に問題があることもあるので、ラズパイとチューナー双方の電源を一度切って再度起動して、ls /devを再び試してみてください。

*dkmsでカーネルドライバを自動的に設定することもできるが、この解説では行わない

カードリーダー関係

物理のB-CASを使う場合。
カードリーダードライバのインストール.
# カードリーダードライバのインストール
sudo apt install -y libpcsclite-dev pcscd pcsc-tools libccid
# 動作チェック
sudo pcsc_scan
# そのままだと永遠に続くのでCtrl+cで抜ける
# dockerで入れる場合はリーダーは事前に停止しておく必要がある。
sudo systemctl stop pcscd.socket

# 1行で行く場合
sudo apt install -y libpcsclite-dev pcscd pcsc-tools libccid;timeout 10 sudo pcsc_scan;sudo systemctl stop pcscd.socket
参考までに。リーダーストップ、無効化.
sudo systemctl stop pcscd.socket
sudo systemctl disable pcscd.socket

再び動かす場合は
sudo systemctl start pcscd.socket
sudo systemctl enable pcscd.socket
SoftCASを使う場合。

今後書くかも書かないかも。dockerの場合、コンテナ外に録画コマンドを置いた場合にどうなるか私がよく理解してないため、非dockerと同様にできるかもしれないし、かなり面倒かもしれない。

チューナーコマンドの導入

両方入れてもいいが、片方だけでOK.わからなければrecisdbで。

recpt1

チューナーコマンドrecpt1.
*docker-mirakurun-epgstationの場合、mirakurunでスクランブル解除が入るようで、事前にb25をビルドしておく必要はないようです。他の場合は不明。
sudo apt install -y autoconf automake
git clone https://github.com/stz2012/recpt1.git
cd recpt1/recpt1/
./autogen.sh
./configure --enable-b25
make
sudo make install

recisdb

チューナーコマンドrecisdb (arm64版).
*ただし、最新版を入れるため、githubのページに飛んだ方がいいと思います。
*recisdbはそれ自体がb25を自動的に含む?ようなので、b25は不要です。
(SoftCASとの両立はビルドをすれば可能、だがdockerで稼働させるのは面倒そう)
wget https://github.com/kazuki0824/recisdb-rs/releases/download/1.2.3/recisdb_1.2.3-1_arm64.deb
sudo apt install ./recisdb_1.2.3-1_arm64.deb
rm ./recisdb_1.2.3-1_arm64.deb

ISDBScanner

チャンネルスキャンツールISDBScanner (arm64版).
*ただし、最新版を入れるため、githubのページに飛んだ方がいいと思います。
*先にrecisdbを入れておかないと動かない。
録画に必須ではないが、チャンネル設定に便利なのと、チューナーの動作を確認としても使えるか。
sudo wget https://github.com/tsukumijima/ISDBScanner/releases/download/v1.3.3/isdb-scanner-arm -O /usr/local/bin/isdb-scanner
sudo chmod +x /usr/local/bin/isdb-scanner

バックアップ済みチャンネル設定を使う時を除き、ここでスキャンをしておくことを勧める
isdb-scanner
ここで受信できれば、正直録画テストいらない気もする。
録画テスト.
# b25入れ忘れたとしても、録画自体出来ます(画面真っ暗で、字幕等は見れる)。
recpt1 --device /dev/px4video0 --b25 --strip 13 10 test.m2ts
# BSCSアンテナへの給電が必要な場合↓。
recpt1 --device /dev/px4video0 --lnb 15 --b25 --strip 13 10 test.m2ts
# MLT5の場合
recpt1 --device /dev/pxmlt5video0 --b25 --strip 13 10 test.m2ts

recisdb使用の場合...後で書く

ついでに:電波強度のテストについて

電波強度テスト.
recpt1は、それ用のコマンドが付属していたような。
recisdbは、電波強度テスト機能も含んでいる。
とりあえずpxmlt5の3番目で物理ch16を7秒間チェック
timeout 7 recisdb checksignal --device /dev/pxmlt5video2 --channel T16
どちらも、そのうち書く。

あと、参考までに。

CNRが20以上?、ERRBLKが0、SIGの値がある程度小さい(-45くらい?まで下がっている)と大丈夫っぽい?。

6.docker-mirakurun-epgstation等の導入

・まずはdocker(composeも同時に入る)を入れる
・mirakurun-epgstation-docker導入
  または
・mirakc導入

ここら辺にそれぞれのコマンドを書いていく。

dockerの設定.
dockerパッケージインストール
本当にこれでいいのか?インストール方法は複数あるようで...
curl -sSL https://get.docker.com | sh

バージョンの確認
docker -v
docker compose -v

権限の追加。この後、再起動が必要とかどっかで見たな。
sudo usermod -a -G docker $USER

そんなわけで、ここで再起動をしておく。

docker-mirakurun-epgstationを使う場合

名前の通り、mirakurunとepgstationを入れるイメージを導入。

git cloneでファイルをコピーする。.
いきなりインストールしないのは、編集するファイルがあるため
git clone https://github.com/l3tnun/docker-mirakurun-epgstation -b v2 docker-mirakurun-epgstation

cd docker-mirakurun-epgstation
cp docker-compose-sample.yml docker-compose.yml

px4_drvの場合はここらへんでいろいろ編集する必要あり

その他必要なファイルをコピー.
cd docker-mirakurun-epgstation
*現在docker-mirakurun-epgstationディレクトリ
mkdir mirakurun/run
mkdir mirakurun/opt
mkdir mirakurun/opt/bin
*recpt1の場合。このようにバイナリをコピーしてdocker内から叩けるようにすれば、コンテナに含むようにビルドする必要はない...ということだと思う。
cp -p /usr/local/bin/checksignal mirakurun/opt/bin/
cp -p /usr/local/bin/recpt1* mirakurun/opt/bin/
*recisdbの場合
cp -p /usr/bin/recisdb mirakurun/opt/bin/

サンプルからコピーし作成
cp epgstation/config/config.yml.template epgstation/config/config.yml
cp epgstation/config/operatorLogConfig.sample.yml epgstation/config/operatorLogConfig.yml
cp epgstation/config/epgUpdaterLogConfig.sample.yml epgstation/config/epgUpdaterLogConfig.yml
cp epgstation/config/serviceLogConfig.sample.yml epgstation/config/serviceLogConfig.yml
cp epgstation/config/enc.js.template epgstation/config/enc.js
nano docker-compose.yml
# もしくは右クリック等でテキストエディタで編集してもよい
# 最近はv4.0.0betaでEPGStationとかみ合わない不具合は解消していると思うので必要はないが、3.9.0-rc.4固定する場合はここで設定。
# なお、docker利用でrecisdbを利用する場合はglibcの関係でmirakurun3.9はNG,4.0以上必須なので注意。

# deviesで、dvbの削除(使わない場合)、使用するデバイスの登録
# MLT5の場合、↓を加える
            - /dev/pxmlt5video0:/dev/pxmlt5video0
            - /dev/pxmlt5video1:/dev/pxmlt5video1
            - /dev/pxmlt5video2:/dev/pxmlt5video2
            - /dev/pxmlt5video3:/dev/pxmlt5video3
            - /dev/pxmlt5video4:/dev/pxmlt5video4
# dvbは、該当のチューナーをつないでいない場合は削除(またはコメント化)
            - /dev/dvb:/dev/dvb

        volumes:
            - ./mirakurun/conf:/app-config
            - ./mirakurun/data:/app-data
# とあるので、
            - ./mirakurun/run:/var/run/
            - ./mirakurun/opt:/opt/
# を加える。録画コマンドを実行可能にするためか。

# 【参考:しなくても普通に動いた】↓を修正する、mariadb:10.5はラズパイだと上手く動作しない、との記載のサイト様あり
    mysql:
        image: jsurf/rpi-mariadb
バックアップしたchannels.yml server.yml tuners.ymlを使う.
# channels.yml等を控えている場合はここで上書き可能に。
# デフォだとアクセス権的に上書きできないので修正を(777が必要だったかもどうだっけ)
sudo chmod 666 docker-mirakurun-epgstation/mirakurun/conf/*.yml
# パミッションを変更するとwin上からsamba経由で上書きコピー可能になる。mirakurun起動中でも可能ですが、その時はmirakurunのUI上などからmirakurunの再起動を行いましょう。
録画したファイルの保存場所.
# システムとデータが同じパーティションに置いている場合はわざわざ変更する理由は薄いです。
nano docker-mirakurun-epgstation/docker-compose.yml
# なお、GUIでテキストエディタで開いて編集してもよい。
# 編集する場所は、epgstation>volumes>recordedの部分について、
- <録画ファイルを置く相対パスorフルパス>:/app/recorded にする。
# docker-mirakurun-epgstationを停止→起動で変更適用されるはずです。
例: - /mnt/external/rokuga:/app/recorded
 → /mnt/external/rokugaに保存
# 非docker版とは異なるので注意すること。
# なお、理由はわからないが、_から始まるフォルダ名を指定すると録画できない現象が発生したので注意。
保存ファイル名、他各種設定.
nano docker-mirakurun-epgstation/epgstation/config/config.yml
# なお、GUIでテキストエディタで開いて編集してもよい。
# 書き換える場所は、recordedformat:の部分。まぁこれは見てわかるでしょう。

Mirakurunのチューナー設定

チューナー設定、チャンネル設定
dvbと異なり自動では設定してくれない。
方法は3つ。
・ISDBScannerで出力されたものを使う。
・構築が2回目以降なので、バックアップ済みのをそのまま使う
・自分でファイルを編集する。
mirakurunのuiから、もしくはtuners.yml、channels.ymlを編集する。
sudo nano docker-mirakurun-epgstation/mirakurun/conf/tuners.yml
sudo nano docker-mirakurun-epgstation/mirakurun/conf/channels.yml

一応、チャンネルをスキャンするコマンドもある。
ISDBScannerで十分でしょうけど。
curl -X PUT "http://localhost:40772/api/config/channels/scan"
: '40772はmirakurunのデフォルトのポート'

なお、物理チャンネルとは名前の通り内部で認識している周波数域?のこと。
テレビのリモコンの番号とは異なるので注意。
<例>リモコン、放送局、物理チャンネル
1 RAB  28
2 NHKE 13
3 NHKG 16
5 ABA  32
6 ATV  30

設定例:channels.yml (recpt1の場合。津軽地方)
*recisdbは少しだけ書き方が違うので注意
- name: NHKEテレ
  type: GR
  channel: '13'
- name: NHK総合
  type: GR
  channel: '16'
- name: RAB青森放送
  type: GR
  channel: '28'
- name: ATV青森テレビ
  type: GR
  channel: '30'
- name: ABA青森朝日放送
  type: GR
  channel: '32'

PX-MLT5PEの場合

tuners.ymlの一例.
- name: adapter0
  types:
    - GR
  dvbDevicePath: 
  decoder: arib-b25-stream-test
  command: >-
    recpt1 --device /dev/pxmlt5video0 <channel> - -
- name: adapter1
  types:
    - GR
  dvbDevicePath: 
  decoder: arib-b25-stream-test
  command: >-
    recpt1 --device /dev/pxmlt5video1 <channel> - -
- name: adapter2
  types:
    - GR
  dvbDevicePath: 
  decoder: arib-b25-stream-test
  command: >-
    recpt1 --device /dev/pxmlt5video2 <channel> - -
- name: adapter3
  types:
    - GR
  dvbDevicePath: 
  decoder: arib-b25-stream-test
  command: >-
    recpt1 --device /dev/pxmlt5video3 <channel> - -
- name: adapter4
  types:
    - GR
  dvbDevicePath: 
  decoder: arib-b25-stream-test
  command: >-
    recpt1 --device /dev/pxmlt5video4 <channel> - -

この段階で起動自体はできる。
ディレクトリ移動してから起動。
**初回は時間がかかるので注意。**
cd docker-mirakurun-epgstation
更新するコマンド(v2)
sudo docker compose pull
起動コマンド(v2)
sudo docker compose up -d

OS起動時のスタートアップ設定は特に行う必要はない。

余談。dockerの起動と停止
各dockerインストールフォルダへ移動して、
停止
sudo docker-compose down
起動
sudo docker-compose up -d
再起動
sudo docker-compose restart
全てかどうかはわからないが、docker関連はrestartコマンドだと反映されないものもある。その場合、停止コマンドしてから起動コマンドを打てば反映される。
cd docker-mirakurun-epgstation; sudo docker-compose down; docker-compose up -d; cd ~

mirakc(docker版)を使う場合

そのうち書く。
導入を試行中の感想としては、設定ページが無く、設定を2つのファイルに詰め込まなければならない、微妙にmirakurunと違うところが慣れないうちは面倒かも。動作は軽いというし、慣れればいろいろ良さそうに見える。
基本的には、mirakc作者のサイトを見ればいいのだが。
注意点としては、mirakcにはrecpt1が含まれているので、録画コマンド(チューナーコマンド)にrecpt1を使う場合は割とそのまま。recisdb等を使う場合は説明に従う。

dockerについてのコマンド

主にコンテナの扱いについて.
現在動いているコンテナ
docker ps
全コンテナ(動いている+動いていない)
docker ps -a
コンテナの削除
docker rm [コンテナID]
コンテナ全削除
docker rm `docker ps -a -q`

録画時のトラブル

運用を行っていくと、なぜか録画が行われないといったトラブルに見舞われることがある。そんな時どこをチェックするか。
メンテ&トラブルシューティング
・mirakurunの状況を確認(http://192.168.1.**:40772/ )。

次の章はこちら→運用実践編
後編(docker-dvb版)
後編(非docker版)

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?