2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry PiでTP-Link Archer T9UHを使う

Last updated at Posted at 2021-01-09

概要

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でも、rtl8814aurtl8812auから分岐しているので、そういう経緯を辿ったのかもしれない)

手順

書かれている手順に従うだけだが、事前にカーネルヘッダと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してきたものは消して良い。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?