サーバ起動用SSDを1TBの製品に交換し、OS新規インストール後にmirakurunのセットアップをしようとしたところ、PLEXチューナーが上手く動かなかった為、対策しました。
本投稿では、recpt1のコンパイルをdocker上に準備したubuntu20.04で行い、それをmirakurun環境にコピーしているところがポイントとなっています。ubuntu22.04以降は本投稿の流れでセットアップできると思いますので、その備忘をご紹介します。
なお、本投稿で対象としているチューナーは以下です。
- PT3
- PX-W3U4
- PX-Q3U4
- PX-W3PE4
- PX-Q3PE4
- PX-W3PE5
- PX-Q3PE5
- PX-MLT5PE
- PX-MLT8PE
※MLTは実機を持っていない為、セットアップの流れは記載しましたが、セットアップ後のコメントを頂けると幸甚です。勿論、他のデバイスについてコメント頂けると幸甚です。
【事前準備】環境の組み合わせについて
①サーバ、②チューナー、③カードリーダが必要です。
①サーバ
サーバ | 費用 | コメント |
Raspberry Pi4 | 7,000~30,000円 | ハードウェアエンコード可能なため、コスパ最強です。 ・・・が、最近品薄なのかやけに高い売値ばかりを目にします。 |
自作サーバ | 3万円前後 | h.264,h.265のハードウェアエンコードが利用できるintel製のGPU内蔵型CPUを利用することで、録画後のエンコードにGPUを利用できるため、消費電力削減にも寄与できるかもしれません。 |
ノートPC | 19,800~ | 余っているノートPCを再利用してもいいと思います。バッテリーが生きていればUPS付きと解釈できそうです。 Amazonでリース落ち等を再セットアップしたと思われる「Amazon整備済み」のノートPCを購入するのが一番安上りかもしれません。HDDはUSBで適当に外付けを用意するか、毎晩HDD内のデータをMP4エンコードしてファイルサーバに移動させるcronを動かすのも良いかと思います。 |
②チューナー
利用可能なチューナーは以下の通りで、分類が2種類に分かれます。mirakurunはdocker上に構築する前提で特徴を記します。
分類 | 特徴 |
① | mirakurunのセットアップ中で面倒を見てもらえる為、セットアップが楽。 |
② | ドライバを導入し、recpt1等をコンパイルし、Dockerから参照可能な場所に配備。 あわせて、Dockerから該当デバイスを見れるようにする必要あり。 |
mirakurunで利用可能なチューナーは下表のとおり。PT3を持っている方はPT3を使うのが楽です。BS/CSが必要なければ分類①に該当するPX-Q1UD、PX-S1UDが最有力候補。
Raspberry pi等の小型PCで利用する場合には、外付けタイプ(内外で内と記載)を選択。既存のサーバ機やデスクトップPCを利用する場合には内蔵タイプ(内外で外と記載)を選択すればいいと思います。
メーカー | 製品 | 分類 | 内外 | 地デジ | BS/CS | 金額 | 評価 | コメント |
アーW3PE4スソフト | PT3 | ① | 内 | 2ch | 2ch | 3万前後 | △ | 一押しだが、既に入手困難 |
PLEX | PX-Q1UD | ① | 外 | 4ch | – | 1万2千円 | ◎ | セットアップが楽 |
PLEX | PX-S1UD | ① | 外 | 1ch | – | 5,000 | ◎ | セットアップが楽 |
PLEX | PX-W3U4 | ② | 外 | 2ch | 2ch | 在庫少ない? | 〇 | 良い意味で枯れてます。recpt1経由で利用 |
PLEX | PX-Q3U4 | ② | 外 | 4ch | 4ch | 22,000 | 〇 | 同上 |
PLEX | PX-W3PE4 | ② | 内 | 2ch | 2ch | 13,800 | 〇 | 同上 |
PLEX | PX-Q3PE4 | ② | 内 | 4ch | 4ch | 21,000 | 〇 | 同上 |
PLEX | PX-W3PE5 | ② | 内 | 2ch | 2ch | 16,000 | 〇 | 同上 |
PLEX | PX-MLT5PE | ② | 内 | 5ch | 地デジ兼用 | 16,000 | 〇 | 地デジ、BS/CS合計5ch。recpt1経由で利用 |
PLEX | PX-MLT8PE | ② | 内 | 8ch | 地デジ兼用 | 27,000 | 〇 | 地デジ、BS/CS合計8ch。recpt1経由で利用 |
③カードリーダー
安定して利用製で既製品であればOKです。「SCR3310」が実績があり苦労しないと思います。
PX-Q3PE4のセットアップ
PLEX製のチューナーカードのうち、以下を利用するためには、「px4_drv – Unofficial Linux driver for PLEX PX4/PX5/PX-MLT series ISDB-T/S receivers」のドライバを利用させていただきます。
利用可能なチューナーは以下との事ですが、e-Better製は試していない為、当記事では話題に挙げません。
- PX-W3U4・・・当記事の対象
- PX-Q3U4・・・当記事の対象
- PX-W3PE4・・・当記事の対象
- PX-Q3PE4・・・当記事の対象
- PX-W3PE5・・・当記事の対象
- PX-Q3PE5・・・当記事の対象
- PX-MLT5PE・・・当記事の対象
- PX-MLT8PE・・・当記事の対象
- DTV02-1T1S-U (実験的)
- DTV02A-1T1S-U
- DTV02A-4TS-P
ドライバセットアップ方法
# パッケージの最新化
sudo apt update ;sudo apt upgrade
# dkms、autoconfを事前インストール
sudo apt install dkms autoconf unzip
# px4_drvを利用させてもらいます。
cd /tmp
git clone https://github.com/nns779/px4_drv
cd px4_drv/fwtool
make
wget http://plex-net.co.jp/plex/pxw3u4/pxw3u4_BDA_ver1x64.zip -O pxw3u4_BDA_ver1x64.zip
unzip -oj pxw3u4_BDA_ver1x64.zip pxw3u4_BDA_ver1x64/PXW3U4.sys
./fwtool PXW3U4.sys it930x-firmware.bin
sudo mkdir -p /lib/firmware
sudo cp it930x-firmware.bin /lib/firmware/
# dkmsでカーネルドライバを自動的に設定する
cd ../
sudo cp -a ./ /usr/src/px4_drv-0.2.1
sudo dkms add px4_drv/0.2.1
sudo dkms install px4_drv/0.2.1
sudo reboot
# 再起動後、/dev/px4をロードしていることを確認
lsmod | grep -e ^px4_drv
# px4_drv 143360 0
再起動後のデバイス認識状況確認
再起動した後は、各チューナーごとに以下のようにデバイスが見れているはずです。分類①に該当するPX-Q1UD、PX-S1UD以外のチューナーはここで確認した内容をmirakurunセットアップ時に利用する為、コピペして控えておいてください。
製品 | 確認コマンド | デバイス |
PX-W3U4 PX-W3PE4 PX-W3PE5 | ls /dev/px4video* | /dev/px4video0 ・ ・ /dev/px4video3 |
PX-Q3U4 PX-Q3PE4 PX-Q3PE5 | ls /dev/px4video* | /dev/px4video0 ・ ・ /dev/px4video7 |
PX-MLT5PE | ls /dev/pxmlt5video* | /dev/pxmlt5video0 ・ ・ /dev/pxmlt5video4 |
PX-MLT8PE | ls /dev/pxmlt8video* | /dev/pxmlt5video0 ・ ・ /dev/pxmlt5video7 |
パッケージの最新化とdockerのインストール
Dockerのインストール
sudo apt install docker docker-compose
sudo systemctl enable --now docker
# dockerグループに作業ユーザーを追加する
sudo adduser ${USER} docker
# 一度ログオフしてログインしなおします。
exit
recpt1の準備
ubuntu22.04最新版でmirakurunからrecpt1を利用しようとしたところ、コンパイラのバージョン不一致で動きませんでした。古いバージョンでコンパイルしたrecpt1であれば動くため、わざとdocker上にubuntu20.04をダウンロードし、ビルド環境を整えrecpt1をコンパイルし、mirakurun上にコピーしました。
docker上でubuntu20.04コンパイル環境の準備
docker image pull ubuntu:20.04
docker image ls
docker container run -it -d --name ubuntu20.04 ubuntu:20.04
docker container exec -it ubuntu20.04 bash
apt install gcc git build-essential autoconf unzip pkg-config wget unzip \
pcscd libpcsclite1 libpcsclite-dev libccid pcsc-tools
ubuntu20.04上でrecpt1のコンパイル
cd /tmp
git clone https://github.com/stz2012/recpt1.git
cd recpt1/recpt1
./autogen.sh
./configure --enable-b25
make; make install
# コンパイル後にrecpt1がインストールされている場所を確認
# ★mirakurunセットアップ後にコピーします
ls /usr/local/bin/recpt1*
# docker環境を抜けます。
exit
mirakurunのインストール
mirakurunはDockerを利用する方法と、Dockerを利用しない方法(node.jsでPC上で動かす)があります。開発環境もDocker上に移行しているとのことですので、dockerを利用する方法でセットアップします。
※Dockerを利用した方が簡単です。
mirakurunのインストール
cd ~/
curl -sf https://raw.githubusercontent.com/l3tnun/docker-mirakurun-epgstation/v2/setup.sh | sh -s
cd docker-mirakurun-epgstation
#チャンネル設定
vim mirakurun/conf/channels.yml
# recpt1を格納するsbinディレクトリの作成と、recpt1コマンドのコピー
mkdir mirakurun/sbin
cd mirakurun/sbin
docker cp ubuntu20.04:usr/local/bin/recpt1 ./
docker cp ubuntu20.04:usr/local/bin/recpt1ctl ./
PLEXチューナーを見せる設定を行う
一部PLEXチューナーのみ利用の環境の場合には/dev/dvbが存在しない為、docker-compose.ymlから該当行を削除する必要があります。(dvbを利用するチューナーを利用している場合には削除しません。)
ls /dev/dvb
# /dev/dvb <なければdocker-compose.ymlで該当行を削除
docker上でPLEXチューナーを利用するためには、「docker-compose.yml」にチューナーを見せる設定を行った後に、mirakurunのセットアップをします。以下は一例として、PX-Q3PE4の場合なので、px4diveoが8つあります。
ls /dev/px4video*
# /dev/px4video0 /dev/px4video1 /dev/px4video2 /dev/px4video3
# /dev/px4video4 /dev/px4video5 /dev/px4video6 /dev/px4video7
上記で確認した/dev/px*をdocker-compose.ymlに追記します。
vi docker-compose.yml
「docker-compose.yml」へ追記する内容は以下の通りで、devicesに「/dev/px4video0:/dev/px4video0」~「/dev/px4video7:/dev/px4video7」を追加します。version等は、都度変更になる個所なので、以下の赤字箇所のみを修正します。
※「再起動後のデバイス認識状況確認」で控えておいた分を、devicesに記載します。下記はPX-Q3PE4の例です。PX-MLT5PEの場合は「- /dev/pxmlt5video0:/dev/pxmlt5video0」を0~4まで、計5個記載することになるかと思います。
また、mirakurunに見せるrecpt1の為に、volumesに/usr/local/sbinに対応するパスを登録します。
version: '3.7'
services:
mirakurun:
image: chinachu/mirakurun
cap_add:
- SYS_ADMIN
- SYS_NICE
ports:
- "40772:40772"
- "9229:9229"
volumes:
- ./mirakurun/conf:/app-config
- ./mirakurun/data:/app-data
- ./mirakurun/sbin:/usr/local/sbin
environment:
TZ: "Asia/Tokyo"
devices:
- /dev/bus:/dev/bus
- /dev/dvb:/dev/dvb ・・・・・・・/dev/dvbが無い環境の場合は削除
- /dev/px4video0:/dev/px4video0
- /dev/px4video1:/dev/px4video1
- /dev/px4video2:/dev/px4video2
- /dev/px4video3:/dev/px4video3
- /dev/px4video4:/dev/px4video4
- /dev/px4video5:/dev/px4video5
- /dev/px4video6:/dev/px4video6
- /dev/px4video7:/dev/px4video7
restart: always
logging:
driver: json-file
options:
max-file: "1"
max-size: 10m
mysql:
image: mariadb:10.5
# image: mysql:8.0 # 囲み文字を使用する場合
volumes:
- mysql-db:/var/lib/mysql
environment:
MYSQL_USER: epgstation
MYSQL_PASSWORD: epgstation
MYSQL_ROOT_PASSWORD: epgstation
MYSQL_DATABASE: epgstation
TZ: "Asia/Tokyo"
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --performance-schema=false --expire_logs_days=1 # for mariadb
# command: --character-set-server=utf8mb4 --collation-server=utf8mb4_0900_as_ci --performance-schema=false --expire_logs_days=1 --default-authentication-plugin=mysql_native_password # for myql
restart: always
logging:
options:
max-size: "10m"
max-file: "3"
epgstation:
build:
context: "./epgstation"
dockerfile: "debian.Dockerfile"
volumes:
- ./epgstation/config:/app/config
- ./epgstation/data:/app/data
- ./epgstation/thumbnail:/app/thumbnail
- ./epgstation/logs:/app/logs
- ./recorded:/app/recorded
environment:
TZ: "Asia/Tokyo"
depends_on:
- mirakurun
- mysql
ports:
- "8888:8888"
- "8889:8889"
# user: "1000:1000"
# devices:
# - /dev/dri:/dev/dri
restart: always
volumes:
mysql-db:
driver: local
「docker-compose.yml」を上書き保存して、mirakurun-epgstationのインストールを継続します。
# docker起動
sudo docker-compose up -d
# recpt1の動作確認の為、mirakurunにログイン
docker exec -i -t docker-mirakurun-epgstation_mirakurun_1 bash
# recpt1コマンドを実行し、tsファイルが出来る事を確認する
# ※arib25を利用していないので、tsファイルは出来るが、このファイルは再生不可。
# ここではtsファイルが出来る事のみ確認します。
cd /tmp
recpt1 --b25 --strip 27 20 test.ts
ls test.ts
rm test.ts # 確認出来たら不要なので削除します
# チャンネルスキャン
curl -X PUT "http://localhost:40772/api/config/channels/scan"
mirakurunにPLEXチューナーを登録する
PT3やPX-Q1UD、PX-S1UDではない場合、自動でチューナー登録されません。なので以下のように設定します。
sudo vi /usr/local/mirakurun/config/tuners.yml
tuners.ymlの内容は以下のように記載します。recpt1に–deviceオプションで/dev/px4video0等を指定することも可能ですが、そのコントロールをrecpt1に任せる場合には以下の記載で良いかと思います。
- name: adapter_px0
types:
- BS
- CS
command: /usr/local/sbin/recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px1
types:
- BS
- CS
command: /usr/local/sbin/recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px2
types:
- BS
- CS
command: /usr/local/sbin/recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px3
types:
- BS
- CS
command: /usr/local/sbin/recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px4
types:
- GR
command: /usr/local/sbin/recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px5
types:
- GR
command: /usr/local/sbin/recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px6
types:
- GR
command: /usr/local/sbin/recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px7
types:
- GR
command: /usr/local/sbin/recpt1 <channel> - -
decoder: arib-b25-stream-test
epgstationの管理画面に入り、録画出来る事を確認する
epgstationの管理画面は以下です。
http://<インストール対象サーバIP>:8888/
管理画面に入れた後でも、mirakurunの方で番組表を適宜取り込んでおり、それがepgstationにある程度の時間をかけて取り込まれてくるため、データが無ければ30分程度コーヒーブレイクしてから作業再開すると良いと思います。
セットアップ後の動作確認
サーバの場合、再起動した後に必要な全てのプロセスが立ち上がる必要があります。よって、再起動後に必要なプロセスが起動していることを確認します。
sudo reboot
管理画面へのアクセスしての動作確認
製品名 | アクセス先 | 確認ポイント |
mirakurun | https://<インストール対象サーバIP>:40772/ | ・ログ ・チューナー登録状況 |
epgstation | http://<インストール対象サーバIP>:8888/ | ・番組表が見えているか ・予約録画出来るか ・チューナー数分録画出来るか ・キーワード予約録画出来るか |
以上で、mirakurunとepgstationによる環境構築完了です。今回、epgstation、mirakurun共にDocker上に構築しているため、‘Dockerの操作方法も記載しておきます。
【おまけ】Docker操作方法
mirakurunのセットアップ中に、Docker周りのトラブルシューティングや操作をする必要があるかもしれません。その際に利用するであろうコマンドを以下に記載します。
目的 | コマンド | 備考 |
Dockerプロセス一覧表示 | docker ps -a | コンテナ名はこのコマンドで取得 |
Dockerイメージ一覧表示 | docker images | |
Dockerプロセス上にログイン | docker exec -it <コンテナ名> bash | 仮想マシンの場合、仮想マシンにSSHログインするイメージです。 |
ファイルコピー(ホスト⇒コンテナ) | docker cp <コピー元> <コンテナ名>:<コピー先> | |
ファイルコピー(コンテナ⇒ホスト) | docker cp <コンテナ名>:<コピー元> <コピー先> | |
起動 | docker start <コンテナ名> | |
停止 | docker stop <コンテナ名> |
【おまけ】電波調整方法
良く勘違いされているので書いておきます。TV信号は適正値があり、チューナーに入力する信号が高すぎる場合にはアッテネータを利用して減衰させます。-6dbや、-10db等ありますが、TV前で10db以上も減衰させるようなケースはあまりないはずで、せいぜい2~6dbのアッテネータかと思います。また、分配する事でも減衰する為、分配器をつけても減衰させることが出来ます。反対にチューナーに入力する信号が低い場合にはブースターで増幅します。ブースターの設置場所はPCの直前だとレベルが上がりすぎる為、一般的にはアンテナ直下(屋根裏やアンテナ近くにBOX設置、風呂場の天井裏等)に設置します。ブースターの場合、電源分離型を購入すると便利です。
参考にさせて頂いたページ
以下サイトを参考にさせていただきました。ありがとうございました。また、作者の方々には便利なソフトウェアを作成して頂いたことに深くお礼申し上げます。
最後に・・・
PLEXチューナーを利用し、かつrecpt1で録画するあたり、結構強引なセットアップ方法をしました。本当はもっとスマートな方法があるのかもしれませんが、試行錯誤した結果としてまとめています。
また、これは個人的な環境変化の感想ですが、今まで、録画データを保存する場所にはわざとHDD(RAID1)を利用していました。しかし、SSDの1TBが1万円前後で購入できることと、一度に8チャンネル録画した場合にHDDにパフォーマンス懸念がありましたので、「TBWの高いSSDであれば大丈夫」と割り切って録画先もSSDとしてみました。
本当はSeagateのfirecudaがTBWもダントツだったのでそれを買いたかったのですが、TBW600TBのSamsung 980 1TBよりも2倍は高かったため、今回は消費電力・発熱も低いsumsung製を購入して利用しております。
今まで、複数録画中にロードアベレージ20.x(ふつうは1.x近辺)とあまり見ないような数字を叩き出していたのが改善し、更にCMカット作業後の連結が一瞬で終わるのは圧巻でした。
有益な情報ありがとうございます。
実際にセットアップして詰まったところをご報告致します。
■docker上でubuntu20.04コンパイル環境の準備
○これを実行するよりも前にdockerをインストールしておく必要がありました。
○apt installを実行する前にapt updateを行う必要がありました。
■vi docker-compose.yml
「curl -sf https://raw.githubusercontent.com/l3tnun/docker-mirakurun-epgstation/v2/setup.sh | sh -s」
を実行した際にエラーが発生します。
下記の通り対処
vi docker-compose.yml
○下記行を削除
– /dev/dvb:/dev/dvb
○記事通り追記
– ./mirakurun/sbin:/usr/local/sbin
– /dev/px4video0:/dev/px4video0
~
– /dev/px4video0:/dev/px4video7
○setup.shを修正 下記二行をコメント
#git clone https://github.com/l3tnun/docker-mirakurun-epgstation.git
#cp docker-compose-sample.yml docker-compose.yml
○再実行
sh setup.sh
■mirakurunにPLEXチューナーを登録する
tuners.ymlを編集する箇所ですが、一部誤っているようです。
/opt/recpt1
↓
recpt1
あと、recpt1のコピーが足りていません。
docker cp ubuntu20.04:usr/local/bin/recpt1 ./
コメント・ご指摘ありがとうございます。
ご指摘頂いた箇所について修正させて頂きました。