PX-Q3U4・PX-W3U4・PX-MLT で録画サーバを立てる
PLEX の PX-Q3U4・PX-W3U4・PX-MLT 系などの USB / PCIe チューナーです。同時に取れるチャンネルは受信機の数だけで、 数と種別 (地上波・衛星・両方) は筐体ごとに px4-userland に聞いて決めます (Q3U4 は受信機ごとに地上波か衛星か決まっていて、MLT5 系はどれも両方)。 内蔵のカードリーダーがある機種は、それも使えます。 Linux・Mac (Apple Silicon)・Windows (x64) で使えます。
チューナーの一覧は tuners.md、Windows で使うときは install-windows.md。エージェントの中でどう扱っているかは agent.md。
px4-userland をエージェントのイメージに同梱しています
(agent/Dockerfile)。libusb だけで USB を扱うユーザー空間のドライバで、/dev/bus/usb が見えれば動き、
ホストに px4_drv (DKMS) もカーネルモジュールも要りません (px4_drv の /dev/px4video* には対応していません)。
PX-Q3U4 / PX-W3U4 / PX-MLT 系、e-Better / Digibest 系など (USB・PCIe)。px4-userland の対応機種ならそのまま使います (一覧)。
- 設定の
deviceはpx4:<筐体の番号>:<受信機>。 刺さっていれば 一覧から組み立てるので (Px4Userland.Detect)、普通は書きません。status=ready以外の筐体と、まとめられなかった USB デバイス (ungrouped_usb_devices/rejectedの行) は、理由と USB の場所を記録して使いません (open_failedなら/dev/bus/usbを開く権限を疑う)。番号の桁数や受信機の上限は 見ず、合わなければpx4dが理由を付けて断ります。 古いq3u4:<14桁>:<受信機>は「知らないデバイス」として断るので、書いてあればpx4:に書き直してください (番号と受信機はそのまま) - 番号が重なる筐体 (
serial_unique=false) は、USB ポートで見分けます。 PX-M1UR と PX-S1UR は どれも USB の serial が000000000000001で、0.1.9 からは同時に挿すと別々の ready な 筐体として並びます (0.1.8 までは1つのduplicate)。番号のままだと同じpx4:000000000000001:0が2つでき、px4d --deviceも番号だけでは1台に決められず断ります。 そこで名前を番号と USB ポートにし (px4:000000000000001_1-2.3:0)、px4dを--device <番号> --usb-path <USBポート> --instance <名前>で起こし、px4ctlやソケットも その名前で呼びます (SPEC 4.1)。差すポートを変えると別のチューナーになります (px4-userland も「抜き差し後の物理個体は保証しない」と言っています)
衛星の LNB 給電
Section titled “衛星の LNB 給電”- 15V は2段階で許可します。
px4dには--allow-lnb-powerを渡し、実際に要求するのは 設定にlnb: 15vと書いたチューナーだけ (TUNE のlnb_voltage= 15)。11vは px4-userland に無い (0V か 15V) ので要求しません - 15V を出せない受信機では 0V で選局します (
Px4Tuner.Lnb)。px4-userland 0.1.8 から、 1受信機の機種 (PX-M1UR / DTV02-1T1S-U / DTV02A-1T1S-U) は 15V の要求を--allow-lnb-powerがあっても UNSUPPORTED で断ります (給電の経路が無い)。そのまま要求すると 衛星の選局が全部落ちるので、lnb: 15vと書いてあっても 0V で合わせ、記録に1度と、 設定の「受信」の「チューナー」のそのチューナーの欄 (空いているときのerror) に理由を出します。0V での衛星受信は これらの機種の対応範囲で、アンテナがほかの機器から給電されていれば受かります (給電が無ければ「同期しませんでした」)。出せるかどうかは一覧の受信機のlnb_15v_supportedで、px4ctl listには載らないので、px4d を起こす前に一覧で聞いて 写します。一覧を聞けなかったときは言われたとおりに要求します
ファームウェア
Section titled “ファームウェア”ファームウェアは同梱しています。 IT930x は挿すたびにホストから RAM へ
ファームウェアを流し込み、px4-userland は受理する版を SHA-256 で1つに固定して
います。イメージをビルドするとき (Mac と Windows は install.sh / install.ps1 が入れるとき) に、PLEX 公式の Windows ドライバ
(pxw3u4_BDA_ver1x64.zip の PXW3U4.sys、著作権表示は Digital Warrior Corp.) から
切り出します (0x287d0 から 2,169 バイト)。配布 zip・.sys・切り出したものの3つを
ハッシュで確かめます。
再配布の許諾は誰も持っていません。 権利者が動いていないことを当てにした判断です。 px4-userland 本体は方針として同梱しない (SPEC 4.5) ので、そこはこちらが背負います。
確かめたこと
Section titled “確かめたこと”実機には当てていません (手元の機材は PT3)。確かめたのは、機材に触らない部分
(px4d --list-json / px4ctl list の読み方・device 文字列・TUNE の中身・受信機と内蔵カードの IPC)
と、配布物の CLI が期待どおりの引数を受けることです。テストは Px4Tests.cs /
Px4TunerTests.cs / Px4CardTests.cs で (受信機とカードは px4d のふりをしたソケット相手)、出力の形式は px4-userland の SPEC 4.6 と自身のテストの期待値に
合わせてあります。実機で当てるのは
denpa-agent --tune px4:<筐体の番号>:2 T27 (Probe.cs)。