自宅のクソPCに Ubuntu Desktopをインストール
いつ購入したかも覚えていない元Win7端末、Win10にはなれたものの、Win11にはなれなかった(低スペックすぎて)。というわけで、もう使い物にならねぇのでこれを機に大好きな Ubuntu に入れ替えてあげました。
とてもよろこんでいます。
無線LAN 子機を使う
ところで Linux OS に対応している無線LAN子機って調べても出てこないよね。だから困る。
とはいえ、当然インターネットには接続したいわけで、とりあえず家で余っていた Tp-Link AC600 Archer T2U Nano という型番の無線LAN子機を使ってみることにした。
接続できない
いや、接続はできた。ただし、2.4GHzしか使えない。5GHzのSSIDがそもそも表示されない。ChatGPT にきいてみました。
ChatGPT の見解
考えられる原因
- USB子機が物理的に5GHz非対応
製品名に「AC」「Dual Band」などの記載がない場合、2.4GHz専用の可能性があります。
例えば「802.11n対応」としか書いていない古いモデルは5GHzを掴めません。 - 国別設定(regulatory domain)の問題
Linuxは無線LANの周波数利用を国ごとに制限しており、設定が正しくないと5GHz帯が非表示になることがあります。
iw reg get で国コードを確認し、日本なら iw reg set JP で変更できます。 - 周囲のアクセスポイント設定
ルーター側が5GHzで「WPA3のみ」「チャンネルがDFS帯域(52ch以上)」になっていると、古いドライバでは認識しないことがあります。 - USB子機は5GHz対応でも、Ubuntu用ドライバが対応していない
特にRealtekチップの一部(RTL8811AUなど)は、Ubuntu標準カーネルには含まれず、外部からドライバをビルドする必要があります。
ドライバが古いと、2.4GHzだけ認識して5GHzは無視されるケースがあります。
わたしの回答
- USB子機が物理的に5GHz非対応
- いや、対応している子機なんで大丈夫
- 国別設定(regulatory domain)の問題
- あとでやってみる
- 周囲のアクセスポイント設定
- WPA2も対応している、チャンネルは40
- USB子機は5GHz対応でも、Ubuntu用ドライバが対応していない
- それかも
ドライバを追加する
まずは調べる
lsusb
# 出力結果:
# ID 2357:011e tp-link ac600 wireless realtek rtl8811au archer t2u nano
ChatGPT にきいたところ、現状を教えてくれた。
- チップ: Realtek RTL8811AU (802.11ac, 2.4GHz/5GHz 対応)
- 原因: 標準ドライバ非対応 → Ubuntu上では2.4GHzしか見えないか、そもそも認識が不完全
- 対策: GitHub上のカスタムドライバをビルドしてインストール
参考: Device 'TP-Link AC600 wireless Realtek RTL8811AU [Archer T2U Nano]' | Hardware for Linux
https://linux-hardware.org/?id=usb%3A2357-011e
インストールしてみる
まずは必要なパッケージなど準備
sudo apt install build-essential dkms git bc
# build-essential:コンパイルに必要な gcc / make などを入れる
# dkms:カーネル更新後に自動でモジュールを再ビルドしてくれるしくみ
# git:ドライバのソースを GitHub から取得するため
# bc:一部スクリプトで使われることがあるので保険で入れておく
カーネルヘッダを入れる
sudo apt install linux-headers-$(uname -r)
ドライバのソースをクローン
https://github.com/morrownr/8821au-20210708
cd ~
git clone https://github.com/morrownr/8821au-20210708.git
cd 8821au-20210708
ちなみに github の URL を間違うと、ユーザーとパスワードの認証が始まる。合っていても違うと怒られる。URL は正確に入力しましょう。
続けて、手動で段階を踏んでインストールしてみます
# dkms 情報を確認(dkms.conf にモジュール名とバージョンが書いてある)
grep -E 'PACKAGE_NAME|PACKAGE_VERSION' dkms.conf
# 例: 出力が PACKAGE_NAME="rtl8821au" と PACKAGE_VERSION="5.12.5.2" だった場合、これ以降は出力に合わせて置き換えて実行する
PACKAGE=rtl8821au
VERSION=5.12.5.2
# ソースを /usr/src にコピー
sudo cp -r . /usr/src/${PACKAGE}-${VERSION} # /usr/src/rtl8821au-5.12.5.2 となる、以下も同様
# DKMS に登録(ここでソースが /usr/src にあることが前提)
sudo dkms add -m ${PACKAGE} -v ${VERSION}
# ビルド
sudo dkms build -m ${PACKAGE} -v ${VERSION}
# インストール
sudo dkms install -m ${PACKAGE} -v ${VERSION}
再起動する
sudo reboot
再起動後、動作確認
sudo dkms status
# rtl8821au/5.12.5.2, 6.14.0-27-generic, x86_64: installed
lsmod | grep 8821au
# 8821au 2789376 0
# cfg80211 1433600 1 8821au
nmcli device status
# 現在の接続状況が表示されるけど、接続中のままでダメ
あと、wavemon っていうやつもインストールして電波状況とか見やすい感じにした。あれは見やすいのでおすすめ。
結果、ダメでした
えぇ、つながりませんでした。正確には最初だけ何とかつながりますが、すぐに切断される状況でした。
以下、追加の処置です
- セキュアブートもなし
- ルータ側設定の変更
- チャンネルを40 -> 36 に変更
- 160Mbps -> 80Mbps に変更
- 省電力モードはオフ
- 国コードの設定
sudo iw reg set JP
結果、やっぱりダメでした
もう何をやってもダメ。すぐに切断される。
あきらめました、異常以上。