😺
jetson nanoでWiFiドングルElecom WDC-433DU2HBK を使う
先日の記事、jetson nano でWiFiを使うで使ったWiFiドングルと同じチップのはずのElecom WDC-433DU2HBKは、挿してもドライバーが入りません。
これは少しの修正でいけるはずなので、やってみました。
ベンダID,プロダクトIDの確認
$ lsusb |grep Elecom
Bus 001 Device 005: ID 056e:4007 Elecom Co., Ltd WDC-433DU2HBK
ベンダID,プロダクトIDの追加
認識されるドングルは以下のようなベンダID,プロダクトIDなので、この数値をセットしている箇所を探します。
Bus 001 Device 004: ID 0bda:0811 Realtek Semiconductor Corp.
さきほどの記事、jetson nanoのカーネルをソースからビルドするの環境で
Linux_for_Tegra/source/public/kernel/nvidia/drivers/net/wireless/realtek/rtl8821au/os_dep/linux
で
$ diff -u usb_intf.c{.org,}
--- usb_intf.c.org 2022-02-16 06:20:27.000000000 +0000
+++ usb_intf.c 2022-05-15 06:57:39.226562297 +0000
@@ -192,6 +192,7 @@
{USB_DEVICE(0x0E66, 0x0023), .driver_info = RTL8821}, /* HAWKING - Edimax */
{USB_DEVICE(0x056E, 0x400E) , .driver_info = RTL8821}, /* ELECOM - ELECOM */
{USB_DEVICE(0x056E, 0x400F) , .driver_info = RTL8821}, /* ELECOM - ELECOM */
+ {USB_DEVICE(0x056E, 0x4007) , .driver_info = RTL8821}, /* ELECOM - WDC-433DU2HBK */
{USB_DEVICE(0x20f4, 0x804b), .driver_info = RTL8821}, /* TRENDnet */
{USB_DEVICE(0x2357, 0x0120), .driver_info = RTL8821}, /* TP-Link - Archer T2U Plus */
{USB_DEVICE(0x2357, 0x011E), .driver_info = RTL8821}, /* TP-Link - Archer T2U Nano */
注意 : rtl8812au, rtl8814au, rtl8821au, rtl8821cu, rtl8822buと似たような構成のディレクトリがありますが、修正するのはrtl8821auのものです。私は最初にこれを取り違えてハマりました。
カーネルモジュールをビルド
TOPDIR
にビルドディテクトリが入っているものとして
$ export CROSS_COMPILE=$(pwd)/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
$ export LOCALVERSION=-tegra
$ cd Linux_for_Tegra/source/public/kernel/kernel-4.9/
$ TEGRA_KERNEL_OUT=$TOPDIR/t4l-kernel
$ nohup make ARCH=arm64 O=$TEGRA_KERNEL_OUT -j`nproc` modules &
drivers/net/wireless/realtek/rtl8821au/rtl8821au.ko
が再作成されました。
これをjetson nanoにコピーします。
カーネルモジュールのインストール
jetson nanoで
$ cd /lib/modules/4.9.253-tegra/kernel/drivers/net/wireless/realtek/rtl8821au/
$ sudo mv rtl8821au.ko{,.old}
$ sudo cp ~/rtl8821au.ko .
$ sudo depmod
$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 5000M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/5p, 480M
|__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=, 480M
|__ Port 4: Dev 4, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 4: Dev 4, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M
WiFiドングルを再度抜き差しする。
$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 5000M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/5p, 480M
|__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 6, If 0, Class=Vendor Specific Class, Driver=rtl8821au, 480M
|__ Port 4: Dev 5, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 5, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 4: Dev 5, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 5, If 0, Class=Video, Driver=uvcvideo, 480M
今度はDriver=rtl8821au
になりました。
あとは以下の記事の通りでWiFiが使えるようになります。
jetson nano でWiFiを使う
Discussion