以前、中国で購入したお気に入りのXiaoma21ですが、帰国直前に内蔵の無線LANが壊れてしまったので、たまたま家(日本)にあったPLANEX GW-US300MiniSを使っていました。このGW-US300MiniS、WindowsでもLinuxでも使えて良いのですが、ちょっと大きくて邪魔なんです。
今回、中華PCのXiaoma21にManjaroをインストールして、サブPCとして復活したので、小型で11ac対応のTP-Link Archer T2U Nanoを購入しました。
Archer T2U Nanoの特徴
- 小さい(15×7.1×18.6mm)
挿しっぱなしでも出っ張りが1cm弱! - IEEE 802.11ac対応
- 安い!
1,500円弱で買えました! - Linuxでも使えた
メーカー公式サポートOSはWindows, Macのみ
正直、小さくて11ac対応でLinuxで使えそうな無線LANアダプタは、Archer T2U Nanoぐらいしかありませんでした。
環境
$ uname -r
5.10.89-1-MANJARO
$ lsb_release -a
LSB Version: n/a
Distributor ID: ManjaroLinux
Description: Manjaro Linux
Release: 21.2.1
Codename: Qonos
$Xiaoma21のスペックは以下のとおりです。
| Onda Xiaoma21 | |
|---|---|
| CPU | Apollo Lake N3450 |
| ディスプレイ | 12.5インチIPS |
| 解像度 | 1920×1080 |
| メモリ | 4GB |
| ストレージ | 64GB eMMC 256GB 2242サイズのM.2 SSD増設済 MicroSDカードスロット |
| 無線LAN | 内蔵無線LANはWindowsでも認識しなくなったので PLANEX GW-US300MiniS を使用 →TP-Link Archer T2U Nanoに変更します |


