広告

PX-W3U4 の Ubuntu 18.04 向け Linux 用ドライバがリリースされたと聞いて

2018-07-01

最新の LTS を使うウブンツァーに朗報です。これまで、Ubuntu では 14.04 と 17.10 向けにしか提供されていなかった PX-W3U4 のドライバですが、Ubuntu 18.04 向けも提供されるようになりました。

環境

  • Ubuntu 18.04 (4.15.0-23-generic)
  • PX-W3U4

動作確認

PX-W3U4 を挿してみて lsusb を実行してみます。

Bus 003 Device 014: ID 0511:083f N'Able (DataBook) Technologies, Inc.

dmesg の結果を確認してみます。

[  373.017196] usb 3-9: new high-speed USB device number 28 using xhci_hcd
[  373.169928] usb 3-9: New USB device found, idVendor=0511, idProduct=083f
[  373.169934] usb 3-9: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  373.169938] usb 3-9: Product: W3U4
[  373.169942] usb 3-9: Manufacturer: PLEX̀
[  373.169946] usb 3-9: SerialNumber: 00000xxxxxxxxxx

ドライバをダウンロードして insmod してみます。

curl -O http://plex-net.co.jp/plex/linux/Ubuntu18.04_64bit_kernel4.15.0-23.zip
unzip Ubuntu18.04_64bit_kernel4.15.0-23.zip
cd Ubuntu18.04_64bit_kernel4.15.0-23
sudo insmod tty_Virtual.ko
sudo insmod usb-px4.ko

再度、dmesg の結果を確認してみます。usb-px4 が登録されました。

[  850.808417] tty0tty null modem driver v16.03.23.1
[  863.294563] - Enter IT930x_module_init Function -
[  863.294585] ======================================================
[  863.294585] DRIVER_RELEASE_VERSION: 		v18.06.04.1
[  863.294586] ENDEAVOUR_FW_RELEASE_VERSION:	v0_0_0_0
[  863.294587] ENDEAVOUR_FW_RELEASE_LINK_VERSION:	255.4.0.0
[  863.294588] ENDEAVOUR_FW_RELEASE_OFDM_VERSION:	255.0.0.0
[  863.294589] FW_RELEASE_LINK_VERSION:		12.53.14.0
[  863.294590] FW_RELEASE_OFDM_VERSION:		2.43.14.0
[  863.294591] API_RX_RELEASE_VERSION:		203.20140107.0
[  863.294591] Company:ITEtech
[  863.294592] ======================================================
[  863.294592] ===== it930x usb device pluged in =====
[  863.294593] - Enter IT930x_probe Function -
[  863.295274] Device test ok
[  863.296041] Device test ok
[  863.296917] Device test ok
[  863.297560] Device test ok
[  863.298204] Device test ok
[  863.298539] EEPROM - ========== Can read eeprom
[  863.299592] EEPROM - Board ID: 80
[  863.299925] EEPROM - Number of IT9300 is 1
[  863.300645] EEPROM - BR Chip Version is 1, BR Chip Type is 0x9306
[  863.301013] EEPROM - Mapp disalbe, Rx device ID using default
[  863.301015] EEPROM - Device_ID = 65535
[  863.301016] - DRV_GET_RX_ID success -
[  863.301017] EEPROM - 0, 0, RxDevice_ID = 65535
[  863.301027] EEPROM - 0, 1, RxDevice_ID = 65534
[  863.301028] EEPROM - 0, 2, RxDevice_ID = 65533
[  863.301029] EEPROM - 0, 3, RxDevice_ID = 65532
[  863.301030] - DRV_GetEEPROMConfig success -
[  863.301032] (Jacky)(IT930x_probe) URB_BUFSIZE : 153408
[  863.301032] (Jacky)(IT930x_probe) URB_COUNT : 16
[  863.301033] (Jacky)(IT930x_probe) dev->chip[0]->dwTolBufferSize : 2454528
[  863.301060] (Jacky)(IT930x_probe) URB_BUFSIZE : 153408
[  863.301061] (Jacky)(IT930x_probe) URB_COUNT : 16
[  863.301063] (Jacky)(IT930x_probe) dev->chip[1]->dwTolBufferSize : 2454528
[  863.301078] (Jacky)(IT930x_probe) URB_BUFSIZE : 153408
[  863.301079] (Jacky)(IT930x_probe) URB_COUNT : 16
[  863.301080] (Jacky)(IT930x_probe) dev->chip[2]->dwTolBufferSize : 2454528
[  863.301095] (Jacky)(IT930x_probe) URB_BUFSIZE : 153408
[  863.301096] (Jacky)(IT930x_probe) URB_COUNT : 16
[  863.301097] (Jacky)(IT930x_probe) dev->chip[3]->dwTolBufferSize : 2454528
[  863.301108] --- URB_BUFSIZE:153408 ---
[  863.301848] (Jacky)(IT930x_probe) DC->it9300.firmwareVersion : 0x0
[  863.301849] --- RESET PSB buffer ---
[  863.356004] - Enter DRV_IT930x_device_init Function -
[  863.357018] 0xF53A = 0,  0xDA98 = 0x0,  0xDA99 = 0x0
[  863.450399] IT9300_initialize ok
[  863.450709] IT9300_bcasInit OK
[  863.450713] syncByte = 0x40
[  863.451026] 0, 0 Ts Source Set in TsType OK!
[  863.451647] syncByte = 0x41
[  863.451649] 0, 1 Ts Source Set in TsType OK!
[  863.452292] syncByte = 0x42
[  863.452299] 0, 2 Ts Source Set in TsType OK!
[  863.452947] syncByte = 0x43
[  863.452949] 0, 3 Ts Source Set in TsType OK!
[  863.453588] (Jacky)(IT930x_probe) URB_BUFSIZE : 153408
[  863.453590] (Jacky)(IT930x_probe) BR_URB_COUNT : 16
[  863.453591] (Jacky)(IT930x_probe) dev->br_chip->dwTolBufferSize : 2454528
[  863.453636] Throw shift data, urb length = 0
[  863.456735] REGIST - 0, 0, change RxDevice_ID = 0
[  863.456887] handle name -->> px4-DTV0
[  863.456890] REGIST - 0, 1, change RxDevice_ID = 1
[  863.456986] handle name -->> px4-DTV1
[  863.456989] REGIST - 0, 2, change RxDevice_ID = 2
[  863.457074] handle name -->> px4-DTV2
[  863.457077] REGIST - 0, 3, change RxDevice_ID = 3
[  863.457168] handle name -->> px4-DTV3
[  863.457171] - IT930x_probe success -
[  863.457276] usbcore: registered new interface driver usb-px4

