初版:2020/8/20
更新:2026/2/23
メンテ&トラブルシューティング
∟ 定時診断スクリプト
前編
1.ラズパイとサーバーの概要
2.録画に必要なものを集める、購入する
3.OSのインストールとセットアップ
4.NASの構築
後編(docker-dvb版)
後編(docker-px4_drv版)
5.チューナードライバの導入
6.docker-mirakurun-epgstationの導入
● 後編(非docker版)
5.チューナーの導入、テスト録画
6.運用のためのツール、mirakurun、epgstation
運用実践編
7.録画管理方法
8.エンコードと再生
9.システムバックアップ
番外.まとめ版
番外.Mirakurunのチャンネル手動設定
番外.ラズパイ用ケース作成
とりあえず、mirakurunとepgstation使った動作テストを完了し、いろいろ修正した。dvbは今編集途中です... 26/2/26
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の書き込みがある。本当かは不明
■ 正直、長所の方が多いと思う。短所はほとんど違法性の部分。
非dockerのdvb版ってどうなった?
とりあえず、できる限りで以前書いてたのを修正しました。plala鯖のリンク切れも、フォーク版に差し替え。
チューナーのドライバを導入する
入れなくてもデバイスは認識自体はする(少なくともlsusbは)が、入れないと録画はできない。物理casだろうがSoftCasだろうがチューナードライバは当然必要。
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*が出る。
dvbの場合
# ダウンロード
wget 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/
カードリーダー使用(物理CAS)の場合
B-CASカードを読めるようにする。
なお、SoftCASとは一部のみ共通してるが基本根本から違うと思った方がよい。
sudo apt install -y build-essential git pcscd libpcsclite-dev libccid pcsc-tools
essentialが必要かどうかはわからないが、これを入れればカードを読み込める。読み込めているかの確認は、
sudo pcsc_scan
これを実行して、"Japanese Chijou Digital B-CAS Card (pay TV)" といった感じのを含んで出てくればOKとのこと。読み込み続けるため、Ctrl+Cで停止する必要がある。当然といえば当然だが、docker版の時と違い、停止する必要はないです。
地上波復号化を行えるようにする
B-CASで復号化する必要がある。で、そのライブラリを導入する。
コンパイルのためのパッケージ導入
sudo apt install -y cmake g++
ダウンロード
git clone https://github.com/stz2012/libarib25.git
# (*アーカイブ場所→https://github.com/stz2012/libarib25/archive/master.zip)
# 移動
cd libarib25
# ビルド、インストール
cmake .
make
sudo make install
cd ~
録画コマンドのインストール
録画のためのコマンドとしては、
recdvb :dvb系デバイス使用時
recpt1 :plex系で主に使っていた
recisdb:recpt1の改良版。今後はこっちか?
px4_drvの場合
*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
*ただし、最新版を入れるため、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
*ただし、最新版を入れるため、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
ここで受信できれば、正直録画テストいらない気もする。
dvbの場合
*古くに使っていた、plala鯖のファイルのフォーク?
# パッケージ導入
sudo apt install -y autoconf automake
# ダウンロード
git clone https://github.com/kaikoma-soft/recdvb
cd recdvb
./autogen.sh
./configure --enable-b25
# ビルド
make
sudo make install
# これ、必要なんだろうか?
make maintaner-clean
SoftCASの場合
参考にしたページ。というかほぼそのままか。一応、微妙につまづいた部分は修正した。
↑を見ていただければ、というのがもっともなのですが、ただ...どのサイトもそうですがずっと存続しているとも限らないので...あくまで元は↑であることを踏まえてみてください。
なお、この解説はあくまで技術的な勉強としてのものです。信じるか信じないかは各自の判断とします。
ざっくりな流れは、チューナーコマンドrecisdbを、softcasを読むようにビルドする必要があり、そのsoftcas自体はlibyakisobaで、それのラッパーがlibsobacasというような構成で、ビルドするためのツールも必要、といったところか。
以下、現状はrecisdb使用の場合。
# フォルダ名はdtvとしておく。
sudo mkdir dtv
cd dtv
sudo apt install -y autoconf automake cmake libtool libpcsclite-dev
sudo git clone https://github.com/tsunoda14/libyakisoba.git
cd libyakisoba
sudo autoreconf -i
sudo mkdir build
cd build
sudo ../configure --sysconfdir /usr/local/etc
sudo make
sudo make install
# 普通に、必要ファイルをDL(git cloneコマンド)し、
# makeしているだけといったとこか
# dtvフォルダに戻る
cd ../../
sudo git clone https://github.com/tsunoda14/libsobacas.git
cd libsobacas
sudo autoreconf -i
sudo mkdir build
cd build
sudo ../configure
sudo make
sudo make install
# libyakisobaインストールとやってることは同様
ls /usr/local/lib
# 以下の10ファイルを確認。
# ほかのファイルが一緒に入っていても気にしない。
# libsobacas.a
# libsobacas.so.0
# libyakisoba.la
# libyakisoba.so.0.0.1
# libsobacas.la
# libsobacas.so.0.0.0
# libyakisoba.so
# libsobacas.so
# libyakisoba.a
# libyakisoba.so.0
# /usr/local/etc/内にbcas_keysを作成。
# nano以外の好きなエディタでもOK。即時適用。
sudo nano /usr/local/etc/bcas_keys
# デフォの書式を修正&追加でいいのだが、
#WOWOW
Key[02][0a] = 00 00 00 00 00 00 00 00
Key[02][0b] = 00 00 00 00 00 00 00 00
#Star Channel HD
Key[03][07] = 00 00 00 00 00 00 00 00
Key[03][08] = 00 00 00 00 00 00 00 00
#SkyPerfecTV
Key[17][09] = 00 00 00 00 00 00 00 00
Key[17][0a] = 00 00 00 00 00 00 00 00
# [00][01]はキーの世代(?)に該当ですね。
# CASと同様、1項目で2つキーを書けるということでしょうか?
# よく★で表されるstar channelは現在のBS10プレミアム。
# もともとスターチャンネルだったから。
# 通常のインストールにひと手間(コマンド)加わります。
# デフォルトでは物理カードリーダを読み込むlibaribb25を参照しますが、
# これをlibsobacasに振り向けるようにします。
# つまり、recisdbはデフォルトのインストール方法ではダメということ。
# dtvフォルダに戻る
cd ../../
sudo git clone --recursive https://github.com/kazuki0824/recisdb-rs.git
sudo apt install -y build-essential libclang-dev cmake libdvbv5-dev libpcsclite-dev libudev-dev pkg-config
# Rustupのインストール、質問の答えは" 1 "でOK
sudo curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 環境変数の設定
. "$HOME/.cargo/env"
# バージョン確認
cargo --version
# recisdb-rs/b25-sys/build.rs (dtvフォルダ以下)
# の101行目くらいの"libpcsclite"を"libsobacas"に編集(2か所)。
# if pc.probe("libsobacas").is_err(){
# panic("libsobacas not fount.")
sudo nano recisdb-rs/b25-sys/build.rs
# libsobacas.pcを作成。
sudo mkdir /usr/local/lib/pkgconfig
sudo nano /usr/local/lib/pkgconfig/libsobacas.pc
# 以下を記載して保存します。
#~~~~~~~~~~~
prefix=/usr/local
libdir=/usr/local/lib
includedir=/usr/include
Name: libsobacas
Description: PCSC compatible ECM deocder library
Version: 0.0.0
Libs: -L${libdir} -lsobacas
Cflags: -I${includedir}/PCSC
#~~~~~~~~~~~
# ビルド。の前に一時的に権限緩和が必要か。
cd recisdb-rs
sudo chmod -R 777 ./
cargo build -F dvb --release
sudo chmod 755 ./
# 生成されたrecisdbを、実行可能にするためコピー
sudo cp -a target/release/recisdb /usr/local/bin
# あとは、受信できるかをrecisdbコマンドで確認。-b25は不要。
もしくはisdb-scanner(↑上の方に記載)をインストールして実行も手。
あとは、
https://github.com/CobaltCas/CobaltCas/tree/master/dist
という謎のツールもあるようです。なお32bit-Linuxの方は残念ながらパッケージがありません。Windows版の方は、tvtestのdllを置き換えるだけのように見えます。
録画テスト
ここまで来てやっと録画が可能に。チャンネルはisdb-scannerで調べられるが、そのほか、物理チャンネルについて(地域によって違う。)例えばマスプロ電工 https://www.maspro.co.jp/contact/bro/bro_ch.html などで調べるとよい。
recisdbとかそのうち書く。
recdvb --b25 --strip --dev 0 16 7 /home/pi/recdvb0_nhk.m2ts
: 'デバイス0で、物理チャンネル16(津軽ではNHK総合)で、7秒間、/home/pi/recdvb0_nhk.m2tsに保存する'
注意点。使用する文字(ファイル名などに使用)には、NGのものもある(システム的に使われるための誤作動?)。使っても問題ないものを覚えた方がいいでしょう。
・漢字はOK。もちろんひらカタも。
・_(アンダーバー)はOK。
・.(ピリオド)は普通に文中に使うのは問題ないっぽい。
・-(ハイフン)も問題ないみたいだ
それ以外の記号は、大丈夫な可能性もあるが、試してみないとわからないので、最初から使わない方がいいでしょう。テスト録画ではまず引っかからないでしょうが、後述するcron等利用の際に問題になりうる。
{なお、コマンドをインストール後しばらくは特に、cannot open frontend device というエラーが出ることがある。]
small{sudo adduser pi(ユーザー名) video でユーザー権限を追加する解決策もネットに上がっているが、すでに権限があり何も変わらなかった。ではどうするか?}
{→→→何もせずに1~2日放置したら動くようになっていた。なぜなのかはよくわからないが。。。}
{チューナーが番組情報へのアクセスをしていて使用中だったのが一通り終わったからとか?(てきとう)}
この段階でも録画マシンとして利用できなくはないが、その都度コマンドを打たなければで使い勝手は悪い。次は運用を便利にするソフトを導入していく。
6.運用のためのツール、Mirakurun、EPGStation
より使いやすくするためにツールの導入。Mirakurunはチューナーサーバー。複数のチューナーの割り振りなど。他の同等ツールとしてmirakcがある(そのうちmirakcも試したい)。EPGStationは、他のマシンからアクセスして番組表を見てそこから予約を入れることを可能にする。他の同等ツールは、EDCBやGanboなどでしょうか?EPGStationは変更の反映が遅い、バージョン更新少ないなど不満もあるので、EDCBあたりが入れやすくなったら乗り換え検討したい。
Node.js
mirakurunやrivarunなどなどをインストールする際に必要なのでNode.jsをインストール。依存関係があるので注意(EPGStationがMirakurunの特定以上バージョンを要求し、MirakurunがNode.jsの特定範囲のバージョンを要求する)
# ver18(mirakurun3.9.0が要求)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
# mirakurun3.9とepgstation2.10なら原則最新版は不要。
# 最新LTS(長期安定版)をインストールする場合。
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
# n package を導入。複数バージョン入れられるのか。
sudo npm install n -g
# n package を使ってver18のnode をインストール
sudo n 18
# 最新安定版を入れたい場合は
sudo n stable
sudo apt-get install nodejs npm
sudo npm install -g npm
これで入るバージョンが古かったような気がする?最新のMirakurun(3.9)はnode.js12以上が必要だったような。なので、npmからnパッケージをインストールする(よくわからんが)
sudo npm install -g n
で、nを使い安定板のNode.jsをインストールする
sudo n lts
で、apt由来の古いnodejsとnpmをアンインストール、と。
sudo apt purge nodejs npm
suto apt autoremove
...なんでこんな面倒なことをせにゃならんのかw最初から比較的新しいの入れるのどうやるの?
Rivarun
録画に必須ではないが、これがあると複数チューナーある状態でもデバイス番号を指定せずにコマンドで録画できるようになる。普通の録画サーバーでは不要な気がするが、使い方次第では便利な可能性も?
sudo npm install rivarun -g
PM2
プロセスをデーモン化などして起動を管理するソフト。再起動時に自動的に起動してくれるなどできる。
sudo npm install pm2 -g
Mirakurun
ここでやっとMirakurunをインストールする。
sudo npm install -g pm2
sudo npm install -g --unsafe-perm --foreground-scripts --production mirakurun@3.9.0-rc.4
# 成功すればstatusがonlineとなる。
# バージョン確認
curl http://127.0.0.1:40772/api/version
# まずは一旦停止
sudo mirakurun stop
# isdb-scannerをすでにかけているなら、ファイルコピー
sudo cp -a scanned/Mirakurun/channels.yml /usr/local/etc/mirakurun/channels.yml
sudo cp -a scanned/Mirakurun/tuners.yml /usr/local/etc/mirakurun/tuners.yml
sudo chown -R root /usr/local/etc/mirakurun/
# 手動で設定する場合。
# もちろん、UIから行ってもよい。
# チューナー
sudo nano /usr/local/etc/mirakurun/tuners.yml
# チャンネル
sudo nano /usr/local/etc/mirakurun/channels.yml
# UIからでいいと思うし必要性乏しいが、サーバー
sudo nano /usr/local/etc/mirakurun/server.yml
# バックアップ済み設定をコピーで設定
sudo cp /mnt/external/setting/channels.yml /usr/local/etc/mirakurun/
# 最後に、再び起動
sudo mirakurun start
# mirakurun起動
sudo mirakurun start
# mirakurun再起動
sudo mirakurun restart
# mirakurun停止
sudo mirakurun stop
sudo pm2 status
現在のプロセスを覚えて、OS起動時に、自動的に起動するには、まずは
pm2 startup
sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
pm2 save
: 'あるいは'
sudo pm2 save
: 'なおpm2 listで出てくるリストはsudo ありなしで違うので注意'
チューナーとチャンネル設定例
*isdb-scannerからでいいのでは。
- name: PX-S1UD-0
types:
- GR
command: recdvb --b25 --dev 0 <channel> - -
isDisabled: false
- name: PX-S1UD-1
types:
- GR
command: recdvb --b25 --dev 1 <channel> - -
isDisabled: false
- name: PX-S1UD-2
types:
- GR
command: recdvb --b25 --dev 2 <channel> - -
isDisabled: false
- name: PX-S1UD-3
types:
- GR
command: recdvb --b25 --dev 3 <channel> - -
isDisabled: false
Mirakurunの管理ページで設定する場合、[config][tuners]から、
name:ご自由に。PX-S1UD-0とか。
Types:地上波ならGR
commant:recdvb --b25 --dev 0 - -
でOK。
DVB Device Path:空欄で問題ない。
Decoder:同上
あくまでisdb-scannerを入れていない場合。
curl -X PUT "http://localhost:40772/api/config/channels/scan"
: '40772はmirakurunのデフォルトのポート'
ただ、正直スキャンしている間に、地上波は自力で調べて書く、BSCSはすでに調べてあるのをコピペする、をして統合した方が早い気もするが...
(参考)津軽地方の地上波チャンネル設定(recpt1)
- name: NHKE
type: GR
channel: '13'
- name: NHKG
type: GR
channel: '16'
- name: RAB
type: GR
channel: '28'
- name: ATV
type: GR
channel: '30'
- name: ABA
type: GR
channel: '32'
FFmpeg
エンコードコマンドのFFmpegを入れて設定しておくと、録画したファイルを後で自動的にmp4にしてくれる。調べればいろいろ設定方法あるでしょう。サーバーのパワーがあれば使うのも選択肢だが、ラズパイで行うのはちょっと...
EPGStation
番組表からそのまま録画できる。
# 基本、githubのサイトの通りでOKです。
# ファイルコピー
git clone https://github.com/l3tnun/EPGStation.git
# 移動およびインストール
cd EPGStation
npm run all-install
npm run build
# 設定ファイルとしてサンプルをコピー
cp config/config.yml.template config/config.yml
cp config/operatorLogConfig.sample.yml config/operatorLogConfig.yml
cp config/epgUpdaterLogConfig.sample.yml config/epgUpdaterLogConfig.yml
cp config/serviceLogConfig.sample.yml config/serviceLogConfig.yml
cp config/enc.js.template config/enc.js
今ほどコピーしたconfig.yml を書き換えることで設定.
sudo nano EPGStation/config/config.yml
# 録画したファイル保存先設定。フルパスで。
# ↓は/mnt/external/rokugaの場合。
recorded:
- name: recorded
path: /mnt/external/rokuga
# EPGStation 直下にある recorded のフルパス
# その他はオプション的なところか。
# 保存ファイル名の時刻表記、番組の並び順などの変更
# mirakurunがデフォなので、mirakcとかの場合は編集必要?
# EPGStationフォルダに移動してから、
# 初回のみ
sudo npm install pm2 -g
sudo pm2 startup ubuntu
pm2 start dist/index.js --name "epgstation"
pm2 save
# 自動起動中に停止させる
pm2 stop epgstation
# 自動起動中に再度再開
pm2 stop epgstation
□□□□□□□□□□□ 以下はテスト的なやつ。docker版でも一部共通 □□□□□□□□□□□
信号の強さの計測例
recdvbが1.3.3以上(あるいはパッチ済み)を前提とします。
~USB接続で地デジ4チャンネル録画できるチューナーPX-Q1UDを略~さんによると。
CNRが20以上?、ERRBLKが0、SIGの値がある程度小さい(-45くらい?まで下がっている)と大丈夫っぽい?。
timeout 7 recdvbchksig --dev 0 13
timeout 7 recdvbchksig --dev 1 13
timeout 7 recdvbchksig --dev 2 13
timeout 7 recdvbchksig --dev 3 13
timeout 7 recdvbchksig --dev 0 13;timeout 7 recdvbchksig --dev 1 13;timeout 7 recdvbchksig --dev 2 13;timeout 7 recdvbchksig --dev 3 13
timeout 7 recdvbchksig --dev 0 16
timeout 7 recdvbchksig --dev 1 16
timeout 7 recdvbchksig --dev 2 16
timeout 7 recdvbchksig --dev 3 16
timeout 7 recdvbchksig --dev 0 16;timeout 7 recdvbchksig --dev 1 16;timeout 7 recdvbchksig --dev 2 16;timeout 7 recdvbchksig --dev 3 16
timeout 7 recdvbchksig --dev 0 28
timeout 7 recdvbchksig --dev 1 28
timeout 7 recdvbchksig --dev 2 28
timeout 7 recdvbchksig --dev 3 28
timeout 7 recdvbchksig --dev 0 28;timeout 7 recdvbchksig --dev 1 28;timeout 7 recdvbchksig --dev 2 28;timeout 7 recdvbchksig --dev 3 28
timeout 7 recdvbchksig --dev 0 30
timeout 7 recdvbchksig --dev 1 30
timeout 7 recdvbchksig --dev 2 30
timeout 7 recdvbchksig --dev 3 30
timeout 7 recdvbchksig --dev 0 30;timeout 7 recdvbchksig --dev 1 30;timeout 7 recdvbchksig --dev 2 30;timeout 7 recdvbchksig --dev 3 30
timeout 7 recdvbchksig --dev 0 32
timeout 7 recdvbchksig --dev 1 32
timeout 7 recdvbchksig --dev 2 32
timeout 7 recdvbchksig --dev 3 32
timeout 7 recdvbchksig --dev 0 32;timeout 7 recdvbchksig --dev 1 32;timeout 7 recdvbchksig --dev 2 32;timeout 7 recdvbchksig --dev 3 32