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.

USBのWiFiアダプター(TP-Link Archer T9UH)をUbuntu 20.04で使う方法

Last updated at Posted at 2021-09-11

#目次
1.はじめに
2.ハマった問題点
3.パッケージのダウンロード方法(有線LANを使えない方)
4.ドライバーの構築(有線LAN使える方はここから)
5.おわりに
6.参考

#1. はじめに
実家でPCを購入したときに、一番評判の良いWiFiアダプターを買ったところ、Windowsには簡単につなげたものの、Ubuntu20.04にはつながらず、苦労したため、環境の構築方法を共有します。
これからWiFiアダプターを購入する方は、自分の使う全てのOSに対応しているものを購入することをおすすめします。

#2. ハマった問題点
TP-LinkのArcher T9UHを購入したところ、公式のLinuxの対応がUbuntu16.04で止まっており、なおかつ無線でつなぎたいからWiFiアダプターを買っているのに、初期設定では有線LANを必要としました。
Ubuntu20.04にT9UHを挿すと、USB機器として認識するものの(下図lsusb)、ドライバーがない状態でした。Ubuntu18.04でうまくいっている記事と同様の処理もしてもドライバーがうまく機能せず、WiFiマークが出ませんでした。

$ lsusb | grep TP-Link
Bus 001 Device 002: ID 2357:0106 TP-Link Archer T9UH v1 [Realtek RTL8814AU]

#3. パッケージのダウンロード方法(有線LANを使えない方)
4.ドライバーの構築sudo apt install hogehogeをする必要があるのですが、有線LANをつなげられない状況だったので、オフラインでのパッケージの落とし方について、調べました。

必要なもの

  • ネット環境のあるUbuntu20.04(WSLでも可)
  • USBメモリー

ネット環境のあるPCで行う作業

まずネット環境のあるUbuntu20.04(以後ネットPCと呼びます)に、パッケージの依存関係を表示するapt-rdependsを入れます。

sudo apt install apt-rdepends

作業するディレクトリを作成します。

mkdir -p debs && cd debs

apt download <package>で一つのパッケージに対する.debファイルを取得できるのですが、これとapt-rdependsを絡めたシェルスクリプトgetdepends.shを作成します。(参照)

getdepends.sh
#!/bin/bash
 export MAXPARAMETERS=255

 function array_contains_find_index() {
     local n=$#
     local i=0
     local value=${!n}

     for (( i=1; i < n; i++ )) {
         if [ "${!i}" == "${value}" ]; then
             echo "REMOVING $i: ${!i} = ${value}"
             return $i
         fi
     }
     return $MAXPARAMETERS
 }

 LIST=( $( apt-rdepends $1 | grep -v "^ " ) )
 echo ${LIST[*]}
 read -n1 -r -p "... Packages that will be downloaded (Continue or CTRL+C) ..."

 RESULTS=( $( apt-get download ${LIST[*]} |& cut -d' ' -f 8 ) )
 LISTLEN=${#LIST[@]}

 while [ ${#RESULTS[@]} -gt 0 ]; do
     for (( i=0; i < $LISTLEN; i++ )); do
         array_contains_find_index ${RESULTS[@]} ${LIST[$i]}
         ret=$?

         if (( $ret != $MAXPARAMETERS )); then
             unset LIST[$i]
         fi
     done

     FULLRESULTS=$( apt-get download ${LIST[*]} 2>&1  )
     RESULTS=( $( echo $FULLRESULTS |& cut -d' ' -f 11 | sed -r "s/'(.*?):(.*$)/\1/g" ) )
 done

 apt-get download ${LIST[*]}

これを使って下記のパッケージを依存関係含めて、.debファイルにします。

sudo chmod 755 getdepends.sh  # 実行権限を付与
./getdepends.sh build-essential
./getdepends.sh make
./getdepends.sh dkms
./getdepends.sh openssl
./getdepends.sh mokutil

これで必要なパッケージが揃いました。ネットのないPCでは、パッケージに加え、git cloneもできないため、ネットPCでリポジトリを入れておきます。

git clone https://github.com/puuuuh/rtl8814au.git

以上で、ネットから引っ張る必要のあるものが揃ったので、パッケージ群のdebsディレクトリとリポジトリのrtl8814auをUSBメモリに移して、ネットのないPCに移します。

T9UHをつなぐPCで行う作業

USBメモリのdebsrtl8814auを適当なところに配置してください。
パッケージのインストールは以下のように行います。

cd debs
sudo apt install -y ./*.deb

#4. ドライバーの構築(有線LAN使える方はここから)
github.com/puuuuh/rtl8814auを使って、ドライバーを入れていきます。

sudo apt update && sudo apt install -y build-essential make dkms openssl mokutil # 3.を行った人は必要ない
git clone https://github.com/puuuuh/rtl8814au # 3.を行った人は必要ない
cd rtl8814au
make dkms_install
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/"
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/updates/dkms/8814au.ko
sudo mokutil --import MOK.der
sudo reboot

以上の処理はREADME.mdに従い、行っているのですが、今回のケースではUEFI Secure Bootの2.Sign the moduleで行う$(modinfo -n rtl6612au)が動作しなかったため、それに相応するものに置き換えています。

再起動が終わったら、WiFiマークが点いて、使えるようになっていると思います。
もしマークが点かない場合は、何度か再起動をしてみてください。

#5. おわりに
公式の対応がないWiFiアダプターを購入するととても苦労するので、買い物はよく考えてするようにしようと思いました。

#6. 参考

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?