Ubuntu20.04とPLEX社製チューナー(PX-W3PE4)で構築するMirakurun最新版+epgstation環境


PT3の入手性が極端に悪くなったため、PLEX社製TVチューナーでLinux録画環境を構築しました。とりあえずはPT3とPLEXチューナーのダブル運用(計12チャンネル同時録画可能)としていますが、PLEXチューナーがかなり安定動作してくれるので、将来的にはPLEXチューナーのみでも良いかと考えています。

【事前準備】環境の組み合わせについて

①サーバ、②チューナー、③カードリーダが必要です。

①サーバ

サーバ費用コメント
Raspberry Pi47,000~10,000円ハードウェアエンコード可能なため、コスパ最強です。裸のまま構築すると、静電気やショート等で壊れる可能性が高まるので、ケースも併せて購入する事を強くお勧めします。
自作サーバ3万円前後Intel系の4コアCPUがお勧めです。TDP65Wでも、実測値はRyzenよりもIntel系の方が低い点と、Intel製チップセットを利用するM/Bは安定性で期待できるためです。
ノートPC4万円前後余っているノートPCを再利用してもいいと思います。バッテリーが生きていればUPS付きのサーバですね。

②チューナー

利用可能なチューナーは以下の通りで、分類が1種類に分かれます。mirakurunはdocker上に構築する前提で特徴を記します。

分類特徴
mirakurunのセットアップ中で面倒を見てもらえる為、セットアップが楽。
ドライバを導入し、recpt1等をコンパイルし、Dockerから参照可能な場所に配備。
あわせて、Dockerから該当デバイスを見れるようにする必要あり。
mirakurunで利用可能なチューナーの分類

mirakurunで利用可能なチューナーは下表のとおり。PT3を元々持っている方はPT3を使うのが楽です。BS/CSが必要なければ分類①に該当するPX-Q1UDPX-S1UDが最有力候補。

Raspberry pi等の小型PCで利用する場合には、外付けタイプ(内外で内と記載)を選択。既存のサーバ機やデスクトップPCを利用する場合には内蔵タイプ(内外で外と記載)を選択すればいいと思います。

メーカー製品分類内外地デジBS/CS金額評価コメント
アースソフトPT32ch2ch3万前後一押しだが、既に入手困難
PLEXPX-Q1UD4ch1万2千円セットアップが楽
PLEXPX-S1UD1ch5,000セットアップが楽
PLEXPX-W3U42ch2ch在庫少ない?良い意味で枯れてます。recpt1経由で利用
PLEXPX-Q3U44ch4ch22,000同上
PLEXPX-W3PE42ch2ch13,800同上
PLEXPX-Q3PE44ch4ch21,000同上
PLEXPX-W3PE52ch2ch16,000同上
PLEXPX-MLT5PE5ch地デジ兼用16,000地デジ、BS/CS合計5ch。recpt1経由で利用
PLEXPX-MLT8PE8ch地デジ兼用27,000地デジ、BS/CS合計8ch。recpt1経由で利用
mirakurunから利用可能なチューナー

③カードリーダー

安定して利用製で既製品であればOKです。「SCR3310」が実績があり苦労しないと思います。

PX-W3PE4のセットアップ

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

# 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

# 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

# /dev/px4*デバイスがチューナー数分存在することを確認
ls /dev/px4*
# /dev/px4video0  /dev/px4video1  /dev/px4video2  /dev/px4video3  
# /dev/px4video4  /dev/px4video5  /dev/px4video6  /dev/px4video7

recpt1のインストール

recpt1は以下のようにインストールしますmirakurunは、/usr/local/mirakurun/opt へパスを通してくれているので、インストール後、/usr/local/mirakurun/opt へ必要な実行ファイルをコピーします。なお、arib25はmirakurunが面倒を見てくれるので準備不要です。

cd /tmp
git clone https://github.com/stz2012/recpt1.git
cd recpt1/recpt1
./autogen.sh
./configure --enable-b25 
make; sudo make install

# docker上のmirakurunが認識可能なパスにrecpt1をコピーする。
cp /usr/local/bin/recpt* /usr/local/mirakurun/opt/

mirakurunのインストール

mirakurunはDockerを利用する方法と、Dockerを利用しない方法(node.jsでPC上で動かす)があります。開発環境もDocker上に移行しているとのことですので、dockerを利用する方法でセットアップします。

※Dockerを利用した方が簡単です。

