ラズパイwifi設定

ラズパイをヘッドレス運用でwifiを使いたい。wpa_supplicantを使って設定する方法のメモ。

設定ファイルはネットの情報を参考にしたらハマったので本家のREADMEを参考にした。

http://w1.fi/cgit/hostap/plain/wpa_supplicant/README

# vi /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US

network={
   ssid="xxxxxxxx"
   scan_ssid=1
   key_mgmt=WPA-PSK
   psk="xxxxxxxx"
}

取り敢えず接続してみる。エラーがたくさん出たがなんだかんだつながった!?

# wpa_supplicant -Dwext -iwlan0 -c wpa_supplicant.conf
Successfully initialized wpa_supplicant
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWSCAN]: Device or resource busy
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
ioctl[SIOCSIWSCAN]: Device or resource busy
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
ioctl[SIOCSIWSCAN]: Device or resource busy
wlan0: CTRL-EVENT-SCAN-FAILED ret=-1 retry=1
wlan0: Trying to associate with 10:6f:3f:87:fd:a1 (SSID='xxxxxxx' freq=5200 MHz)
Failed to add supported operating classes IE
wlan0: Associated with 10:6f:3f:87:fd:a1
wlan0: WPA: Key negotiation completed with 10:6f:3f:87:fd:a1 [PTK=CCMP GTK=TKIP]
wlan0: CTRL-EVENT-CONNECTED - Connection to 10:6f:3f:87:fd:a1 completed [id=0 id_str=]
#
# iwconfig 
wlan0     IEEE 802.11  ESSID:"KADYNET"  
          Mode:Managed  Frequency:5.2 GHz  Access Point: 10:6F:3F:87:FD:A1   
          Bit Rate=135 Mb/s   Tx-Power=31 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
          Link Quality=70/70  Signal level=-30 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

eth0      no wireless extensions.

lo        no wireless extensions.

ラズパイではdhcpクライアントが動いていて、Wifiも接続できたら勝手にipアドレスが取得できていた。

あとはサービスでリブート後も毎回自動でwifiでipアドレスを取得するようにする。

# cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system
#
# vi /etc
[Unit]
Description=WPA supplicant
Before=network.target
After=dbus.service
Wants=network.target
 
[Service]
Type=dbus
BusName=fi.w1.wpa_supplicant1
#ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
# 元々の行をコメントアウトして、いま編集した設定ファイルとwlan0で動作するように書き直す。
ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0
 
[Install]
WantedBy=multi-user.target
#Alias=dbus-fi.w1.wpa_supplicant1.service 
# このエイリアスはコメントアウト

不思議なのはsystemctlコマンドを発行せずともactiveかつenable状態になっていたので特に何もせずリブート後、無事にwlan0でipアドレス取得出来ているのを確認して終了。