0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TV録画 環境構築メモ (WindowsServer2016 + PX-W3PE4 + Mirakurun)

Last updated at Posted at 2022-07-10

概要

今までWindowsServer2016のサーバーにHyper-Vで立ち上げたUbuntu18.04でTV環境を構築していた。
サーバー再起動時にチューナーを認識しなくなる不具合が何度もあり、WindowsServer2016にTV環境を移してみることに。
環境構築方法をメモ代わりに残しておく。

過去の環境

サーバーOSにはWindowsServer2016を使いたい。
Hyper-Vで起動したUbuntuを立ち上げ、その上でMirakurunでチューナーを仮想化してクライアントはChinachuを利用していた。
具体的には、PCIE-USBインターフェースボードにTVチューナーをつなげて、Hyper-V DDAで仮想マシンに直接ボードをマウントする運用だった。
ただ、再起動するとチューナーを認識しないことがあり不安定だった。

環境構築

チューナーとカードリーダー

  • PX-W3PE4
  • ACR39U

ドライバ

まず、販売元のドライバは安定しない過去があったので使わない。
以下の素敵なレポジトリにあるものを使わせていただく。
https://github.com/nns779/px4_drv

Visual Studioのインストール

バージョンは最新なら何でも良いと思う。
今回は2022を使用する。

ドライバの前準備

  1. レポジトリをクローンするかgithubからダウンロードする。
  2. winusb/px4_winusb.slnをVisualStudioで開き、ソリューションをRelease構成でリビルドする。
    • winusb/build/x64/Releaseにビルド結果が生成される
  3. winusb/build/x64/Release/px4_drv/fwtool/fwinfo.tsvをコピーする。
  4. 販売元からドライバをダウンロードする。
    • このとき、fwinfo.tsvに記載のあるドライバを選択するようにする。
    • ファイルサイズやCRCを見る。
  5. ./fwtool PXW3PE4.sys it930x-firmware.binを実行する。
    • it930x-firmware.binが生成される。

ドライバのインストール

  1. Windowsのテスト署名されたドライバに関する設定を解除する。
    • Bcdedit.exe -set TESTSIGNING OFFを実行する。
    • msinfo32.exeセキュアブートが有効になっていれば、UEFIからSecureBootを無効にする。
    • Shift+再起動ボタンでスタートアップ設定を変える準備をして、ドライバ署名の強制の無効化を選択してWindowsを起動する。
  2. デバイスマネージャーからPX-W3PE4を右クリックしてドライバのインストールを行う。手動で選択し、winusb/pkg/infを指定する。
    • インストールするの方を選んでクリックする。

BonDriverの準備

BonDriverのファイルを集めておく。あとでMirakurunの設定で使う。

  • px4_drv\winusb\pkg\BonDriver_PX4からすべてのファイルをコピー。
  • px4_drv\winusb\pkg\DriverHost_PX4からもすべてのファイルをコピー。
  • winusb/build/x64/Release/からはDriverHost_PX4.exeBonDriver_PX4.dllit930x-firmware.binの3つをコピー。
  • BonDriver_PX4.dllに関しては、-S-Tの分を作成する。
  • 設定ファイルが読み出せなくなるため、_Sなどの間違いに注意。

Mirakurun

インストール

  1. Node.js 14.17.0 (x64)をダウンロードしてインストールする。

  2. 以下のコマンドをPowerShellで実行する。

    npm install winser@1.0.3 -g
    npm install mirakurun@latest -g --foreground-scripts --production
    
  3. http://localhost:40772/を開いてMirakurunが起動していることを確認する

設定

  1. BonRecTestをダウンロードする。

  2. BonDriverのファイル群と同じフォルダに、x64/BonRecTest.exeをコピーする。

  3. 以下をクローンしビルドして、x64/Release/libaribb25.dllarib-b25-stream-test.exeをコピーする。

  4. MirakurunのUIでConfig->Tuners->Add Tunerから以下のように追加する。-T0, -T1, -S0, -S1の4つ分を登録する。

    • Commands: BonRecTest.exe --driver BonDriver_PX4-T.dll --output - --channel <channel>
    • DVB Device Path: 空
    • Decoder: arib-b25-stream-test.exe
  5. Windowsのファイアウォール設定の例外に追加する。

    • 必要に応じてMirakurunのポート番号を変える。
    • ファイアウォールのリモートIPも適宜設定する。
  6. 他のLinuxから以下を実行して、チャンネルスキャンを実行する。

    curl -X PUT "http://<WindowsServer IP>:40772/api/config/channels/scan?type=GR&setDisabledOnAdd=false&refresh=true"
    curl -X PUT "http://<WindowsServer IP>:40772/api/config/channels/scan?type=BS&setDisabledOnAdd=false&refresh=true"
    curl -X PUT "http://<WindowsServer IP>:40772/api/config/channels/scan?type=CS&setDisabledOnAdd=false&refresh=true"
    

BSチャンネル設定(手動)

Mirakurunの自動チャンネルスキャンでは、px4_driverとBonRecTestの組み合わせではBS/CSは正しくスキャンできない様子。
原因は、BonRecTestpx4_driverchannelに番号を指定することを想定して作られているため。

px4_driverではBonDriver_PX4-S.ChSet.txtで定義された順にchannel番号が割り振られており、例えばchannel=0を指定するとBS001/TS0が選択される。
解決方法としては、以下の2つかなと思う。

  1. BonRecTestがMirakurun(recpt1準拠?)のBS01_0のような表記をパースできるようにする。
    //commit hash = 5bb99b983b90dbd4d256c26cc9772b99d8016899
    int _tmain(int argc, TCHAR* argv[])
    {
        ...
    	}
    	else if (!_tcscmp(argv[i], TEXT("--channel"))) {
    		DWORD channel;
    		if (argv[i + 1][0] == 'B' && argv[i + 1][1] == 'S')
    		{
    			channel = _tcstoul(argv[i + 1]+2, &pEnd, 10);
    			DWORD streamid = _tcstoul(argv[i + 1]+2+3, &pEnd, 10);
    			channel = (channel - 1) * 4 + streamid;
    			std::cerr << " fed BS channel...recognize as channel=" << channel << std::endl;
    		}
    		else
    		{
    			channel = _tcstoul(argv[i + 1], &pEnd, 10) - 13;
    		}
        ...
    }
    
  2. 自分でMirakurunのtuners.ymlを書く。
    • その際は、channelに直接番号を書く。

EPGStationかなにかを導入する

これから

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?