上の写真を見てわかるとおり、GW-US300MiniSはかなり飛び出しています!
ドライバーの選定
チップセットによってドライバーが決まるので、まずはチップセットの確認です。
Googleで「Archer T2U Nano chipset」などと検索すればヒットすると思います。
国やリビジョンが違うとチップセットも違う可能性がありますが、Archer T2U Nanoのチップセットは「Realtek RTL8811AU」のようです。
さらに「Realtek RTL8811AU」をArchWikiで検索するとヒットしました!
ArchWikiでヒットすると安心です。
「Realtek RTL8811AU」は「rtl8821auドライバー」を使えば良さそうです。
とりあえずUSBポートに刺してみる
Archer T2U NanoをUSBポートに刺して、認識されるかlsusbコマンドで確認します。
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 090c:037c Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) 300k Pixel Camera
Bus 001 Device 004: ID 04f3:0c21 Elan Microelectronics Corp. ELAN:Fingerprint
Bus 001 Device 003: ID 2357:011e TP-Link AC600 wireless Realtek RTL8811AU [Archer T2U Nano]
Bus 001 Device 002: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$きちんと認識されていて、親切にチップセット名も表示されました。
「RTL8811AU」であることが分かると思います。
ちなみに、GW-US300MiniSの場合、チップセット名は表示されませんでした。
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 090c:037c Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) 300k Pixel Camera
Bus 001 Device 004: ID 04f3:0c21 Elan Microelectronics Corp. ELAN:Fingerprint
Bus 001 Device 003: ID 2019:ab24 PLANEX GW-US300MiniS
Bus 001 Device 002: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$DKMSのインストール
Linuxの場合、DKMS(Dynamic Kernel Module Support)を使ってドライバーをビルド・インストールする必要があります。DKMSとは、カーネルのソースツリーの外にソースが存在するLinuxカーネルモジュールの生成を可能にするプログラム/フレームワークのことです。
難しいこと書くとややこしくなるので…
「刺して認識するけど使えない場合は、DKMSでドライバーを追加する。」
ということだけ分かっていれば良いと思います。
カーネルヘッダーのインストール
DKMSをインストールする前に、いま使っているカーネルと同じバージョンのカーネルヘッダーをインストールします。カーネルヘッダーはDKMSがモジュール(ドライバー)をビルドするときに使用します。uname -r でいま使ってるカーネルバージョンを確認します。
$ uname -r
5.10.84-1-MANJARO
$カーネルバージョンは「5.10.84-1」です。
とりあえず、sudo pacman -Ss linux-headers でどんなバージョンのカーネルヘッダーがあるのか一覧表示してみます。
$ sudo pacman -Ss linux-headers
core/linux414-headers 4.14.257-1
Header files and scripts for building modules for Linux414 kernel
core/linux419-headers 4.19.220-1
Header files and scripts for building modules for Linux419 kernel
core/linux44-headers 4.4.294-1
Header files and scripts for building modules for Linux44 kernel
core/linux49-headers 4.9.292-1
Header files and scripts for building modules for Linux49 kernel
core/linux510-headers 5.10.84-1
Header files and scripts for building modules for Linux510 kernel
core/linux514-headers 5.14.21-2
Header files and scripts for building modules for Linux514 kernel
core/linux515-headers 5.15.7-1
Header files and scripts for building modules for Linux515 kernel
core/linux516-headers 5.16rc4.211205.g0fcfb00-1
Header files and scripts for building modules for Linux516 kernel
core/linux54-headers 5.4.164-1
Header files and scripts for building modules for Linux54 kernel
community/linux510-rt-headers 5.10.83_rt58-1
Header files and scripts for building modules for Linux510-rt kernel
community/linux515-rt-headers 5.15.5_rt22-1
Header files and scripts for building modules for Linux515-rt kernel
$いま使っているカーネルバージョンと同じ「5.10.84-1」というバージョンのカーネルヘッダーがあるので、「core/linux510-headers」を指定してカーネルヘッダーをインストールします。
$ sudo pacman -S core/linux510-headers
依存関係を解決しています...
衝突するパッケージがないか確認しています...
パッケージ (2) pahole-1.22-1 linux510-headers-5.10.84-1
合計ダウンロード容量: 28.82 MiB
合計インストール容量: 124.45 MiB
:: インストールを行いますか? [Y/n] Y
:: パッケージを取得します...
linux510-headers-5.10.84-1-x86_64 28.6 MiB 2.05 MiB/s 00:14 [####################################################] 100%
pahole-1.22-1-x86_64 248.5 KiB 2.43 MiB/s 00:00 [####################################################] 100%
合計 (2/2) 28.8 MiB 2.03 MiB/s 00:14 [####################################################] 100%
(2/2) キーリングのキーを確認 [####################################################] 100%
(2/2) パッケージの整合性をチェック [####################################################] 100%
(2/2) パッケージファイルのロード [####################################################] 100%
(2/2) ファイルの衝突をチェック [####################################################] 100%
(2/2) 空き容量を確認 [####################################################] 100%
:: パッケージの変更を処理しています...
(1/2) インストール pahole [####################################################] 100%
(2/2) インストール linux510-headers [####################################################] 100%
:: トランザクション後のフックを実行...
(1/2) Arming ConditionNeedsUpdate...
(2/2) Updating module dependencies...
$念のため、きちんとインストールされているか確認します。
$ sudo pacman -Qs linux-headers
local/linux510-headers 5.10.84-1
Header files and scripts for building modules for Linux510 kernel
$DKMSのインストール
DKMSのインストールです。
とりあえず、sudo pacman -Ss dkms でインストール可能なパッケージを表示してみます。
$ sudo pacman -Ss dkms
extra/dkms 3.0.2-1
Dynamic Kernel Modules System
extra/nvidia-470xx-dkms 470.86-4
NVIDIA drivers - module sources
extra/nvidia-dkms 495.44-6
NVIDIA drivers - module sources
extra/zfs-dkms 2.1.1-1 (archzfs-dkms-rc)
Kernel modules for the Zettabyte File System.
community/acpi_call-dkms 1.2.2-1
A linux kernel module that enables calls to ACPI methods through /proc/acpi/call - module sources
community/broadcom-wl-dkms 6.30.223.271-28
Broadcom 802.11 Linux STA wireless driver
community/deepin-anything-dkms 5.0.9-1
Deepin Anything file search tool
community/sysdig-dkms 0.27.1-11
DKMS kernel module for sysdig
community/v4l2loopback-dkms 0.12.5-2
v4l2-loopback device – module sources
community/virtualbox-host-dkms 6.1.30-1
VirtualBox Host kernel modules sources
$いろいろありますが、今回必要なのは一番上の「extra/dkms」なので、それを指定してインストールします。
$ sudo pacman -S extra/dkms
依存関係を解決しています...
衝突するパッケージがないか確認しています...
パッケージ (1) dkms-3.0.2-1
合計ダウンロード容量: 0.04 MiB
合計インストール容量: 0.10 MiB
:: インストールを行いますか? [Y/n] Y
:: パッケージを取得します...
dkms-3.0.2-1-any 36.2 KiB 65.5 KiB/s 00:01 [####################################################] 100%
(1/1) キーリングのキーを確認 [####################################################] 100%
(1/1) パッケージの整合性をチェック [####################################################] 100%
(1/1) パッケージファイルのロード [####################################################] 100%
(1/1) ファイルの衝突をチェック [####################################################] 100%
(1/1) 空き容量を確認 [####################################################] 100%
:: パッケージの変更を処理しています...
(1/1) インストール dkms [####################################################] 100%
dkms の提案パッケージ
linux-headers: build modules against the Arch kernel [インストール済み]
linux-lts-headers: build modules against the LTS kernel
linux-zen-headers: build modules against the ZEN kernel
linux-hardened-headers: build modules against the HARDENED kernel
:: トランザクション後のフックを実行...
(1/1) Arming ConditionNeedsUpdate...
$念のため、きちんとインストールされているか確認します。
$ sudo pacman -Qs dkms
local/dkms 3.0.2-1
Dynamic Kernel Modules System
$DKMSモジュール(ドライバー)のインストール
Gitリポジトリの複製
8821auドライバーのソースを格納するディレクトリを作成します。
$ mkdir ~/Downloads/rtl8821au-5.12.5.2
$8821auドライバーのソースをGitリポジトリから複製します。
$ git clone "https://github.com/morrownr/8821au-20210708.git" ~/Downloads/rtl8821au-5.12.5.2
Cloning into '/home/xxxx/Downloads/rtl8821au-5.12.5.2'...
remote: Enumerating objects: 1131, done.
remote: Counting objects: 100% (1131/1131), done.
remote: Compressing objects: 100% (770/770), done.
remote: Total 1131 (delta 535), reused 939 (delta 357), pack-reused 0
Receiving objects: 100% (1131/1131), 3.10 MiB | 2.82 MiB/s, done.
Resolving deltas: 100% (535/535), done.
$dkms.conf を確認すると今回インストールするパッケージ名、パッケージバージョン、モジュール名等を確認することができます。
$ cat ~/Downloads/rtl8821au-5.12.5.2/dkms.conf
PACKAGE_NAME="rtl8821au"
PACKAGE_VERSION="5.12.5.2"
MAKE[0]="'make' -j$(nproc) KVER=${kernelver} KSRC=/lib/modules/${kernelver}/build"
CLEAN="'make' clean"
BUILT_MODULE_NAME[0]="8821au"
DEST_MODULE_LOCATION[0]="/kernel/drivers/net/wireless"
AUTOINSTALL="yes"
$ - パッケージ名: rtl8821au
- パッケージバージョン: 5.12.5.2
- モジュール名: 8821au
もし、8821auドライバーのソースを格納したディレクトリ名が「パッケージ名-パッケージバージョン」になっていない場合は、ディレクトリ名を「パッケージ名-パッケージバージョン」に変更してください。
ビルドディレクトリへのコピー
DKMSはデフォルトで /usr/src/ を使用してビルドするので、Gitリポジトリから複製した8821auドライバーのソースを /usr/src/ にコピーします。
$ sudo cp -r ~/Downloads/rtl8821au-5.12.5.2 /usr/src/
$
$ ls -l /usr/src/rtl8821au-5.12.5.2
合計 196
-rw-r--r-- 1 root root 2894 12月 31 13:51 8821au.conf
-rw-r--r-- 1 root root 125 12月 31 13:51 Kconfig
-rw-r--r-- 1 root root 656 12月 31 13:51 LICENSE
-rw-r--r-- 1 root root 76169 12月 31 13:51 Makefile
-rw-r--r-- 1 root root 18134 12月 31 13:51 README.md
-rwxr-xr-x 1 root root 455 12月 31 13:51 cmode-off.sh
-rwxr-xr-x 1 root root 451 12月 31 13:51 cmode-on.sh
drwxr-xr-x 7 root root 4096 12月 31 13:51 core
-rw-r--r-- 1 root root 259 12月 31 13:51 dkms.conf
drwxr-xr-x 2 root root 4096 12月 31 13:51 docs
-rwxr-xr-x 1 root root 598 12月 31 13:51 edit-options.sh
drwxr-xr-x 8 root root 4096 12月 31 13:51 hal
drwxr-xr-x 5 root root 12288 12月 31 13:51 include
-rwxr-xr-x 1 root root 2739 12月 31 13:51 install-driver.sh
drwxr-xr-x 3 root root 4096 12月 31 13:51 os_dep
drwxr-xr-x 2 root root 4096 12月 31 13:51 platform
-rwxr-xr-x 1 root root 826 12月 31 13:51 raspiOS-32.sh
-rwxr-xr-x 1 root root 815 12月 31 13:51 raspiOS-64.sh
-rwxr-xr-x 1 root root 1629 12月 31 13:51 remove-driver.sh
-rwxr-xr-x 1 root root 638 12月 31 13:51 save-log.sh
-rw-r--r-- 1 root root 1170 12月 31 13:51 supported-device-IDs
-rwxr-xr-x 1 root root 13219 12月 31 13:51 test-mon.sh
$モジュールのビルド・インストール
いよいよモジュール(ドライバー)のインストールです。sudo dkms install -m パッケージ名 -v パッケージバージョン でビルド・インストールすることができます。
$ sudo dkms install -m rtl8821au -v 5.12.5.2
Creating symlink /var/lib/dkms/rtl8821au/5.12.5.2/source -> /usr/src/rtl8821au-5.12.5.2
Building module:
cleaning build area...
'make' -j4 KVER=5.10.84-1-MANJARO KSRC=/lib/modules/5.10.84-1-MANJARO/build........................................................
cleaning build area...
8821au.ko.xz:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /usr/lib/modules/5.10.84-1-MANJARO/updates/dkms/
depmod......
$dkms status でインストールされたか確認することができます。
$ dkms status
rtl8821au/5.12.5.2, 5.10.84-1-MANJARO, x86_64: installed
$設定ファイルの設置
Gitリポジトリから複製したソースの中に設定ファイル(8821au.conf)があるので、/etc/modprobe.d の下にコピーします。
$ sudo cp ~/Downloads/rtl8821au-5.12.5.2/8821au.conf /etc/modprobe.d
$
$ ls -l /etc/modprobe.d/
合計 4
-rw-r--r-- 1 root root 2894 12月 31 14:07 8821au.conf
$設定ファイルは、デフォルトのままで問題ありません。
手動でのモジュール(ドライバ)のロード
sudo modprobe モジュール名 でモジュールをロードします。
$ sudo modprobe 8821au
$lsmod でロードされたモジュールが表示されます。
$ lsmod | grep 8821au
8821au 2375680 0
cfg80211 978944 1 8821au
$これだけでは再起動時にモジュールが自動的にロードされないので、次の設定をする必要があります。
モジュール(ドライバ)の起動時ロード設定
/etc/modules-load.d/modules.conf にモジュール名(8821au)を追記することで、起動時にモジュールがロードされるようになります。
$ cat /etc/modules-load.d/modules.conf
# List of modules to load at boot
$
$ sudo vi /etc/modules-load.d/modules.conf
$
$ cat /etc/modules-load.d/modules.conf
# List of modules to load at boot
8821au
$



コメント