Linux Wifiまとめ

WLI-UC-GNWLI-UC-GNMWLI-UC-GNM2という3つの新定番が確立した、LinuxなWifi環境のおさらい。

製品名VID:PIDコントローラドライバ使用可否
GW-US54GXS2019:5303zd1211bzd1211rw
GW-USMicroN2019:ed14RT3070-×
GW-USWExtreme2019:ed17RTL8188CUSrtl8192cu
GW-US300MiniS2019:ab24RT2870rt2800usb
WLI-UC-GN0411:015dRT3070rt2800usb
WLI-UC-GNM0411:01a2RT8070rt2800usb
WLI-UC-GNM20411:01eeRT3070rt2800usb
WDC-433SU2M7392:b711MT7610U-×
ここまで、GUIなNetwork-Managerで動作確認を行ってきた結果を右の表に纏めてみた。

しかし、お仕事的にはサーバやリモート端末などNetwork-Managerを使えないターミナルUI環境での活用が中心なので、次のステップとしてwpa_supplicantでの動作検証を行う。

まずはCommunity Help Wikiに従い、実行中のNetwork-Managerを停止し、自動起動の設定を手動起動に変更する。

yano@Trusty:~$ sudo stop network-manager
yano@Trusty:~$ echo "manual" | sudo tee /etc/init/network-manager.override
Network-Managerも設定ファイルの代わりにGUI操作を被せただけで、実態としてはお馴染みwpa_supplicantなので簡単…と思いつつ、なかなか接続に到らず難儀。
yano@Trusty:~$ sudo start network-manager
として再びNetwork-Managerで接続した時のログを比較してみたりしたが、何かが足りないというのはわかってもそれを活性化する為のwpa_supplicantの設定を行っているつもりなので、まさに行き詰まった状態に陥った。

まずは、ubuntuを再起動してからUSBドングルを指すというケースにおいて、接続&通信できる事で良しとするところまでハードルを下げて、最終的には /etc/wpa_supplicant/wpa_supplicant.conf/etc/networking/interfaces

yano@Trusty:~$ cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root

network={
scan_ssid=0
proto=WPA RSN
key_mgmt=WPA-PSK
auth_alg=OPEN
pairwise=CCMP TKIP
group=CCMP TKIP
ssid="TEST-WIFI"
#psk="passphrase"
psk=9271f8b3376c756b2eafb25b0632b0b09a6b51bf688cc6f79ede98fcad114a74
}
yano@Trusty:~$
yano@Trusty:~$ cat /etc/networking/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

# primary interface
auto eth0
iface eth0 inet dhcp

# secondery interface
allow-hotplug wlan0
# manual wlan0
iface wlan0 inet dhcp
# wpa-driver nl80211
# wpa-driver wext
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

yano@Trusty:~$
という構成で確認できた。

参考まで/etc/wpa_supplicant/wpa_supplicant.confに記述していたパラメータは/etc/networking/interfaces自体に

yano@Trusty:~$ cat /etc/networking/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

# primary interface
auto eth0
iface eth0 inet dhcp

# secondery interface
allow-hotplug wlan0
# manual wlan0
iface wlan0 inet dhcp
# wpa-driver nl80211
# wpa-driver wext
# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
wpa-scan-ssid 0
wpa-proto WPA RSN
wpa-key-mgmt WPA-PSK
wpa-auth-alg OPEN
wpa-pairwise CCMP TKIP
wpa-group CCMP TKIP
wpa-ssid "TEST-WIFI"
#psk="passphrase"
wpa-psk 9271f8b3376c756b2eafb25b0632b0b09a6b51bf688cc6f79ede98fcad114a74

yano@Trusty:~$
という風に直接書く事もできる。USBデバイスに関わらず同じWiFiに接続させるのならば前者、USBデバイス毎に異なるWiFiに接続させるのならば後者という具合に使い分ける、…という使い分けが便利そうだ。

ちなみに、ドライバインタフェースは古来よりwireless-extensionsとしてお馴染みのwextと、新しくユーザーランドで動作するようにセキュリティ改善されたnl80211の2種類がある。最終的にはrt2800usb等のドライバに依存する事になるので闇雲にnl80211にしてしまうのも微妙かと思われるが、指定しないと両インタフェースが共存するようなので、基本的には特に指定しないのが無難と思われる。

上記のように/etc/networking/interfaceswpa_supplicantの設定を行う事で、ethインタフェースのようにコマンドラインから

yano@Trusty:~$ sudo ifup wlan0
yano@Trusty:~$ sudo ifdown wlan0
という具合に制御できるハズだが、そう簡単にはうまくいかないのが世の常。動作確認では思い込みや先入観を排除し、USBドングルの抜き差しやubuntuのrebootも含めてトライして頂きたい。

【4/6追記】実機環境で追試してみたところ/etc/networking/interfacesの"manual"モードやifdown/ifupの操作でも問題無く動いたので、上記コマンドライン系の不具合はOracle VM VirtualBox由来の環境問題である可能性あり。

【参照】
●株式会社バッファロー BUFFALO http://buffalo.jp/
無線LAN子機
BUFFALO WLI-UC-GNM
BUFFALO WLI-UC-GNM2
●Amazon.co.jp https://www.amazon.co.jp/
BUFFALO Air Station NFINITI 11n/g/b USB用 無線子機 WLI-UC-GNM 713円
BUFFALO 11n対応 11g/b 無線LAN子機 親機-子機デュアルモード対応モデル WLI-UC-GNM2 909円