ELECOMのWDC-150SU2MをZYNQのLinuxから使う
Zynqberryスタータキットで使っていたPlanexのGW-USNANO2Aが販売終了になってしまいました。
GW-USNANO2AのチップはRealtekのRTL8192CUというもので、ファームウェアもドライバもあり、ARM系Linuxで唯一使えていたWiFiアダプタだったのですが、これはちょっとダメージ大きいですね。
RTL8192CUを使ったUSB-WiFiが他にないかと探したのですが、無そうでした。
現時点で入手性が良くて価格も安くコンパクトなものは、WDC-150SU2MBKまたはWDC-150SU2MWです。最後のBKとWはおそらく色なので、正式名称はWDC-150SU2Mでしょう。
このUSB-WiFiが搭載しているチップは、RealTekのRTL8188EUSというものです。
残念なことにLinux用のドライバは正式にはリリースされていませんが、有志の人が作ってくれているようなので、それをダウンロードしてコンパイルすることにします。
以下、クロスビルド用のデスクトップPCで作業します。このPCはLinuxカーネルをコンパイルしたPCで、カーネルのソースが/home/naitou/linux-xlnxにあると仮定します。
まず、lwfingerさんのgitからrtl8188eu用のドライバをcloneしてきます。
$ git clone https://github.com/lwfinger/rtl8188eu.git
これをコンパイルする前にあらかじめCROSS_COMPILEのエクスポートや、Xilinx SDKの環境設定スクリプトを呼んでおきます。
$ export CROSS_COMPILE=arm-linux-gnueabihf-
$ source /opt/Xilinx/SDK/2017.4/settings64.sh ← 環境に応じて変えよ
ビルドは以下のコマンドで行います。
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KSRC=/home/naitou/linux-xlnx
KSRCでLinuxカーネルのソースが入ったディレクトリを指示するのがポイントです。
ビルドが終わると以下のようなファイルが出来上がっていまs。
naitou@ubuntu:~/rtl8188eu$ ls -al
合計 2072
drwxrwxr-x 9 naitou naitou 4096 9月 30 23:25 .
drwxrwxrwx 56 naitou naitou 4096 9月 30 23:18 ..
-rw-rw-r-- 1 naitou naitou 226 9月 30 23:25 .8188eu.ko.cmd
-rw-rw-r-- 1 naitou naitou 20765 9月 30 23:25 .8188eu.mod.o.cmd
-rw-rw-r-- 1 naitou naitou 2711 9月 30 23:25 .8188eu.o.cmd
drwxrwxr-x 8 naitou naitou 4096 9月 30 23:18 .git
-rw-rw-r-- 1 naitou naitou 1106 9月 30 23:18 .gitignore
drwxrwxr-x 2 naitou naitou 4096 9月 30 23:25 .tmp_versions
-rw-rw-r-- 1 naitou naitou 983892 9月 30 23:25 8188eu.ko
-rw-rw-r-- 1 naitou naitou 8061 9月 30 23:25 8188eu.mod.c
-rw-rw-r-- 1 naitou naitou 10864 9月 30 23:25 8188eu.mod.o
-rw-rw-r-- 1 naitou naitou 973736 9月 30 23:25 8188eu.o
-rw-rw-r-- 1 naitou naitou 18693 9月 30 23:18 COPYING
-rw-rw-r-- 1 naitou naitou 4088 9月 30 23:18 Makefile
-rw-rw-r-- 1 naitou naitou 0 9月 30 23:25 Module.symvers
-rw-rw-r-- 1 naitou naitou 1491 9月 30 23:18 README.md
-rwxrwxr-x 1 naitou naitou 4199 9月 30 23:18 control_ap
drwxrwxr-x 2 naitou naitou 4096 9月 30 23:24 core
-rw-rw-r-- 1 naitou naitou 208 9月 30 23:18 dkms.conf
drwxrwxr-x 2 naitou naitou 4096 9月 30 23:25 hal
drwxrwxr-x 4 naitou naitou 4096 9月 30 23:18 hostapd-0.8
drwxrwxr-x 2 naitou naitou 4096 9月 30 23:18 include
-rw-rw-r-- 1 naitou naitou 40 9月 30 23:25 modules.order
drwxrwxr-x 2 naitou naitou 4096 9月 30 23:25 os_dep
-rw-rw-r-- 1 naitou naitou 13904 9月 30 23:18 rtl8188eufw.bin
-rw-rw-r-- 1 naitou naitou 1820 9月 30 23:18 rtl_hostapd.conf
この中の8188eu.koがドライバで、rtl8188eufw.binがファームウェアです。
この2つのファイルをターゲットボードにコピーします。8188eu.koをターゲットボードの/lib/modules/4.9.0-xilinx-00027-g9c2e29b/kernel/drivers/にコピーし、rtl8188eufw.binを/lib/firmware/と/lib/firmware/rtlwifi/にコピーします。
そうしたら
insmod /lib/modules/4.9.0-xilinx-00027-g9c2e29b/kernel/drivers/8188eu.ko
でインストールできます。
ifconfigまたはip addrで無線LANが存在していることを確認します。
iwlist scanでも確認します。
ただ、WDC-150SU2Mとwpa_supplicantの相性は悪いようで、Ubuntu 18でNetworkManagerを使わないとその後の通信には成功しませんでした。
wpa_supplicantを使って接続する場合は、
wpa_supplicant -iwlan1 -D wext -c/etc/wpa_supplicant/wpa_supplicant.conf
と指定しなければなりませんでしたが、これでも接続には成功していません。nl80211ではなくwextという別のドライバを使うという意味であるようです。
| 固定リンク
コメント