28
Help us understand the problem. What are the problem?

posted at

updated at

Windows10 で EPGStation セットアップ(2021年12月)

注意

現状、 Node.js 16系では EPGStationはスムーズにインストールが進められない模様です。
https://github.com/l3tnun/EPGStation/issues/559

この記事では

EPGStation を Windows10環境にセットアップする手順を検証し動作を確認します。
なおMirakurun/EPGStationはLinux下での利用を推奨しており、Windows下で動かすことは "Experimental, Unstable, Not Recommended, Not Tested"/"実験的"という位置づけになっています。

image.png

先に結果から

Mirakurun, EPGStationは十分に安定して動きます。
nns779氏のWinUSB版px4_drvのおかげでPlexユーザも幸せに。
Mirakurun, EPGStationはWindows下でも十分に安定して動きます。
従来PLEXユーザはPLEXが提供するWindowsドライバの品質問題でDrop多発に悩まされていましたが、2021年7月にnns779氏が非公式ドライバWinUSB版px4_drvを公開されたことで状況が一変、PLEXでもWindows環境下で安定した動作が期待できるようになりました!!ありがたや。。

Windows Windows Linux
Tuner PX-Q3U4 PX-Q3U4 PX-Q3U4
Tuner Driver WinUSB版px4_drv by nns779 BDA Driver Ver.1.2 by PLEX px4_drv by nns779
動作 🌞安定動作 Drop多発 🌞安定動作

検証した環境

ハードウェアは メーカー製PC + PLEXチューナ + ICカードリーダー の組合せ。

ハードウェア 製品名
PC Core i5-6200U @ 2.30GHz / Memory 4G
TV チューナー PLEX PX-Q3U4
IC Card Reader ACR39-NTTCom

ソフトウェアは2021年12月6日時点最新をつかわせてもらいました

ソフトウェア名 Owner バージョン リリース日
Windows 10 Home バージョン 21H2 2021年11月
EPGStation l3tnun氏 2.6.17 2021年12月28日
Mirakurun kanreisa氏 3.9.0-beta.24 2021年12月21日
BonRecTest rndomhack氏 1.0.0 2016年4月10日
px4_drv WinUSB版 nns779氏 commit cfe0712 Commits on 2021年9月9日
NodeJS v14.18.2

構築手順

公式ドキュメント

公式ドキュメントの手順に基づいて作業しました。

1. node.js のインストール

以下のURLから node.jsをダウンロード。
現在、Node.js 16系だとインストール中にエラーが出るので以前のLTSであるNode.js 14系をインストールします。
https://nodejs.org/ja/
↑こちらのページにアクセスして「LTSのリリーススケジュールをご覧ください」をクリックして
image.png
下にスクロールして v14をクリック
image.png
node-v14.18.2-x64.msi をダウンロード。
image.png
ダウロードしたインストーラーを開いてインストール開始します。
標準オプションから変えた箇所として、C/C++のビルド環境を導入するかどうかの質問に対してチェック。

これにより、node.jsのインストール後 にパッケージ管理ソフトの Chocolatey がインストール/実行され、Visual Studio 2017 Build Tools など後にツールのコンパイルに使用するパッケージが導入されます。

2. Mirakurun のインストール

Windowsの [スタートメニュー] から [Windows PowerShell]を右クリック [管理者として実行]し 、以下のコマンドを入力。

Windows PowerShell(管理者として実行)
npm install winser@1.0.3 -g
npm install mirakurun@latest -g --production

実行結果
image.png

3. FFmpegのダウンロードと配置

ビルド済Windows版FFMPEGをダウンロード。
https://github.com/BtbN/FFmpeg-Builds/releases
今回は"GPLライセンス版"、"Staticリンク"を選択。
ffmpeg-n4.4-78-g031c0cb0b4-win64-gpl-4.4.zip
image.png

ダウンロードしたものを展開し、ffmpeg.exe ffprobe.exe をCドライブ直下に作成したC:\ffmpegに格納。
このパスはのちほどEPGStationのConfigから指定します。

4. Git のインストール

ふたたび 管理者として実行 した Windows PowerShell から Chocolatey を使ってgitをインストール。

Windows PowerShell(管理者として実行)
choco install git.install

実行結果
image.png

5. EPGStation のインストール

Powershellから Node.js (LTS 版推奨), Mirakurun, windows-build-tools, FFmpeg/FFprobe がインストール済みであることを確認。
インストール済みであるときは以下のように出力されます。
(一度も Internet Explorer を開いたことがない環境ではInvoke-WebRequestが失敗します。Windowsをインストールしたばかりのときは注意)

