[Linux]無線LANアダプタ(Archer T2U Nano)の設定

アイキャッチ画像Manjaro

以前、中国で購入したお気に入りのXiaoma21ですが、帰国直前に内蔵の無線LANが壊れてしまったので、たまたま家(日本)にあったPLANEX GW-US300MiniSを使っていました。このGW-US300MiniS、WindowsでもLinuxでも使えて良いのですが、ちょっと大きくて邪魔なんです。
今回、中華PCのXiaoma21にManjaroをインストールして、サブPCとして復活したので、小型で11ac対応のTP-Link Archer T2U Nanoを購入しました。

Linuxのディストリビューションによっては使えないかもしれません。
設定変更は自己責任でお願いします。

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
CPUApollo 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に変更します
Onda Xiaoma21 スペック
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
$

参考

コメント

タイトルとURLをコピーしました