Dockerのインストール

sudo curl -sSL https://get.docker.com/ | CHANNEL=stable sh
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo usermod -aG docker ${USER}

sudo systemctl enable --now docker

mirakurunのインストール

mkdir ~/mirakurun/
cd ~/mirakurun/
wget https://raw.githubusercontent.com/Chinachu/Mirakurun/master/docker/docker-compose.yml

PLEXチューナーを見せる設定を行う

docker上でPLEXチューナーを利用するためには、「docker-compose.yml」にチューナーを見せる設定を行った後に、mirakurunのセットアップをします。以下は一例として、PX-W3PE4の場合なので、px4diveoが4つあります。

ls /dev/px4video*
# /dev/px4video0  /dev/px4video1  /dev/px4video2  /dev/px4video3  

上記で確認した/dev/px*をdocker-compose.ymlに追記します。

vi docker-compose.yml

「docker-compose.yml」へ追記する内容は以下の通りで、devicesに「/dev/px4video0:/dev/px4video0」~「/dev/px4video7:/dev/px4video7」を追加します。version等は、都度変更になる個所なので、以下の赤字箇所のみを修正します。

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"
    ports:
      - 40772:40772
      - 9229:9229
    devices:
      - /dev/bus:/dev/bus
      - /dev/dvb:/dev/dvb
      - /dev/px4video0:/dev/px4video0
      - /dev/px4video1:/dev/px4video1
      - /dev/px4video2:/dev/px4video2
      - /dev/px4video3:/dev/px4video3
    volumes:
      - /usr/local/mirakurun/run/:/var/run/
      - /usr/local/mirakurun/opt/:/opt/
      - /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: /opt/recpt1 <channel> - -
  decoder: arib-b25-stream-test
- name: adapter_px1
  types:
    - BS
    - CS
  command: /opt/recpt1 <channel> - -
  decoder: arib-b25-stream-test
- name: adapter_px2
  types:
    - BS
    - CS
  command: /opt/recpt1 <channel> - -
  decoder: arib-b25-stream-test
- name: adapter_px3
  types:
    - BS
    - CS
  command: /opt/recpt1 <channel> - -
  decoder: arib-b25-stream-test

チャンネルスキャンを行う

以下コマンド実行後、10分~20分程度かかると思います。

curl -X PUT "http://localhost:40772/api/config/channels/scan"

ここまででmirakurun側のセットアップ完了です。mirakurunの管理画面は以下です。チャンネルスキャンまで実行すれば、特段やることはありませんが、管理画面に入って、チューナーの登録状況や、ログを確認しておくと良いかもしれません。

https://<インストール対象サーバIP>:40772/

epgstationのインストール

mirakurunはチューナーデバイスの管理ソフトウェアなので、予約録画をするためには、GUI画面が必要ですので、epgstationをインストールします。

sudo apt install nodejs ffmpeg python gcc npm

# バージョンチェック
node --version
curl -o - http://localhost:40772/api/version
ffmpeg -version
python --version
gcc --version

cd ~/
git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
npm run all-install
npm run build

cp config/config.sample.yml 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

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

管理画面へのアクセスしての動作確認

製品名アクセス先確認ポイント
mirakurunhttps://<インストール対象サーバIP>:40772/・ログ
・チューナー登録状況
epgstationhttp://<インストール対象サーバ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 <コンテナ名>
mirakurunのトラブルシューティングで使いそうなDockerコマンド

【おまけ】電波調整方法

良く勘違いされているので書いておきます。TV信号は適正値があり、チューナーに入力する信号が高すぎる場合にはアッテネータを利用して減衰させます。-6dbや、-10db等ありますが、TV前で10db以上も減衰させるようなケースはあまりないはずで、せいぜい2~6dbのアッテネータかと思います。また、分配する事でも減衰する為、分配器をつけても減衰させることが出来ます。反対にチューナーに入力する信号が低い場合にはブースターで増幅します。ブースターの設置場所はPCの直前だとレベルが上がりすぎる為、一般的にはアンテナ直下(屋根裏やアンテナ近くにBOX設置、風呂場の天井裏等)に設置します。ブースターの場合、電源分離型を購入すると便利です。

参考ページ

以下サイトを参考にさせていただきました。ありがとうございました。また、作者の方々には便利なソフトウェアを作成して頂いたことに深くお礼申し上げます。

タグ , , , . ブックマークする パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください