前提条件
- Raspberry Pi 2 Model B
- BUFFALO WI-U2-433DM (使いたい Wi-Fi アダプタ)
- Realtek RTL8811AU (アダプタに搭載されたチップ)
uname -r
の結果
6.6.20+rpt-rpi-v7 (インストール初期)
6.6.31+rpt-rpi-v7 (DKMS 動作確認)
まず、Wi-Fi アダプタを RasPi へ接続し、lsusb
コマンドでデバイスを確認しておく。
802.11ac WLAN Adapter
として認識されていることがわかる。
Bus 001 Device 004: ID 0411:0242 BUFFALO INC. (formerly MelCo., Inc.) 802.11ac WLAN Adapter
Bus 001 Device 003: ID 0424:ec00 Microchip Technology, Inc. (formerly SMSC) SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Microchip Technology, Inc. (formerly SMSC) SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
忙しい人向け手順
Raspberry Pi 2 で試したところ、30分はかかった。
sudo apt update
sudo apt install build-essential git raspberrypi-kernel-headers dkms -y
mkdir gnab
cd gnab
git clone https://github.com/gnab/rtl8812au.git
cd rtl8812au
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
make -j4
sudo make install # たくさん時間がかかる
sudo make dkms_install ## もっと時間がかかる
手順
概要
次の GitHub リポジトリの RTL8812 向けドライバをインストールした。
使っているアダプタのチップは RTL8811AU だが、RTL8812 向けドライバでも動くらしい。
ただ、他にも試したリポジトリはあるが、コンパイルに失敗したり、動かなかったりした。
以降は、https://github.com/gnab/rtl8812au.git に記載されたインストール手順を見ながら実行した。
インストール
ドライバのビルドに最低限必要なパッケージを導入する。
sudo apt update
sudo apt install vim build-essential git raspberrypi-kernel-headers -y
GitHub リポジトリをダウンロードする。(ホームディレクトリ内で作業している)
mkdir gnab
cd gnab
git clone https://github.com/gnab/rtl8812au.git
cd rtl8812au
Raspberry Pi 向けに Makefile の中身を書き換える。(ビルド対象のアーキテクチャを x86 から変更している)
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
先程のコマンドを実行すると、rtl8812au ディレクトリの中の Makefile が次のように変更されているはずなので、vi Makefile
で確認する。
CONFIG_PLATFORM_I386_PC = n # 57行目 y => n
CONFIG_PLATFORM_ARM_RPI = n # 63行目 n => y
make
でドライバをビルドする。(-j4 オプションで CPU を4コア並列でコンパイル実行)
make -j4
make
コマンドが失敗してしまったときは、make clean
で中間ファイルなどを削除する。
make claen
ビルド作業で生成された 8812au.ko
を make install
で所定の場所にインストールする。
sudo make install
wpa_supplicant.conf
を編集し、接続先 Wi-FI の情報を登録する。
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="SSID"
psk="Password"
}
Raspberry Pi を再起動後、ip a
で Wi-Fi アダプタの認識を確認する。
wlan0
の項目があれば、ドライバが認識されているはず。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether b8:27:eb:19:cc:51 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether cc:e1:d5:29:80:c0 brd ff:ff:ff:ff:ff:ff
DKMS インストール
sudo apt upgrade
などで OS Kernel のバージョンが上がると、ドライバが使用できなくなる。
Kernel のバージョンが上がっても、更新時に自動的に再構築してインストールするため DKMS を使う。
sudo apt install dkms -y
次のコマンドでドライバーを DKMS にインストールする。
sudo make dkms_install
ドライバを削除するときは、次のコマンドで削除できる。
sudo make dkms_remove
最後に
Raspberry Pi 2B には Wi-Fi モジュールが搭載されていないため、Wi-Fi へ接続するには USB 接続の Wi-Fi アダプタ(ドングル)を使う必要があります。
IEEE802.11ac が使えるアダプタをフリマアプリで探して、見つかったものを確認せずに購入したところ、見事に Linux ドライバをインストールしてからでないと利用できない製品を入手したため、インストール手順を備忘録として残しました。
使えるドライバを探すのに苦労しました。ただ、アップデートによって使えなくなるかもしれません。