Raspberry Pi にAC1300規格無線LANドライバー(rtl88x2bu)をインストールする

## この記事について  
構築手順の備忘録です。

自宅ネットワークを構築する際に高出力のアダプターを使いたくて、こちらの[repository(cilynx/rtl88x2bu)](https://github.com/cilynx/rtl88x2bu)を使わせて頂きました。

~~なお、[8812au](https://qiita.com/nsaito9628/items/ade3aa719a71f323b142)で利用したrepositoryと異なり~~64bitOSでの利用もできます。(記事作成時は上手く動かなかったのですがいつごろからか動くように、詳細は記録していません)~~はできません。~~

## 作業環境
 
**Raspberry Pi:** Raspberry Pi 4 Model B Rev 1.2
**OS:** Raspberry Pi OS DesktopまたはLite 32-bit (Raspbian GNU/Linux 11 (bullseye))
**USB Wifi adapter:** Realtek Semiconductor Corp. RTL88x2bu [AC1200 Techkey]  

## 導入手順

#### パッケージ導入
Raspberry Pi OSはLiteを使う場合はgitのインストールが必要になります。
```
$ sudo apt install git -y
```
カーネルのソースツリーの外にソースが存在する Linux カーネルモジュールを生成するには[Dynamic Kernel Module Support (DKMS)](https://wiki.archlinux.jp/index.php/Dynamic_Kernel_Module_Support)が必要になります。 
```
$ sudo apt install dkms -y
```
packageの依存関係をインストールします。~~この構成だとlibssl-devとlibffi-devは不要かもしれません。オリジナルではbcが必要と書かれていましたが無くてもbuild/installが通りました~~ **【2022.12.20訂正】** bcもあった方がよさそうです、libssl-dev libffi-devは無くても通ってるので消しておきます(2022.12.20)。
```
$ sudo apt install build-essential bc -y
```
更新して一度再起動します。
```
$ sudo apt update && sudo apt upgrade -y
$ sudo reboot
```


#### 88x2bu diver source code取得
[cilynx@GitHub](https://github.com/cilynx/rtl88x2bu)からcloneします。
```
$ git clone https://github.com/cilynx/rtl88x2bu
```

#### 依存関係
カーネルソースを取得します。
```
$ cd rtl88x2bu/
$ sudo apt install raspberrypi-kernel-headers -y
```
#### Makefile 
プラットフォームをARM architectureに変更します。
```
$ sed -i 's/I386_PC = y/I386_PC = n/' Makefile
$ sed -i 's/ARM_RPI = n/ARM_RPI = y/' Makefile
```

#### install/build
```
$ VER=$(sed -n 's/\PACKAGE_VERSION="\(.*\)"/\1/p' dkms.conf)
$ sudo rsync -rvhP ./ /usr/src/rtl88x2bu-${VER}
$ sudo dkms add -m rtl88x2bu -v ${VER}
$ sudo dkms build -m rtl88x2bu -v ${VER} # Takes ~3-minutes on a 3B+
$ sudo dkms install -m rtl88x2bu -v ${VER}
```

#### 再起動
```
$ sudo reboot
```


## 確認
wlan0とwlan1が起動できました。
```
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0bda:b812 Realtek Semiconductor Corp. RTL88x2bu [AC1200 Techkey]
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
```