Soramichi's blog

Some seek complex solutions to simple problems; it is better to find simple solutions to complex problems

TP-LINK Archer T4E AC1200 が Linux で何もせずに使えた話

前置きと買ったもの

自宅の床を這っているケーブルを減らしたくなり、デスクトップ PC を wifi 化することにした。

購入したのは TP-LINK の Archer T4E AC1200 というもので、通販で送料込みで約 3400 円だった。外箱は英語のみで通販サイトでも「法人向け」とか書いているが、中のマニュアルには日本語も書かれていた。

f:id:sorami_chi:20211108204903j:plain

後付けの wifi モジュールには PCI Express スロットに刺すタイプ、USB で接続するタイプ、それからノート PC で使われている M.2 スロットに刺すタイプ(こういうやつ)があり、本機は PCI Express スロットに刺すタイプである。USB や M.2 でも動作すればなんでもよかったのだが、本機は事前に Linux で動きそうという確証があったのでこれにした。

事前に Linux で動きそうという確証はあったものの実際に動いた or 動かしているという報告は検索した限り見つからなかったので、ここにメモしておく。

Linux での動作

Linux での動作だが、単に接続しただけで本当に何もせずに使えた。具体的にいうと、接続して起動するとデスクトップ環境のネットワークマネージャ的なものに表示され、クリックして SSID を選んでパスフレーズを入れただけである。

これだけでは何なのでもう少し突っ込んだ情報を記しておく。まず本機に使われている wifi チップは Realtek の RTL8812AE というものである。これは lspci でも以下のように確認できるし、公式のフォーラム(注1)やこのページにも同様の情報がある。ただし今後チップが変わらない保証はないので注意が必要である。

注1:余談だが公式のフォーラムで「Ubuntu で動きますか」と聞いて「動くと宣伝はされてないけどチップ名はこれだよ」と教えてくれるのは偉い。日本のメーカーならサポートされてませんの一点張りで終わりそうだ。

...
03:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8812AE 802.11ac PCIe Wireless Network Adapter (rev 01)
...

RTL8812AE は Linux では rtl8821ae というドライバでサポートされている。チップ名とドライバ名が微妙に違う(8812 と 8821)が、これで正しいようである。正確にはこのドライバは RTL8812AE と RTL8821AE の両方をサポートするようだ。lspci -v を見てみると実際にこのドライバが使われているのがわかる。

...
03:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8812AE 802.11ac PCIe Wireless Network Adapter (rev 01)
    Subsystem: Realtek Semiconductor Co., Ltd. RTL8812AE 802.11ac PCIe Wireless Network Adapter
    Flags: bus master, fast devsel, latency 0, IRQ 148
    I/O ports at e000 [size=256]
    Memory at df100000 (64-bit, non-prefetchable) [size=16K]
    Capabilities: <access denied>
    Kernel driver in use: rtl8821ae
    Kernel modules: rtl8821ae
...

rtl8821ae ドライバはカーネルのメインツリーに取り込まれており、CONFIG_RTL8821AE という設定でビルドするかどうか決められる。自分の使っているカーネルコンフィグ(Debian のどこかの時点のをコピーしてきて最新のカーネルに合うように make oldconfig したもの)では最初から m(モジュールとしてビルド)になっていた。

$ grep CONFIG_RTL8821AE /boot/config-`uname -r`
CONFIG_RTL8821AE=m

ということで、チップ名が分かりそれが公式にサポートされていると知ったので事前にほぼ動くだろうと確証があった、という話だった。