Raspberry Pi 2でWiFiドングル BUFFALO WI-U2-433DMを使う

Raspbian jessi, kernel 4.1.10-v7+ を使っています。

WI-U2-433DM エアステーション 11ac/n/a/g/b 433/150Mbps USB2.0用 無線LAN子機 : Wi-Fiアダプター | バッファロー
このWiFiドングルのチップはrtl8811auで、そのドライバは以下のサイトから入手できます。
https://github.com/gnab/rtl8812au

$ git clone https://github.com/gnab/rtl8812au.git
$ cd rtl8812au

ロスコンパイルするために以下のようにMakefileを変更します。

diff --git a/Makefile b/Makefile
index b79a7d8..564efd8 100644
--- a/Makefile
+++ b/Makefile
@@ -49,13 +49,14 @@ CONFIG_EXT_CLK = n
 CONFIG_FTP_PROTECT = n
 CONFIG_WOWLAN = n
 
-CONFIG_PLATFORM_I386_PC = y
+CONFIG_PLATFORM_I386_PC = n
 CONFIG_PLATFORM_ANDROID_X86 = n
 CONFIG_PLATFORM_JB_X86 = n
 CONFIG_PLATFORM_ARM_S3C2K4 = n
 CONFIG_PLATFORM_ARM_PXA2XX = n
 CONFIG_PLATFORM_ARM_S3C6K4 = n
 CONFIG_PLATFORM_ARM_RPI = n
+CONFIG_PLATFORM_ARM_RPI_CROSS = y
 CONFIG_PLATFORM_MIPS_RMI = n
 CONFIG_PLATFORM_RTD2880B = n
 CONFIG_PLATFORM_MIPS_AR9132 = n
@@ -738,6 +739,15 @@ KSRC ?= /lib/modules/$(KVER)/build
 MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
 endif
 
+ifeq ($(CONFIG_PLATFORM_ARM_RPI_CROSS), y)
+EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
+ARCH := arm
+CROSS_COMPILE := arm-linux-gnueabihf-
+KVER  := 4.1.10-v7+
+KSRC ?= $(HOME)/work/raspi/linux
+MODDESTDIR := 
+endif
+
 ifeq ($(CONFIG_PLATFORM_RTD2880B), y)
 EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN -DCONFIG_PLATFORM_RTD2880B
 ARCH:=

make してできた8812au.ko をRaspberry Pi 2 の /lib/modules/4.1.10-v7+/ にコピーし、

$ sudo depmod

を実行して、モジュールの依存関係を更新します。

WiFiアクセスポイントの登録はRaspberry Pi 2でWiFiを使う - 組み込みの人。の通り。

BUFFALO WI-U2-433DMを挿したときのカーネルログは以下の通り。

[  160.521582] usb 1-1.5: new high-speed USB device number 4 using dwc_otg
[  160.622988] usb 1-1.5: New USB device found, idVendor=0411, idProduct=0242
[  160.623017] usb 1-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  160.623035] usb 1-1.5: Product: 802.11ac WLAN Adapter 
[  160.623051] usb 1-1.5: Manufacturer: Realtek 
[  160.623068] usb 1-1.5: SerialNumber: 00e04c000001
[  161.213418] usbcore: registered new interface driver rtl8812au
[  161.747741] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[  162.416979] RTL871X: set bssid:00:00:00:00:00:00
[  162.418093] RTL871X: set ssid [g\xffffffc6isQ\xffffffffJ\xffffffec)ͺ\xffffffab\xfffffff2\xfffffffb\xffffffe3F|\xffffffc2T\xfffffff8xffffffe8\xffffffe7\xffffff8dvZ.c3\xffffff9fɚ ] fw_state=0x00000008
[  165.718720] RTL871X: set ssid [0024A52FB295] fw_state=0x00000008
[  165.718911] RTL871X: set bssid:00:24:a5:2f:b2:95
[  165.950915] RTL871X: start auth
[  165.960182] RTL871X: auth success, start assoc
[  165.967813] RTL871X: assoc success
[  165.969984] UpdateHalRAMask8812A => mac_id:0, networkType:0x0b, mask:0x000fffff
	 ==> rssi_level:0, rate_bitmap:0x000ff005
[  165.993282] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[  166.090729] RTL871X: send eapol packet
[  166.149026] RTL871X: send eapol packet
[  166.157988] RTL871X: set pairwise key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4) camid:4
[  166.158044] RTL871X: set group key to hw: alg:2(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:2
[  171.744734] UpdateHalRAMask8812A => mac_id:0, networkType:0x0b, mask:0x000fffff
	 ==> rssi_level:1, rate_bitmap:0x000f0000

接続して使用可能になりました。

関連
Raspberry Pi 2でWiFiを使う - 組み込みの人。
Raspberry Pi 2のカーネルをビルドしてみた - 組み込みの人。