この記事について
自分用の構築手順メモです。
基本的にGitHubで公開されているrepositoryのREADMEの手順通りに導入すれば動くのですが、たまに実行する時に嵌って時間を溶かすので備忘録を残します。
補足
自分の確認(2022.11.26)した範囲で、2021年10月まではfars-robotics.net/wifi-driversにbuild済みドライバーを提供下さっている方がいましたが現在は更新されていません。
利用可能な構築方法は多くの記事で紹介されていますが(例えばこちらの「Ubuntu 22.04のWIFIドライバ設定(rtl8812au)」など)、2022年2月より本稿執筆点までの期間においてはaircrack-ng@GitHubで公開されている手順に従うのが一番確実でした。
作業環境
Raspberry Pi: Raspberry Pi 4 Model B Rev 1.2
OS: Raspberry Pi OS Lite 64-bitまたは32-bit (Raspbian GNU/Linux 11 (bullseye))
USB Wifi adapter(NIC): Archer T2U Nano
導入手順
パッケージ導入
Raspberry Pi OSはLiteを使う場合はgitのインストールが必要になります。
$ sudo apt install git -y
カーネルのソースツリーの外にソースが存在する Linux カーネルモジュールを生成するにはDynamic Kernel Module Support (DKMS)が必要になります。
$ sudo apt install dkms -y
更新して一度再起動します。
$ sudo apt update && sudo apt upgrade -y
$ sudo reboot
8812au diver source code取得
aircrack-ng@GitHubからcloneします。
$ git clone -b v5.6.4.2 https://github.com/aircrack-ng/rtl8812au.git
依存関係
カーネルソースを取得します。
$ cd rtl8812au
$ sudo apt install raspberrypi-kernel-headers -y
$ CURRENT_VER=$(uname -r)
$ sudo ln -s /usr/src/linux-headers-${CURRENT_VER}/arch/arm/ /usr/src/linux-headers-${CURRENT_VER}/arch/armv7l
Makefile
プラットフォームをARM architectureに変更します。
$ sed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile
$ sed -i 's/CONFIG_PLATFORM_ARM_RPI = n/CONFIG_PLATFORM_ARM_RPI = y/g' Makefile
$ sed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile
$ sed -i 's/CONFIG_PLATFORM_ARM64_RPI = n/CONFIG_PLATFORM_ARM64_RPI = y/g' Makefile
errorが表示された場合は次のコマンドを実行します。
$ export ARCH=arm
$ sed -i 's/^MAKE="/MAKE="ARCH=arm\ /' dkms.conf
$ export ARCH=arm64
$ sed -i 's/^MAKE="/MAKE="ARCH=arm64\ /' dkms.conf
install/build
$ sudo make dkms_install
$ make && sudo make install
再起動
$ sudo reboot
確認
Archer T2U Nanoがwlan1でAPとして機能していることが確認できました。
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 2357:011e TP-Link AC600 wireless Realtek RTL8811AU [Archer T2U Nano]
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ ip a
・
・
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
inet 192.168.XX.XXX/24 brd 192.168.XX.255 scope global noprefixroute wlan0
・
・
4: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
inet 192.168.XX.XXX/24 brd 192.168.XX.255 scope global noprefixroute wlan1
・
・
$ iw dev
phy#1
Interface wlan1
ifindex 4
wdev 0x100000001
addr XX:XX:XX:XX:XX:XX
ssid TP-Link_XXXX
type AP
txpower 19.00 dBm
phy#0
Unnamed/non-netdev interface
wdev 0x2
addr XX:XX:XX:XX:XX:XX
type P2P-device
txpower 31.00 dBm
Interface wlan0
ifindex 3
wdev 0x1
addr XX:XX:XX:XX:XX:XX
ssid TP-Link_XXXX
type managed
channel 40 (5200 MHz), width: 80 MHz, center1: 5210 MHz
txpower 31.00 dBm