概要
Raspberry Pi 3以降では基板上にWi-Fi IFがついており、Rasbianを入れたら何もしないで認識してくれる。
しかし性能がイマイチなので、TP-Link Archer T9UH を使うことにした。
こいつは何もしないとIFとして認識してくれないので、ドライバを入れることにした。
ポイント/狙い
ドライバの導入、あるいはTP-LinkのIFを扱った記事はqiitaや各種ブログにたくさんあるが、T9UHを扱った記事が少なかったことと、特にRealtek 8814auチップを扱った記事がなかったので、ここに残しておく。
作戦
TP-Linkオフィシャルにドキュメントとドライバがあるが、それによると、カーネルを再コンパイルしてドライバを入れるようだ。しかし今時カーネルまで触るのは面倒くさいのでやりたくない....。
とするともう一つ、ドライバをモジュール化してカーネルに組み込む方法があるようで、その手順とドライバがGitHubで公開されている。
これならaptでカーネルを更新したときも追随が楽そうなので、こっちでやることにする。
なおArcher T9UH向けの手順(ドライバ)として、rtl8812auチップ用を使っている人を見かけるが、私がやったときはそのドライバでは動かなかった。
入手したハードのロットによってチップの違いがあるのかもしれないが、私の場合はrtl8814auチップ用で動いてくれた。
(GitHubでも、rtl8814auはrtl8812auから分岐しているので、そういう経緯を辿ったのかもしれない)
手順
書かれている手順に従うだけだが、事前にカーネルヘッダとdkmsを入れる。
apt -y install raspberrypi-kernel-headers dkms
次、上記GitHubから落としてくる。
git clone https://github.com/aircrack-ng/rtl8814au.git
もしbranchがあってそっちの方が良さそうなら、-bでブランチ指定して落としてくる。
で、落としてきたMakefileは、Raspberry Pi(ARMアーキテクチャ)の指定をしなければならない。
これはrtl8814auには書かれていないが、分岐元のrtl8812auに書かれていて
Then run this step to change platform in Makefile, For RPI 1/2/3/ & 0/Zero:
$ 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
But for RPI 3B+ & 4B you will need to run those below which builds the ARM64 arch driver:
$ sed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile
$ sed -i 's/CONFIG_PLATFORM_ARM64_RPI = n/CONFIG_PLATFORM_ARM64_RPI = y/g' Makefile
In addition, if you receive an error message about unrecognized command line option -mgeneral-regs-only
(i.e., Raspbian Buster), you will need to run the following commands, then retry building and installing:
$ export ARCH=arm
$ sed -i 's/^MAKE="/MAKE="ARCH=arm\ /' dkms.conf
とのこと。
私の英語力不足かもしれないが、『3B+&4Bで64bitドライバの場合は』って言っているようだが、2Bだって一部はARM64bitだったりするので、ここは単に『64bitドライバの場合は』と考えて良いっぽい。
今回私は32bitドライバで良いので
cd rtl8814au/
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
export ARCH=arm
sed -i 's/^MAKE="/MAKE="ARCH=arm\ /' dkms.conf
とした。
これで準備完了なのでコンパイルするわけだが、dkmsでインストールまでお願いする。
make dkms_install
もしエラーが出たら対処をするが、問題なくインストールできると/etc/modules/(kernel-ver)/updates/
にモジュールが入れられる。
また/usr/src/8814au-x.x.x.x/
に、コンパイルに使ったソースが保存される。なので元々cloneしてきたものは消して良い。