Linux
Ubuntu
ubuntu18.04

Ubuntu 18.04 で USB Wi-Fi アダプタを認識させる

今回私は開発環境として Ubuntu 18.04 を導入しましたが、
自前の USB Wi-Fi が network interface として認識されず非常に苦労しました。

USB Wi-Fi 自体どちらかといえば、あまり推奨されておらず(PCI推奨)、
本家サポートや、海外圏にも情報が少なかったため、簡単にまとめておこうと思います。

対象製品について

私は下記製品を利用しました。
Ubuntu 16.04 時代に、安定動作しているという報告が多かったのが理由です。

製品自体は、Linux サポートを謳ってはいませんが、
本製品が採用する Realtek のチップ(RTL8821A)は Linux 向けのドライバが公開されているため、
それを自前でビルドしてインストールすることで利用できます。

従って、WDC-433DU2HBK 以外にも RTL8821A を採用する製品であれば、
恐らく同様の手順で利用可能だと思われます。

下記テーブルの製品群をみるとそれなりにメジャーどころは動くんじゃないかな…

リポジトリ

上記リポジトリのソースコードをビルドしてインストールしました。

フォーク元のリポジトリはメンテが止まっているようで、
Ubuntu 18.04 が採用している Linux Kernel 4.15 系に対応していないため、ビルドエラーとなります。

masharov さんが下記の通り本家に PR 出していますので、
それがマージされれば、本家を利用して問題ないと思います。

追記(2018/09/12)

既に上記の PR が本家リポジトリに取り込まれていますので、
本家のソースコードを利用して問題ないと思います。(動作未確認)
https://github.com/gnab/rtl8812au/

ビルド

リポジトリの README.md を参照してください。

ただ補足するなら、x86(64)/PC で利用する分には単に clone して make するだけです。
Raspberry Pi など ARM 向けにビルドする場合は一部コンフィグの書き換えが必要なようです。

build
git clone https://github.com/msharov/rtl8812au.git
make -C ./rtl8812au

動作確認

load
sudo insmod 8812au.ko

insmod でカーネルモジュールの動的ロードが通れば、
Ubuntu 18.04 の GUI 上で Settings -> Wi-Fi が enable となり、
検知している SSID が表示されますので、あとはいつものように設定をすすめれば接続完了です。

…が、私の場合ここで下記エラーがでました。

error
insmod: ERROR: could not insert module 8812au.ko: Required key not available

どうもこれはセキュアブートによる影響のようです。
BIOS あるいは UEFI から、セキュアブートを disable (not windows OS) にする必要がありました。

M/B メーカーや時期によって項目は異なりますが、
Boot や Security 周辺の項目を探していれば見つかると思います。

インストール

動作確認できたら、
次回起動時にもモジュールがロードされるようにインストールしておきます。

Makefile を見ると install: が実装されているので、sudo make install を叩けば良いように思いましたが、
うまく動作しなかったため、下記 README.md の手順でインストールしました。

install
sudo cp 8812au.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless
sudo depmod

DKMS

まだ試せていませんが、こちらも README.md に記載があるので参照してください。

補足

USB Wi-Fi のドライバが ready になるまでは iPhone を USB で接続してテザリングで通信していました。
USB 接続のみで PnP でドライバがインストールされ、労せずネットワーク接続できたため、
一時的にネットワーク接続が必要な場合に便利でした。