USB WiFi を Linux で使おうとすると予想通り大変です。
Windows でドライバなしで使える(標準ドライバ)とかがどれだけ恵まれているかを実感させられます。今回は個人的に試してみて Linux でも使えたものをまとめてみました。
この記事を書いている段階では生産中止になっていない入手可能なものに厳選しています。
すぐに使えるもの
最近の Linux において、すぐに使えるものを列挙してみました。
最近のLinux とは Ubuntu 16.04, Fedora25, ArchLinux あたりを想定しています。
これらの環境であれば、標準ドライバで動作させることができるので差してすぐに使用可能です。
- GW-USNANO2A (プラネックス)
- WN-G300UA (IO DATA)
以前には Logitec LAN-W300N/U2S を使っていました。心配の種は発熱が結構あったのと現時点では入手できないことでした。
探してみて追加ドライバなど不要で使えるものということで、上記の製品にたどり着いた次第です。
今となっては 11ac にも対応していなかったりして速度の点では残念ですが、いずれ期待したいところですね。
PLANEX 無線LAN子機 (USBアダプター型) 11n/g/b 150Mbps MacOS X10.10対応 GW-USNANO2A
ドライバありで使えるもの
ドライバをインストールするという手間をかければ使えるものが増えてきます。
Web を参考にドライバの導入をしても、なかなかうまくいかないこともあるようなので、自分が試してうまくいった WN-AC433UA をここでは紹介しておきます。
ELECOM の WDC-433DU2H も同チップを採用しているので、同じ手順で動きます。
- WN-AC433UA (IO DATA)
- WDC-433DU2H (ELECOM)
動作環境は Fedora25, Ubuntu16.04 (どちらも64bit) で行いました。
いくつかドライバのソースの種類があったり、手順方法が色々とあるようですが、自分がやってうまくいった方法をここでは紹介します。
全ての人がこれでうまくいく保証はありませんが、1つの参考にはなるかと思います。
ドライバのインストール方法 (Fedora25の場合)
Fedora25 の場合, カーネルの更新と対応するヘッダファイルの取得を行います。
その後、新しいカーネルで起動させるため、再起動を行います。
$ sudo dnf update kernel kernel-headers kernel-devel $ sudo reboot
この記事を書いている時点では kernel 4.8.10-300.fc25 が取得されました。
以降はこのバージョンで動作している前提で進めます。(Fedora25インストール直後は 4.8.6 あたりでした)
カーネルのドライバのソースコードを取得します。
$ git clone https://github.com/gnab/rtl8812au $ cd rtl8812au
コンパイル&インストールを行います。
$ make $ sudo make install
これで WN-AC433UA を装着したところ rtl8812au ドライバがロードされるのを確認できました。
しかしログを見ると以下のように出ており不穏な感じがします・・・。
とりあえず Fedora のネットワークの設定で WiFi の設定ができるようになっているので、こちらのほうから SSID を選択して、パスフレーズの設定などを行っていきます。
うまくいけば接続が完了します。予想していたよりは時間がかかるようでしたがつながりました。
失敗する場合には dmesg などをみて、ドライバで失敗しているのか設定の問題なのかを切り分けていくことになるでしょう。
ドライバのインストール方法 (Ubuntu 16.04 の場合)
まずは以下のコマンドらの実行によって最新状態に更新しました。
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade
カーネルは 4.4.0-51 になっていました。
これにあうように /lib/modules/4.4.0-51-generic, /usr/src/linux-headers-4.4.0-51-generic が存在していました。
ドライバをコンパイルする際にはここが一致している必要があります。
更新して再起動したあとは、先に説明した Fedora25の場合と同じ手順でドライバのコンパイルとインストールを行います。
インストールが終わったらデバイスを接続します。
dmesg でログを見ていると、WiFi アダプタのインターフェースが出現しているのですが、このままでは NetworkManager が認識していませんでした。
また ifconfig でも出現しないのですが、 iwconfig ではインターフェースが出現していました。
以下のコマンドで NetworkManager の再起動を行ったところ NetworkManager がアダプタを認識しました。
(systemctl restart network.service ではない点が注意が必要そうでした)
$ sudo systemctl restart NetworkManager.service
あとはシステムが認識するので GUI から WiFi のインターフェスを選んで SSID, パスフレーズの設定などおこなっていけば無事につながりました。
ELECOM 無線LAN 子機 ハイパワーアンテナ 11ac/n/a/g/b 433/150Mbps USB2.0 WDC-433DU2HBK
おまけ (RRI2 の場合)
今回の紹介した USB WiFi アダプタは Raspberry Pi 2 でも使用可能でした。
ただし少々手順や使用するドライバが違ったので、改めて別記事としたいと思います。
まとめ
今回動作検証した製品達です。
現在購入不可になっているものたち
- PLANEX 無線LAN子機 (USBアダプター型) 11n/g/b 150Mbps MacOS X10.10対応 GW-USNANO2A (FFP)
- ELECOM 無線LAN 子機 ハイパワーアンテナ 11ac/n/a/g/b 433/150Mbps USB2.0 WDC-433DU2HBK