【Ubuntu】【無線LANカード】無線LAN接続のメモ【周辺機器接続】

Ubuntu 17.04 で無線LAN を使うための設定時のメモ
具体的な環境については後述したが、結論を先に書くと次の通り。

  • Linux 再起動後も WiFi が有効になっていた
  • 従って、下記手番のうち 1→ 2→ 3→ 4の [A]→ 5 という順で実行すれば良いだけなのかも知れない。

 

環境

環境は以下の通り。

  • SSID (以下、AP=アクセスポイントとする)

   

  • ネットワークカード(以下、NIC とする)

  
 

WiFi有効化手順

1. NIC を PC に接続する

 

2. NIC として認識されていることを iwconfig を使って確認する。

% iwconfig
lo        no wireless extensions.
virbr0    no wireless extensions.
wlx3476c58ecc37  IEEE 802.11  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   
          Retry short limit:7   RTS thr=2347 B   Fragment thr:off
          Power Management:off

 

3. NIC が動作していることを確認する。

iwlist コマンドを使って確認するが、SSID が正しく表示されていない。

% sudo iwlist wlx3476c58ecc37 scan
wlx3476c58ecc37  Scan completed :
          Cell 01 - Address: 32:6F:3F:10:F8:62
                    Channel:1
                    Frequency:2.412 GHz (Channel 1)
                    Quality=12/70  Signal level=-98 dBm  
                    Encryption key:on
                    ESSID:"BUFFALO-10F862-4"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s
                    Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s

 
こちらのサイトより、どうやら WN-G300UA に問題があり、パッチを適用したカーネルモジュールを作る必要があるとのこと。

% sudo apt-get install --reinstall linux-headers-4.10.0-42-generic linux-headers-generic build-essential dkms git
% git clone https://github.com/pvaret/rtl8192cu-fixes.git
% su -

# dkms add ./rtl8192cu-fixes 
Error! DKMS tree already contains: 8192cu-1.10
You cannot add the same module/version combo more than once.

% dkms install 8192cu/1.10 
# depmod -a
# cp ./rtl8192cu-fixes/blacklist-native-rtl8192.conf /etc/modprobe.d/
# modprobe -r rtl8192cu
# modprobe 8192cu

 

4. SSID にアクセスする。 (GUI と CUI の2通りがある)

. [A] GUI による SSID 接続方法

「システム設定」ー「ネットワーク」より、SSID にアクセスする
「システム設定」ー「ネットワーク」より、Aterm WF1200CR に対応した SSID を選択し、無線LAN の設定をする。

f:id:dnkrnka:20180429140125p:plain

. [B] CUI による SSID 接続方法

こちらを見ると、iwconfig では無く、「wpa_supplicant」を使えとのこと。
具体的には、次のようにある。私の環境では WEP では無いので wpa_supplicant を使う必要がある。
f:id:dnkrnka:20180429140202p:plain
 

. [B-1] wpa_supplicant のインストール

すでにインストールされていたため、「apt-get install wpasupplicant」 は不要である。

% which wpa_supplicant 
/sbin/wpa_supplicant

 

. [B-2] wpa_supplicant.conf を作る

参考にしたサイトの手順から、「SSID」と「パスワード」を読み替えて実行すると、以下のように約5行の結果が表示される。
なお、ここでは仮のパスワードとして 1234567890123 を書いており、生成される psk= の値も適当な値である。

$ wpa_passphrase aterm-bd4318-g 1234567890123
network={
	ssid="aterm-bd4318-g"
      #psk="SSID アクセスのパスワードを暗号化したもの。平文で書く場合はダブルクオートで囲む"
	psk=39577b4b21adc7cce60cf5c2be58fc7a2b1f8f686dc9c3f6842de29d77f37acc
}

 
私の環境では /etc/wpa_supplicant/wpa_supplicant.conf は存在しないので、参考にしたサイトとは若干異なり、新たに /etc/wpa_supplicant/wpa_supplicant.conf を作成する。

% ls  /etc/wpa_supplicant/
action_wpa.sh  functions.sh  ifupdown.sh
% wpa_passphrase aterm-bd4318-g 1234567890123 > /tmp/wpa_supplicant.conf
% sudo cp -p /tmp/wpa_supplicant.conf /etc/wpa_supplicant/

 

. [B-3] wpa_supplicant.conf に SSID へのアクセス情報を記述する
.  参考にしたサイト

暗号スイートをまとめって下さったサイト
Linuxでwpa_supplicantを使ってWPA2の無線LANに接続する方法 -- ぺけみさお
 
/etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
    ssid="aterm-bd4318-g"
  #psk="↓ SSID アクセスのパスワードを暗号化したもの。平文でパスワードを書く場合はダブルクオートで囲む"
    psk=39577b4b21adc7cce60cf5c2be58fc7a2b1f8f686dc9c3f6842de29d77f37acc
    key_mgmt=WPA-PSK # 暗号化キーの管理方式
    proto=RSN # 認証方式
    pairwise=CCMP # ユニキャスト用暗号化方式
    group=CCMP # ブロードキャスト/マルチキャスト用の暗号化方式
}

 

. [B-4] SSID にアクセスする
% sudo wpa_supplicant -D wext -i wlx3476c58ecc37 -c /etc/wpa_supplicant/wpa_supplicant.conf 
Successfully initialized wpa_supplicant
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlx3476c58ecc37: Trying to associate with 98:f1:99:70:8b:3e (SSID='aterm-bd4318-g' freq=2437 MHz)
wlx3476c58ecc37: Association request to the driver failed
wlx3476c58ecc37: Associated with 98:f1:99:70:8b:3e
wlx3476c58ecc37: WPA: Key negotiation completed with 98:f1:99:70:8b:3e [PTK=CCMP GTK=CCMP]
wlx3476c58ecc37: CTRL-EVENT-CONNECTED - Connection to 98:f1:99:70:8b:3e completed [id=0 id_str=]

 

5. 再度、NICを確認する。

正しい SSID が設定されている。

% iwconfig

wlx3476c58ecc37  IEEE 802.11bgn  ESSID:"aterm-bd4318-g"  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency:2.437 GHz  Access Point: 98:F1:99:70:8B:3E   
          Bit Rate:144.4 Mb/s   Sensitivity:0/0  
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:****-****-****-****-****-****-****-****   Security mode:open
          Power Management:off
          Link Quality=99/100  Signal level=49/100  Noise level=0/100
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

 

トラブルとその対策

その1:CUI で SSID にアクセスを試みた場合に、nl80211:Dirver does not support といったログが出て失敗する

  • エラーログ
% sudo wpa_supplicant  -i wlx3476c58ecc37 -c /etc/wpa_supplicant/wpa_supplicant.conf 
Successfully initialized wpa_supplicant
nl80211: Driver does not support authentication/association or connect commands
nl80211: deinit ifname=wlx3476c58ecc37 disabled_11b_rates=0
wlx3476c58ecc37: Failed to initialize driver interface
  • 対策
    • 上記は「nl80211 ドライバは非サポート」といったログだが、私は 9812cu ドライバを使っていた。
    • そこで、NIC が WN-G300UA の場合は wpa_supplicant に -D wext を指定して generic dirver として実行してみる。

 

その2:一度、wpa_supplicant により NIC が正しく起動したが、再度 wpa_supplicant を実行すると NIC の起動に失敗する

  • エラーログ
% sudo wpa_supplicant -D wext -i wlx3476c58ecc37 -c /etc/wpa_supplicant/wpa_supplicant.conf 
Successfully initialized wpa_supplicant
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ctrl_iface exists and seems to be in use - cannot override it
Delete '/var/run/wpa_supplicant/wlx3476c58ecc37' manually if it is not used anymore
Failed to initialize control interface '/var/run/wpa_supplicant'.
You may have another wpa_supplicant process already running or the file was
left by an unclean termination of wpa_supplicant in which case you will need
to manually remove this file before starting wpa_supplicant again.
  • 対策
    • エラーログを見ると、「You may have another wpa_supplicant process already running」とあり、すでに wpa_supplicant が動いているとある
    • よって、kill で該当プロセスを消してから、再度、wpa_supplicant を実行すれば良い。

  

その他

/proc/net/wireless

  • 無線LANの統計情報
Inter-| sta-|   Quality        |   Discarded packets               | Missed | WE
 face | tus | link level noise |  nwid  crypt   frag  retry   misc | beacon | 22
wlx3476c58ecc37: 0000   99.   47.    0.       0      0      0      0      0        0

/proc/net/dev

  • 有線(ethernet)と無線両方の統計情報
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
enp2s0:  110690    1718    0 1543    0     0          0         0    21830     206    0    0    0     0       0          0
virbr0-nic:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
wlx3476c58ecc37: 19715966   25616    0  548    0     0          0         0  4299168   22792    0    0    0     0       0          0
virbr0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
    lo:   27957     390    0    0    0     0          0         0    27957     390    0    0    0     0       0          0