Windows PowerShell(一般ユーザとして実行)
node --version
Invoke-WebRequest http://localhost:40772/api/version
npm info windows-build-tools

実行結果
image.png

EPGStation をダウンロードしインストール。
ダウンロードする際に改行コードが変換されないように autocrlf false としています。これをやらないと次のbuildでeslintがCRを検出して大量にエラーをはきます。

Windows PowerShell(一般ユーザとして実行)
git config --global core.autocrlf false
git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
npm run all-install

実行結果
image.png

ビルド。

Windows PowerShell(一般ユーザとして実行)
npm run build

実行結果
image.png

サンプルの設定ファイルをコピー。

Windows PowerShell(一般ユーザとして実行)
copy .\config\config.yml.template .\config\config.yml
copy .\config\operatorLogConfig.sample.yml .\config\operatorLogConfig.yml
copy .\config\epgUpdaterLogConfig.sample.yml .\config\epgUpdaterLogConfig.yml
copy .\config\serviceLogConfig.sample.yml .\config\serviceLogConfig.yml
copy .\config\enc.js.template .\config\enc.js

実行結果
image.png

設定ファイルを編集。
"ファイル名を指定して実行"で notepad %USERPROFILE%\EPGStation\config\config.yml と入力、EPGStationの設定ファイルを編集。(公式手順ではTeraPad, VSCode などのエディタが推奨されていますが、モダンなWindowsに付属している Notepad.exe なら大丈夫なようです)
image.png
最低限の以下の行を書き換え。

%USERPROFILE%\EPGStation\config\config.yml
mirakurunPath: 'http://localhost:40772'
ffmpeg: 'C:\\ffmpeg\\ffmpeg.exe'
ffprobe: 'C:\\ffmpeg\\ffprobe.exe'

image.png

6.EPGStationの自動起動の設定

再び管理者でPowerShellを開き、EPGStationをインストールしたディレクトリに移動してからnpm run install-win-service を実行。
このコマンドを実行することで、EPGStationは起動状態になりました。

Windows PowerShell(管理者として実行)
> cd $env:USERPROFILE\EPGStation
> npm run install-win-service

実行結果
image.png

ここまでの動作確認

ここまでの手順で [サービス] にmirakurun と EPGStation が登録されていますので、管理コンソールで登録されていること、開始状態となっていることを確認。
管理コンソールを開き、、
image.png
サービス一覧からmirakurun と EPGStation を探します。 それぞれ 状態 が 開始 となっていることを確認。
image.png

ブラウザで開いてアクセスできることを確認。
http://localhost:8888/ が EPGStationです。
今のところmirakurun のチューナもチャンネルも設定していないので、番組情報は何も表示されません。
image.png

http://localhost:40772/ が Mirakurun GUI です。
image.png

7. BonRecTest のダウンロード

https://github.com/rndomhack/BonRecTest/releases
こちらのプロジェクトからビルド済みのものをいただきました。
x86 バイナリと x64 バイナリがありますが x64 バイナリを選択しました。
今回はC:\直下に C:\BonDrivers というフォルダを作成し保存。

8.px4_drvのWinUSB版ダウンロードとビルド、インストール

まずは px4_drvレポジトリの WinUSB版 ブランチをダウンロードしてきます。

コマンドプロンプト(一般ユーザとして実行)
> git clone https://github.com/nns779/px4_drv -b winusb

image.png

次にWinUSBドライバをWindowsにインストールします。
このインストールの時だけ署名の強制を無効化する必要があります。インストールさえ済めば通常起動で問題ありません。

署名の強制を無効化して起動します。
「設定」→「更新とセキュリティ」→
image.png

「回復」→「今すぐ再起動」
image.png

→(画面が切り替わる)→「トラブルシューティング」→
20210711_084949.jpg

「詳細オプション」→
20210711_085123.jpg

「スタートアップ設定」→
20210711_085230.jpg

「再起動」→
20210711_085426.jpg

(UEFI)→「ドライバー署名の強制を無効にする(F7キー)」
20210711_091602.jpg

次にドライバのデバイスマネージャーを開き、PCに接続したPLEXデバイスを探して右クリックからドライバーの更新
image.png
コンピューターを参照してドライバーを検索
image.png
次の場所でドライバーを検索します:に
px4_drvをダウンロードした場所を設定 (ここでは C:\Users<ユーザ名>\px4_drv\winusb\pkg\inf)
image.png

署名がないため警告が出ますが「このドライバーソフトウェアをインストールします」を選択
image.png

同様の手順を残りにも実施していきます。
image.png

問題なくドライバが適用できたら、再起動。通常モードに戻ります。

次にBonDriverをビルドしていきます。
まずはPowerShellを管理者として実行し Visual Studio 2019 Build Toolsをインストール

Windows PowerShell(管理者として実行)
> choco install visualstudio2019-workload-vctools

image.png

その後、スタートメニューから
Visual Studio 2019 > Visual Studio Tools> VC > x64 Native Tools Command Prompt for VS 2019
と辿りビルド用のコマンドプロンプトを開き、以下の通りBonDriver_BDAとそのほかのレポジトリをコピーして配置、ビルド。

x64_Native_Tools_Command_Prompt_CVS_2019
cd %userprofile%
cd px4_drv\winusb
msbuild /p:Configuration=Release

image.png

ビルドされたファイルと設定ファイルをC:\BonDrivers へコピー

x64_Native_Tools_Command_Prompt_CVS_2019
copy build\x64\Release\BonDriver_PX4.dll C:\BonDrivers\BonDriver_PX4-T.dll 
copy pkg\BonDriver_PX4\BonDriver_PX4-T.ini C:\BonDrivers\
copy pkg\BonDriver_PX4\BonDriver_PX4-T.ChSet.txt C:\BonDrivers\
copy build\x64\Release\BonDriver_PX4.dll C:\BonDrivers\BonDriver_PX4-S.dll 
copy pkg\BonDriver_PX4\BonDriver_PX4-S.ini C:\BonDrivers\
copy pkg\BonDriver_PX4\BonDriver_PX4-S.ChSet.txt C:\BonDrivers\
copy build\x64\Release\DriverHost_PX4.exe C:\BonDrivers\
copy pkg\DriverHost_PX4\DriverHost_PX4.ini C:\BonDrivers\
copy build\x64\Release\fwtool.exe c:\BonDrivers\
copy ..\fwtool\fwinfo.tsv c:\BonDrivers\

image.png

Powershellに切り替えて、Plexのホームページからドライバをダウンロードしてファームウェアのみ抜き出します。 氏曰く「it930x-firmware.bin はCRC32が 0b41a994 のものがおすすめ」とのことです。

Windows PowerShell(一般ユーザとして実行)
cd C:\BonDrivers\
Invoke-WebRequest -Uri http://plex-net.co.jp/download/pxq3u4v1.2.zip -o pxq3u4v1.2.zip
Expand-Archive pxq3u4v1.2.zip
.\fwtool.exe .\pxq3u4v1.2\x64\PXQ3U4.sys it930x-firmware.bin 
Remove-Item pxq3u4v1.2 -Recurse
Remove-Item pxq3u4v1.2.zip

image.png

9. arib-b25-stream-test.exe のダウンロードと配置

Windowsでも使えるarib-b25-stream-test.exe は tsukumi氏が配布されていますのでので使わせてもらいました。
https://github.com/tsukumijima/libaribb25/

Releases のページでビルド済みバイナリがダウンロードできます。
ダウンロードしたarib-b25-stream-test.exeを C:\BonDrivers にコピーします。

10. BonDriverの配置と動作確認

ここまでの手順でC:\BonDrivers フォルダに配置されたファイルは次のようになりました。
image.png

C:\BonDrivers を Mirakurunから参照できるようにシステムス全体コープでPathに追加。
image.png

動作確認
Mirakurunに設定する前に、これらのツールが単体で動作するか確認。
チューナにアンテナケーブル、ICカードリーダにICカードをそれぞれ挿入してから以下のコマンドをコマンドプロンプトに張り付けることでMirakurun / EPGStation を使わずに、BonRecTest / BonDriver /b25-stream-test のテストができます。なお、ICカードリーダはPLEXチューナ内蔵のものは使えません。

コマンドプロンプト
# 地上波
BonRecTest.exe --log --driver BonDriver_PX4-T.dll --output - --space 0 --channel 14 | arib-b25-stream-test.exe | c:\ffmpeg\ffplay -i - -v warning -x 960 -y 540

# BS
BonRecTest.exe --log --driver BonDriver_PX4-S.dll --output - --space 0 --channel 16 | arib-b25-stream-test.exe | c:\ffmpeg\ffplay -i - -v warning -x 960 -y 540

実行結果(モザイク処理あり)
image.png

BonRecTest単体としてで問題なく動作したので、Mirakurunに設定していきます。

11.mirakurunの チューナー、チャンネルの設定

Mirakurunにチューナーやチャンネルを設定。

チューナ
MirakurunにGUIがついたおかげでMirakurunの設定作業がとてもユーザーフレンドリーになっていますが、8個分のチューナーをGUIで設定するのは少し骨が折れるので、ここは以前までのバージョンと同じやり方で、設定ファイルをメモ帳で直接編集しました。
"ファイル名を指定して実行"で notepad %USERPROFILE%\.Mirakurun\tuners.yml として編集。

%USERPROFILE%\.Mirakurun\tuners.yml
- name: PX_x3U4_S1
  types:
    - BS
    - CS
  command: BonRecTest.exe --driver BonDriver_PX4-S.dll --output - --space <space> --channel <channel>
  decoder: arib-b25-stream-test.exe
  isDisabled: false

- name: PX_x3U4_S2
  types:
    - BS
    - CS
  command: BonRecTest.exe --driver BonDriver_PX4-S.dll --output - --space <space> --channel <channel>
  decoder: arib-b25-stream-test.exe
  isDisabled: false

- name: PX_x3U4_S3
  types:
    - BS
    - CS
  command: BonRecTest.exe --driver BonDriver_PX4-S.dll --output - --space <space> --channel <channel>
  decoder: arib-b25-stream-test.exe
  isDisabled: false

- name: PX_x3U4_S4
  types:
    - BS
    - CS
  command: BonRecTest.exe --driver BonDriver_PX4-S.dll --output - --space <space> --channel <channel>
  decoder: arib-b25-stream-test.exe
  isDisabled: false

- name: PX_x3U4_T1
  types:
    - GR
  command: BonRecTest.exe --driver BonDriver_PX4-T.dll --output - --space <space> --channel <channel>
  decoder: arib-b25-stream-test.exe
  isDisabled: false

- name: PX_x3U4_T2
  types:
    - GR
  command: BonRecTest.exe --driver BonDriver_PX4-T.dll --output - --space <space> --channel <channel>
  decoder: arib-b25-stream-test.exe
  isDisabled: false

- name: PX_x3U4_T3
  types:
    - GR
  command: BonRecTest.exe --driver BonDriver_PX4-T.dll --output - --space <space> --channel <channel>
  decoder: arib-b25-stream-test.exe
  isDisabled: false

- name: PX_x3U4_T4
  types:
    - GR
  command: BonRecTest.exe --driver BonDriver_PX4-T.dll --output - --space <space> --channel <channel>
  decoder: arib-b25-stream-test.exe
  isDisabled: false

