※epgstation,mirakurun共にdockerでセットアップする手法はepgstationmirakurun共にdockerパッケージでplexチューナーを利用するを参照してください(こちらの方がハマりどころが少ないです)
Ubuntu22.04LTS登場に合わせて、過去に書いた内容をリバイスしました。UbuntuServerはインストール直後のまっさらな状態を想定して各種パッケージを導入しています。
本投稿で対象としているチューナーは以下です。
- PT3
- PX-W3U4
- PX-Q3U4
- PX-W3PE4
- PX-Q3PE4
- PX-W3PE5
- PX-Q3PE5
- PX-MLT5PE
- PX-MLT8PE
※MLTは実機を持っていない為、セットアップの流れは記載しましたが、セットアップ後のコメントを頂けると幸甚です。勿論、他のデバイスについてコメント頂けると幸甚です。
【事前準備】環境の組み合わせについて
①サーバ、②チューナー、③カードリーダが必要です。
①サーバ
サーバ | 費用 | コメント |
Raspberry Pi4 | 7,000~10,000円 | ハードウェアエンコード可能なため、コスパ最強です。裸のまま構築すると、静電気やショート等で壊れる可能性が高まるので、ケースも併せて購入する事を強くお勧めします。 |
自作サーバ | 3万円前後 | Intel系の4コアCPUがお勧めです。 |
ノートPC | 4万円前後 | 余っているノートPCを再利用してもいいと思います。バッテリーが生きていればUPS付きのサーバのようなものですので。 |
②チューナー
利用可能なチューナーは以下の通りで、分類が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
ドライバセットアップ方法
# 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をまだインストールしていない場合には、dockerをインストールします。
sudo apt update ; sudo apt upgrade
sudo apt install docker docker-compose
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を利用した方が簡単です。
Dockerのインストール
sudo apt install docker docker-compose
sudo systemctl enable --now docker
# dockerグループに作業ユーザーを追加する
sudo adduser ${USER} docker
# 一度ログオフしてログインしなおします。
exit
mirakurunのインストール
mkdir ~/mirakurun/
cd ~/mirakurun/
wget https://raw.githubusercontent.com/Chinachu/Mirakurun/master/docker/docker-compose.yml
recpt1を見せる設定を行う
# 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チューナーを見せる設定を行う
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個記載することになるかと思います。
※「network_mode」は必要に応じてbridgeに変更しても良いと思います。
version: "3.7"
services:
mirakurun:
build:
context: ../
dockerfile: docker/Dockerfile
image: chinachu/mirakurun:latest
cap_add:
- SYS_ADMIN
- SYS_NICE
environment:
TZ: Asia/Tokyo
# LOG_LEVEL: "3"
# DEBUG: "true"
network_mode: bridge
ports:
- 40772:40772
- 9229:9229
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
volumes:
- /usr/local/mirakurun/run/:/var/run/
- /usr/local/mirakurun/opt/:/usr/local/sbin
- /usr/local/mirakurun/config/:/app-config/
- /usr/local/mirakurun/data/:/app-data/
restart: always
logging:
driver: json-file
options:
max-file: "1"
max-size: 10m
「docker-compose.yml」を上書き保存して、mirakurunのインストールを継続します。
docker-compose pull
docker-compose run --rm -e SETUP=true mirakurun
docker-compose up -d
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: recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px1
types:
- BS
- CS
command: recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px2
types:
- BS
- CS
command: recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px3
types:
- BS
- CS
command: recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px4
types:
- GR
command: recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px5
types:
- GR
command: recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px6
types:
- GR
command: recpt1 <channel> - -
decoder: arib-b25-stream-test
- name: adapter_px7
types:
- GR
command: recpt1 <channel> - -
decoder: arib-b25-stream-test
epgstationのインストール
mirakurunはチューナーデバイスの管理ソフトウェアなので、予約録画をするためには、GUI画面が必要ですので、epgstationをインストールします。
※ubuntu22.04で普通にaptからnodejsを導入すると、バージョン12がインストールされます。バージョン12ではepgstationの動作要件を満たさず、インストールエラーとなってしまうため、nodeは下記手順でインストールしてください。
sudo apt install ffmpeg python3 gcc npm
# node v16
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs
# バージョンチェック
node --version
curl -o - http://localhost:40772/api/version
ffmpeg -version
python3 --version
gcc --version
cd ~/
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
cd ~/EPGStation
sudo npm install pm2 -g
sudo pm2 startup ubuntu -u ${USER}
pm2 start dist/index.js --name "epgstation"
pm2 save
# pm2をスタートする際の.pm2ディレクトリをユーザーのディレクトリにする
sudo sed -i "s/^Environment=PM2_HOME=.*/Environment=PM2_HOME=\/home\/${USER}\/.pm2/g" /etc/systemd/system/pm2-${USER}.service
sudo sed -i "s/^PIDFile=.*/PIDFile=\/home\/${USER}\/.pm2\/pm2.pid/g" /etc/systemd/system/pm2-${USER}.service
epgstationの管理画面は以下です。
http://<インストール対象サーバIP>:8888/
セットアップ後の動作確認
サーバの場合、再起動した後に必要な全てのプロセスが立ち上がる必要があります。よって、再起動後に必要なプロセスが起動していることを確認します。
sudo reboot
mirakurunの動作確認
docker ps -a
# 以下のように、mirakurunが表示され、STATUSがUpとなっていること
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f0ce038fd119 chinachu/mirakurun:latest "docker-entrypoint.s…" 4 days ago Up 8 hours 0.0.0.0:9229->9229/tcp, 0.0.0.0:40772->40772/tcp mirakurun_mirakurun
epgstationの動作確認
以下のようにpm2 listコマンドを実行し、epgstationのstatusがonlineになっていることを確認する。
pm2 list

管理画面へのアクセスしての動作確認
製品名 | アクセス先 | 確認ポイント |
mirakurun | https://<インストール対象サーバIP>:40772/ | ・ログ ・チューナー登録状況 |
epgstation | http://<インストール対象サーバIP>:8888/ | ・番組表が見えているか ・予約録画出来るか ・チューナー数分録画出来るか ・キーワード予約録画出来るか |
以上で、mirakurunと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のサイトにpxw3u4_BDAにv1.1ドライバが出ているんですよね。Ver1で不具合があれば試してみても良いかもしれませんね。
http://plex-net.co.jp/plex/pxw3u4/pxw3u4_BDA_ver1.1×64.zip
このページを拝見し、Ubuntu22.04LTS で構築しようとしているのですが、Ubuntu 22.04LTS で /dev/dvb がなく、docker-compose が起動できません。/dev/dvb をどうしたら入手できますか。
PT2/PT3等が無い場合、/dev/dvb無し(コメントアウト)で進めたらどうなりますか?