PX-W3U4をWindows10マシンで使う場合は,PLEX社からリリースされているWindows用のデバイスドライバーを通常使う。
しかしPLEX社のデバイスドライバーだと,動作が不安定になったり視聴画像のフレームドロップなどの問題が多く発生することがある。
一方LinuxマシンでPX-W3U4を使う場合,nns779氏が開発した非公式デバイスドライバーpx4_drvを使うと安定して使用できるようだ。
このLinuxマシン用の非公式デバイスドライバーpx4_drvをWindowsマシンでも使用できるように,nns779氏がMicrosoftの汎用USBデバイスドライバーであるWinUSBを使用したpx4_drvを2021/07にリリースされた
このWinUSB版px4_drvデバイスドライバーを使うと,Windowsマシンでも視聴画像のフレームドロップの問題が少なくなったり,安定的に使用できるようになると思われる。
なので,WindowsマシンでTVTestでテレビ放送を視聴するのにWinUSB版px4_drvを使ってみることにした。
PLEX社のデバイスドライバーが既にインストールされているので,デバイスマネージャーでPLEX社のデバイスドライバーを削除した。
WinUSB版px4_drvとBonDriver等のソースコードをダウンロードする。
> cd work > git clone https://github.com/nns779/px4_drv -b winusb
WinUSB版px4_drvデバイスドライバーをインストールする。WinUSB版px4_drvデバイスドライバーをインストールするためのinfファイル(実際のデバイスドライバーはMicrosoft製のlibusb互換デバイスドライバー・ライブラリのWinUSB)は,px4_drv\winusb\pkg\infにダウンロードされている。
これで通常,デバイスドライバーはインストールできるのだが,このデバイスドライバーにはデジタル署名されたcatファイルが無いため,Windows10にはそのままではインストール出来なかった。
しょうがないので,署名なしのデバイスドライバーをインストールする方法でインストールした。
この後,奥さんのWindows10マシンにこのWinUSB版px4_drvデバイスドライバーを同様にしてインストールするのは手間がかかるので,自己署名をしたcatファイルを作成し勝手に信頼設定することにより通常のデバイスドライバーをインストールするのと同じようにインストール出来るようにした。
上記のWinUSB版px4_drvを取得するとBonDriver等のソースコードも含まれている。
Visual Studio 2019 Build Toolsが使用できる環境でコマンドプロンプトを起動して,以下のようにしてビルドした。
> cd px4_drv\winusb > MSBuild px4_winusb.sln /nologo /m /t:Build /p:Configuration=Release;Platform=x86;WindowsTargetPlatformVersion=10.0;PlatformToolset=v142 > MSBuild px4_winusb.sln /nologo /m /t:Build /p:Configuration=Release;Platform=x64;WindowsTargetPlatformVersion=10.0;PlatformToolset=v142
これでBonDriverが,
build\x86\Release\BonDriver_PX4.dll build\x64\Release\BonDriver_PX4.dll
にビルドされる。
使用するTVTestが32bit・64bit版かに合わせて,ビルドしたBonDriverも32bit版か64bit版のどちらかを使用する。
作成されたBonDriver_PX4.dllを,BonDriverを置くディレクトリに2つのファイルとしてコピーする。(C:\WinApl\TV\TVTestにTVTestをインストールしている場合)
> copy build\x86\Release\BonDriver_PX4.dll C:\WinApl\TV\TVTest\BonDriver\BonDriver_PX4-S.dll > copy build\x86\Release\BonDriver_PX4.dll C:\WinApl\TV\TVTest\BonDriver\BonDriver_PX4-T.dll または > copy build\x64\Release\BonDriver_PX4.dll C:\WinApl\TV\TVTest\BonDriver\BonDriver_PX4-S.dll > copy build\x64\Release\BonDriver_PX4.dll C:\WinApl\TV\TVTest\BonDriver\BonDriver_PX4-T.dll
チューナー設定ファイルをコピーする。
> copy pkg\BonDriver_PX4\BonDriver_PX4-S.ini C:\WinApl\TV\TVTest\BonDriver\ > copy pkg\BonDriver_PX4\BonDriver_PX4-S.ChSet.txt C:\WinApl\TV\TVTest\BonDriver\ > copy pkg\BonDriver_PX4\BonDriver_PX4-T.ini C:\WinApl\TV\TVTest\BonDriver\ > copy pkg\BonDriver_PX4\BonDriver_PX4-T.ChSet.txt C:\WinApl\TV\TVTest\BonDriver\
作成されたDriverHost_PX4.exeをコピーする。DriverHost_PX4.exeは複数チューナーを切り替えてくれる。
> copy build\x86\Release\DriverHost_PX4.exe C:\WinApl\TV\TVTest\BonDriver\ または > copy build\x64\Release\DriverHost_PX4.exe C:\WinApl\TV\TVTest\BonDriver\
設定ファイルDriverHost_PX4.iniをコピーする。
> copy pkg\DriverHost_PX4\DriverHost_PX4.ini C:\WinApl\TV\TVTest\BonDriver\
作成されたfwtool.exeをコピーする。(実行パスが通っているディレクトリーでもOK)
これは純正のデバイスドライバーからfirmware部分を抽出するツール。
> copy build\x86\Release\fwtool.exe C:\WinApl\TV\TVTest\BonDriver\ または > copy build\x64\Release\fwtool.exe C:\WinApl\TV\TVTest\BonDriver\
fwtool.exe用の情報ファイルfwinfo.tsv(PX-W3U4 BDA Ver.202104 64bitの情報を追加した物)をC:\WinApl\TV\TVTest\BonDriverへコピーする。
PLEX社のWindows用のデバイスドライバーver1.0(pxw3u4_BDA_ver1x64.zip)から,以下のようにしてファームウェアit930x-firmware.binを抽出する。
> cd C:\WinApl\TV\TVTest\BonDriver > wget http://plex-net.co.jp/plex/pxw3u4/pxw3u4_BDA_ver1x64.zip -O pxw3u4_BDA_ver1x64.zip > unzip pxw3u4_BDA_ver1x64.zip > fwtool pxw3u4_BDA_ver1x64\PXW3U4.sys it930x-firmware.bin fwtool for px4 drivers Driver file (in) : pxw3u4_BDA_ver1x64/PXW3U4.sys Firmware file (out) : it930x-firmware.bin Driver description: PX-W3U4 BDA Ver.1.0 64bit Firmware length: 2169 bytes Firmware CRC32: 0b41a994
PLEX社のWindows用のデバイスドライバーver1.4(pxw3u4v1.4.zip)からでも同様にしてファームウェアit930x-firmware.binを抽出できる。*1
> cd C:\WinApl\TV\TVTest\BonDriver > wget http://plex-net.co.jp/download/pxw3u4v1.4.zip -O pxw3u4v1.4.zip > unzip pxwu4v1.4.zip > fwtool pxw3u4v1\x64\PXW3U4.sys it930x-firmware.bin fwtool for px4 drivers Driver file (in) : PXW3U4.sys Firmware file (out) : it930x-firmware.bin Driver description: PX-W3U4 BDA Ver.1.4 64bit Firmware length: 7013 bytes Firmware CRC32: df0bf49a OK.
どちらでも使用できたが,px4_drv開発者のおすすめはver1.0のデバイスドライバーから抽出したものらしい。
この非公式デバイスドライバーWinUSB版px4_drvには,PX-W3U4の内蔵カードリーダーでのB-CASカードの読み込みには対応していない。
このためB-CASカードを読むために,接触式ICカードリーダーを別途用意する必要がある。
この非公式デバイスドライバーWinUSB版px4_drvは,PX-W3U4に内蔵されているリモコン受信器には対応していない。
なので,PX-W3U4経由での付属のリモコンでの操作は出来ない。
リモコンを使う方法として,PX-W3U4内蔵のリモコン受信器の代わりとして以下の方法でリモコン操作できた。
動作テスト用に録画ツールを用意する。
BonDriverを使って録画するツールのBonRecTestをビルドしてインストールした。(作者のビルド済みのものは,ここからダウンロードできる。)
BonRecTestのソースコードをここから以下のようにして取得する。
> cd work > git clone https://github.com/rndomhack/BonRecTest.git > cd BonRecTest
その後ビルドする。
> MSBuild BonRecTest.sln /nologo /m /t:Build /p:Configuration=Release;Platform=x86;WindowsTargetPlatformVersion=10.0;PlatformToolset=v142 > MSBuild BonRecTest.sln /nologo /m /t:Build /p:Configuration=Release;Platform=x64;WindowsTargetPlatformVersion=10.0;PlatformToolset=v142
BonRecTest.exeが作成されているので,パスが通っているディレクトリかBonDriverを置くディレクトリにコピーする。
> copy Release\BonRecTest.exe C:\WinApl\TV\TVTest\BonDriver または > copy x64\Release\BonRecTest.exe C:\WinApl\TV\TVTest\BonDriver
日本のデジタルテレビ放送は暗号化(スクランブル)されて配信されている。テレビ放送を受信してB-CASカードの情報を使って復号化(スクランブル解除)する必要があるのだが,このために使用するプログラムをライブラリ化したのがlibarib25ライブラリー。
arib-b25-stream-testはこのライブラリを使ったツールで,これを使用すると接触式ICカードリーダーとB-CASカードを用いて復号化(スクランブル解除)出来る。
ここのWindows・Linux 共用ARIB STD-B25ライブラリをビルドしてインストールした。
> cd work > git clone https://github.com/tsukumijima/libaribb25.git > cd libaribb25 > MSBuild arib_std_b25.sln /nologo /m /t:Build /p:Configuration=Release;Platform=Win32;WindowsTargetPlatformVersion=10.0;PlatformToolset=v142 > MSBuild arib_std_b25.sln /nologo /m /t:Build /p:Configuration=Release;Platform=x64;WindowsTargetPlatformVersion=10.0;PlatformToolset=v142
arib-b25-stream-test.exeが作成されているので,パスが通っているディレクトリかBonDriverを置くディレクトリにコピーする。
> copy Win32\Release\arib-b25-stream-test.exe C:\WinApl\TV\TVTest\BonDriver または > copy x64\Release\arib-b25-stream-test.exe C:\WinApl\TV\TVTest\BonDriver
コマンドプロンプトを起動して,以下のコマンドで動作を確認してみる。
カレントディレクトリをBonDriverのディレクトリにして,B-CASカードをリーダーに挿入してBonRecTestコマンドを使う。(表示にvlcが必要。)
> cd C:\WinApl\TV\TVTest\BonDriver > BonRecTest --driver BonDriver_PX4-T.dll --output - --space 0 --channel 14 | arib-b25-stream-test | vlc fd://0
テレビ放送(地デジ10ch)が見れればうまく動作している。
この後,TVTestでpx4_drvのBonDriverを使用したところテレビ放送が視聴できた
px4_drvとTVTest0.10.0をビルドしたもの(不定期更新)