ファイルを編集後、GUI( http://localhost:40772/ ) の右上のボタンからMirakurunの再起動します。

設定結果
image.png

チャンネル
次はチャンネルを設定していきました。

地上波チャンネル
Windows環境下でも Mirakurun API経由でChannel Scanを行うことができました。
これにより地上波については自動的に設定することができます。

Channel Scan APIの仕様については以下のURLで確認できます。
http://localhost:40772/swagger-ui/?url=/api/docs#/config/channelScan

地上波0~39chをスキャンする
curl -X PUT "http://localhost:40772/api/config/channels/scan?type=GR&minCh=0&maxCh=39&refresh=true" -H  "accept: text/plain"

実行結果
image.png

BS/CSチャンネル
Mirakurun 3.4.1 から BS/CS のチャンネルスキャンができるようになるコードがマージされましたがLinuxを対象とした機能なので、WindowsのBondriver体系のBS/CSチャンネルはスキャンできません。ここでは直接チャンネル設定ファイルを編集します。

BS/CSのチャンネル定義は BonDriver_PX4-S.ChSet.txt に記載されています。
サービスを絞らずに設定すればMirakurunがサービスを検索してくれますので、下記の設定では受信できる限りのチャンネルを設定したことになります。

%USERPROFILE%\.Mirakurun\channels.yml
- name: BS01/TS0
  type: BS
  space: 0
  channel: '0'
- name: BS01/TS1
  type: BS
  space: 0
  channel: '1'
- name: BS01/TS2
  type: BS
  space: 0
  channel: '2'
- name: BS03/TS0
  type: BS
  space: 0
  channel: '3'
- name: BS03/TS1
  type: BS
  space: 0
  channel: '4'
- name: BS05/TS0
  type: BS
  space: 0
  channel: '5'
- name: BS05/TS1
  type: BS
  space: 0
  channel: '6'
- name: BS09/TS0
  type: BS
  space: 0
  channel: '7'
- name: BS09/TS1
  type: BS
  space: 0
  channel: '8'
- name: BS09/TS2
  type: BS
  space: 0
  channel: '9'
- name: BS11/TS1
  type: BS
  space: 0
  channel: '10'
- name: BS11/TS2
  type: BS
  space: 0
  channel: '11'
- name: BS11/TS3
  type: BS
  space: 0
  channel: '12'
- name: BS13/TS0
  type: BS
  space: 0
  channel: '13'
- name: BS13/TS1
  type: BS
  space: 0
  channel: '14'
- name: BS13/TS2
  type: BS
  space: 0
  channel: '15'
- name: BS15/TS0
  type: BS
  space: 0
  channel: '16'
- name: BS15/TS1
  type: BS
  space: 0
  channel: '17'
- name: BS19/TS0
  type: BS
  space: 0
  channel: '18'
- name: BS19/TS1
  type: BS
  space: 0
  channel: '19'
- name: BS19/TS2
  type: BS
  space: 0
  channel: '20'
- name: BS19/TS3
  type: BS
  space: 0
  channel: '21'
- name: BS21/TS0
  type: BS
  space: 0
  channel: '22'
- name: BS21/TS1
  type: BS
  space: 0
  channel: '23'
- name: BS21/TS2
  type: BS
  space: 0
  channel: '24'
- name: BS23/TS0
  type: BS
  space: 0
  channel: '25'
- name: ND02
  type: CS
  space: 1
  channel: '0'
- name: ND04
  type: CS
  space: 1
  channel: '1'
- name: ND06
  type: CS
  space: 1
  channel: '2'
- name: ND08
  type: CS
  space: 1
  channel: '3'
- name: ND10
  type: CS
  space: 1
  channel: '4'
- name: ND12
  type: CS
  space: 1
  channel: '5'
- name: ND14
  type: CS
  space: 1
  channel: '6'
- name: ND16
  type: CS
  space: 1
  channel: '7'
- name: ND18
  type: CS
  space: 1
  channel: '8'
- name: ND20
  type: CS
  space: 1
  channel: '9'
- name: ND22
  type: CS
  space: 1
  channel: '10'
- name: ND24
  type: CS
  space: 1
  channel: '11'

ただし見る予定のないチャンネル(サービス)をたくさん加えておくと、EPGを集めて回るMirakurunの稼働もあがるしEPG情報の保存先であるPrograms.jsonも大きくなる一方なので、そこはうまく絞り込んだほうがよさそうです。チャンネル単位でDisableにするには次のGUIで編集ができます。

Mirakurun GUI
不要なチャンネル、受信できないチャンネルをGUI経由でDisabled状態にしました。
image.png

設定が終わったのでMirakurun GUI右上のRestartでMirakurunを再起動しました。

最後の動作確認

再起動後のMirakurunは getServices() を地上波/BS/CSすべてのchに行い services.json を構成した後、getEPG()でEPGデータを収集、programs.jsonに保存していきました。チャンネル数が多いと30分単位でかかるので終了するまでEventsタブを見ながら待ちました。
http://localhost:40772/
image.png

EPGStation の番組表も見てみましょう。地上波の番組表が見られました。
http://localhost:8888/
image.png

ここまでで構築は終わりです。
この環境をしばらく運用してみましたが、特に問題は見つかりませんでした。

オプション:EPGStation上で正規表現を有効にする

ここまでの手順でも特に問題なく利用できるのですが、録画ルールなどで正規表現を使う場合はさらにSQLiteの拡張を導入します。
公式ドキュメントに従い SQLiteで正規表現を使えるように拡張を導入します。

VS2017用x64_Native_Toolsコマンドプロンプト
> cd %userprofile%
> curl -O https://www.sqlite.org/2020/sqlite-amalgamation-3330000.zip
> curl -O https://www.sqlite.org/2020/sqlite-src-3330000.zip
> powershell Expand-Archive sqlite-amalgamation-3330000.zip .
> powershell Expand-Archive sqlite-src-3330000.zip .
> copy sqlite-src-3330000\ext\misc\regexp.c sqlite-amalgamation-3330000
> cd sqlite-amalgamation-3330000
> cl regexp.c -link -dll -out:regexp.dll
> cd ..
%USERPROFILE%\EPGStation\config\config.yml
sqlite:
    extensions:
        - 'C:/Users/<ユーザ名>/sqlite-amalgamation-3330000/regexp.dll'
    regexp: true

最後の手順

素晴らしいソフトウェアを公開している開発者やコミュニティに感謝し貢献することを検討してみました。backerは手軽な手段です。

おまけ

Android TV / Fire TV向け EPGStation クライアントアプリつくりました。
Android TV や Fire TV からEPGStation が見れるようになるアプリです。
Google Play ストア / Amazon App ストア から簡単にインストールできます。

https://github.com/daig0rian/epcltvapp
demo.gif

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
28
Help us understand the problem. What are the problem?