Raspberry Pi 4 Model B 8GB で PLEX PX-S1UD V2.0 を使用してみました。
OS
OS は Raspberry Pi OS (旧 Raspbian) ではなく Ubuntu を使用しました。2020 年 7 月の時点では Raspberry Pi OS は 32bit 版しか提供されておらず、 64bit 版はベータのテストバージョンです。一方、Ubuntu は公式に Raspberry Pi 4 向けの 64bit 版が提供されています。また、私は自作 PC でも Ubuntu を使用しているため、そこでのノウハウを横展開できる利点もあります。
Raspberry Pi 4 Model B 8GB にインストールした Ubuntu のバージョンは 20.04 です。インストールについは下記の通り、別途投稿しています。
PX-W3U4 ドライバのインストール
PX-W3U4 の Linux 向けドライバは販売元の PLEX から提供されていますが、最終更新が 2018 年と古く、サポート対象外であり、対応するディストリビューションとそのバージョン、カーネルのバージョンも固定的です。
http://www.plex-net.co.jp/download/
一方で、PLEX 公式とは別に GitHub で、【px4_drv – Unofficial Linux driver for PLEX PX4/PX5/PX-MLT series ISDB-T/S receivers】が公開されています。
Unofficial Linux driver for PLEX PX4/PX5/PX-MLT series ISDB-…
ソースコードとインストール方法が記載されており、基本的に Linux であれば動作すると思われるため、こちらを使用します。
Ubuntu で PX-W3U4 を使用するユーザーを video グループに入れ、OS を再起動します (ログオフでもよいです) 。
sudo gpasswd -a $USER video
sudo reboot
続いて、私にとって必要と思われるパッケージをインストールします。
sudo apt install -y build-essential git wget libasound2-dev \
autoconf libtool pcsc-tools pkg-config libpcsclite-dev pcscd \
cmake yasm curl ssh dkms unzip
これでドライバをインストールする準備が整いました。
ここで、PX-W3U4 を Raspberry Pi 4 に接続します。接続後、dmesg コマンドを実行すると、下記のような出力がされていました。新しい デバイスとしては認識されています。
[ 6342.003444] usb 1-1.1: new high-speed USB device number 6 using xhci_hcd
[ 6342.108145] usb 1-1.1: New USB device found, idVendor=0511, idProduct=083f, bcdDevice= 1.00
[ 6342.108162] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6342.108173] usb 1-1.1: Product: W3U4
[ 6342.108184] usb 1-1.1: Manufacturer: PLEX̀
[ 6342.108194] usb 1-1.1: SerialNumber:
以下のコマンドを一気に実行します。適当な作業用ディレクトリを作成し、そこで作業しています。
mkdir ~/working_directory && \
cd ~/working_directory && \
git clone https://github.com/nns779/px4_drv && \
cd px4_drv/fwtool/ && \
make -j$(nproc) && \
curl -O http://plex-net.co.jp/plex/pxw3u4/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 && \
sudo cp it930x-firmware.bin /lib/firmware/ && \
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 modprobe px4_drv
再度、dmesg コマンドを実行すると、下記のような出力がされていました。px4video0 から px4video3 まで 4 つのチューナーデバイスが認 識されています。
[ 6648.548568] px4_drv: loading out-of-tree module taints kernel.
[ 6648.552764] px4_drv: px4_drv version 0.4.0, rev: 319, commit: d528b9b6afd43106c5d541073514adb35d43576f @ develop
[ 6648.661177] px4_usb 1-1.1:1.0: Firmware loaded. version: 1.4.0.0
[ 6648.797566] px4_usb 1-1.1:1.0: /dev/px4video0
[ 6648.797733] px4_usb 1-1.1:1.0: /dev/px4video1
[ 6648.797811] px4_usb 1-1.1:1.0: /dev/px4video2
[ 6648.797878] px4_usb 1-1.1:1.0: /dev/px4video3
[ 6648.798012] usbcore: registered new interface driver px4_usb
ls コマンドでも確認できます。
$ ls -al /dev/px*
crw-rw-r-- 1 root video 507, 0 May 16 17:39 /dev/px4video0
crw-rw-r-- 1 root video 507, 1 May 16 17:39 /dev/px4video1
crw-rw-r-- 1 root video 507, 2 May 16 17:39 /dev/px4video2
crw-rw-r-- 1 root video 507, 3 May 16 17:39 /dev/px4video3
PX-W3U4 の動作確認
recpt1 を使用しました。recpt1 は複数存在しますが、GitHub で公開されている下記のものを使用しました。
PT1/PT2/PT3をLinuxで使う為の録画ツール(STZ版). Contribute to stz2012/rec…
ソースコードを一部修正しつつインストールします。
cd ~/working_directory && \
git clone https://github.com/stz2012/recpt1.git && \
cd recpt1/recpt1 && \
sed -i -e "/^char \*bsdev\[NUM_BSDEV\] = {$/a \ \ \ \ \"/dev/px4video1\",\n\ \ \ \ \"/dev/px4video0\"," pt1_dev.h && \
sed -i -e "/^char \*isdb_t_dev\[NUM_ISDB_T_DEV\] = {$/a \ \ \ \ \"/dev/px4video2\",\n\ \ \ \ \"/dev/px4video3\"," pt1_dev.h &&
./autogen.sh && \
./configure && \
make -j$(nproc) && \
sudo make install
各チューナーデバイスと方式の対応は下記の通りです。
/dev/px4video0 | ISDB-S | 衛星 |
/dev/px4video1 | ISDB-S | 衛星 |
/dev/px4video2 | ISDB-T | 地上 |
/dev/px4video3 | ISDB-T | 地上 |
各チューナーデバイスで任意のチャンネルを設定し、10秒間キャプチャしてみます。
recpt1 --device /dev/px4video0 <bs_ch> 10 <bs_ch>.ts
recpt1 --device /dev/px4video1 <bs_ch> 10 <bs_ch>.ts
recpt1 --device /dev/px4video2 <gr_ch> 10 <gr_ch>.ts
recpt1 --device /dev/px4video3 <gr_ch> 10 <gr_ch>.ts
暗号化されたストリームが出力されます。