Let Me Be Me

大道無門千差有路。透得此關乾坤獨歩。

Raspberry Pi でWiFiの設定をする

前回の記事でRaspberry PiにRaspbianを入れるところまでやったので、今回はWiFiでアクセスするところまでやります。

f:id:junsumida:20141123224255j:plain

(photo credit: mista stagga lee via photopin cc)

無線子機が認識されているかの確認

$ sudo raspi-config
# root partitionの拡張だけ
$ sudo apt-get update
$ sudo apt-get upgrade -y
$ dmesg
[ 7770.741286] usb 1-1.2: new high-speed USB device number 4 using dwc_otg
[ 7770.857327] usb 1-1.2: New USB device found, idVendor=0411, idProduct=01a2
[ 7770.857361] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 7770.857377] usb 1-1.2: Product: 802.11 n WLAN
[ 7770.857391] usb 1-1.2: Manufacturer: Ralink
[ 7770.857404] usb 1-1.2: SerialNumber: 1.0
[ 7770.965567] cfg80211: Calling CRDA to update world regulatory domain
[ 7771.151314] usb 1-1.2: reset high-speed USB device number 4 using dwc_otg
[ 7771.260613] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 3070, rev 0201 detected
[ 7771.299159] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 0005 detected
[ 7771.331996] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[ 7771.338409] usbcore: registered new interface driver rt2800usb
[ 7771.502034] ieee80211 phy0: rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'
[ 7771.505254] ieee80211 phy0: rt2x00lib_request_firmware: Info - Firmware detected - version: 0.29

ifconfig 
wlan0 Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
UP BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000 
RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

WiFi接続の設定

ググると結構Raspberry PiのWiFi接続の情報は出てくるのですが、どれも単体ではうまくいかなかったので、若干の試行錯誤が必要でした。

前提の確認
  • wpa_supplicantというWPAクライアントを使う
  • Raspberry Pi (Raspbian) にはデフォルトでwpa_supplicantが入っている
CCMP
TKIP
WPA2-PSK
  • WPA/WPA2のパーソナルモード

設定ファイルの編集と反映

$ wpa_passphrase SSID PASS_PHRASE
network={
    ssid="SSID"
    #psk="PASS_PHRASE"
    psk=aeba1e8bc9ea7d811c3b069053c54538d262cf070268ec42f600bd8325dbf419
}
# #pskの行は不要
# 生成した設定を下記のファイルに追記します

$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf 
network={
    proto=WPA # プロトコル, WPAの場合 (WPA2の場合は RSN) 
    key_mgmt=WPA-PSK # ルーターの設定によります 
    pairwise=CCMP # AES (unicast: one-to-one の通信時の暗号化方式)
    group=CCMP # AES (multicast, broadcat: one-to-manyの暗号化方式)
    ssid="SSID"
    psk=aeba1e8bc9ea7d811c3b069053c54538d262cf070268ec42f600bd8325dbf419
}

$ chmod 0600 /etc/network/interfaces
# pre-shared key (PSK) 流出防止
$ sudo vi /etc/network/interfaces


auto wlan0 # 起動時にinterfaceをupする
allow-hotplug wlan0 # カーネルがnetwork interfaceを認識した時にup
iface wlan0 inet dhcp 
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf # wpa-roamだったのをwpa-confにしました。違いはよくわかってないです...汗

$ sudo /etc/init.d/networking restart

$ ifconfig
wlan0     Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx  
          inet addr:192.168.11.15  Bcast:192.168.11.255  Mask:255.255.255.0

基本的には、これで設定完了です。

Troubleshooting

Raspberry Piにsshが通らない

Raspberry Pi側でipアドレスが取得できているのに、Raspberry Pi <---> Macbook Air 間でpingが通らない、sshもできないで困りました。こちらの記事によると、BUFFALOのルーターを使っていて、ファームウェアが古い場合、この現象が起きているようだったので、v1.8.2 => v1.8.6にアップデートしたところ解決しました。

時間が経つとWiFiの接続が切れる?

WiFiの接続が切れた場合に再接続しないことがあるようですが、この辺(wireless - How to automatically reconnect WiFi? - Raspberry Pi Stack Exchange)を参考にすると良さそうですね。

WHR-G301N での設定

自宅のWiFiルーターが、WHR-G301Nなのですが、SSID1が、WPA/WPA2-Mixedだったため、上記の設定ではダメでした。SSID2 (WPA-PSK-AES)を使うことで、上記の設定で解決しました。

WPA/WPA2-Mixedだと WPA-TKIPとWPA2-AESしかダメなんだろうか...。

参考文献