lsmod を実行してみます。usb_px4 が表示されるようになりました。

lsmod | grep px4
usb_px4               454656  0
tty_Virtual            24576  1 usb_px4

デバイス名を確認してみます。

crw------- 1 root root 180, 1 Jun 29 18:53 /dev/px4-DTV0
crw------- 1 root root 180, 2 Jun 29 18:53 /dev/px4-DTV1
crw------- 1 root root 180, 3 Jun 29 18:53 /dev/px4-DTV2
crw------- 1 root root 180, 4 Jun 29 18:53 /dev/px4-DTV3

このままだと root でしか操作できないため、video グループにも権限を付与します。そうしないと後で、(tune) Cannot tune to the specified channel のようなエラーが出るかもしれません。

sudo chown root:video /dev/px4-DTV*
sudo chmod g+rw /dev/px4-DTV*

再度、確認してみます。これで video グループのユーザーが操作できます。

ls -al /dev/px4-DTV*
crw-rw---- 1 root video 180, 1 Jun 29 19:08 /dev/px4-DTV0
crw-rw---- 1 root video 180, 2 Jun 29 19:08 /dev/px4-DTV1
crw-rw---- 1 root video 180, 3 Jun 29 19:08 /dev/px4-DTV2
crw-rw---- 1 root video 180, 4 Jun 29 19:08 /dev/px4-DTV3

キャプチャ用のプログラムも提供されているようです。ダウンロードしてビルドしてインストールしてみます。

curl -O http://plex-net.co.jp/download/linux/Linux_Driver.zip
unzip Linux_Driver.zip
cd Linux_Driver/MyRecpt1/MyRecpt1/recpt1
chmod a+x configure
./configure
make
sudo make install

ここまでで、ひとまず動作確認完了です。

OS 起動対応

この状態では、OS を再起動するとドライバが読み込まれません。OS を再起動する度に手動でドライバをインストールするのも面倒なので、OS が起動する際にドライバを自動で読み込むようにしてみます。

sudo cp *.ko /lib/modules/`uname -r`/kernel/drivers/video/
sudo sh -c "echo 'KERNEL=\"px4-DTV*\", GROUP=\"video\", MODE=\"0660\"' >> /etc/udev/rules.d/99-usb_px4.rules"
sudo depmod

OS 再起動後、/dev/px4-DTV* が存在していることを確認します。

広告

PX-W3U4

Posted by admin