RaspberryPiを車載のデータレコーダとして使用し、帰宅して車庫に入ったり外出先でホットスポットなどでWiFiがつながれば自動的にデータをアップロードするようなアプリケーションを考えている。 まず一番最初に実現することは、自宅のWiFi LANに接続できるようにすること。 ハードウェアEdimax EW-7811Unという802.11nをサポートするUSBの超小型ドングルを使ってうまく行った。$10程度と値段も手頃。ソフトウェアこちらのサイトをパクらせていただいた。我が家のWLANはWPA2-PSK-TKIPでSSIDのブロードキャストなし。 |
まず、何もしない状態から。
pi@raspberrypi$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS] pi@raspberrypi$ iwconfig wlan0 wlan0 unassociated Nickname:"<WIFI@REALTEK>" Mode:Managed Frequency=2.412 GHz Access Point: Not-Associated Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 |
受信できるWiFiのAPを探してみる。
pi@raspberrypi$ iwlist wlan0 scan | grep ESSID ESSID:"" ESSID:"" ESSID:"NETGEAR16" |
iwconfigで秘密のSSIDを指定してやる。
pi@raspberrypi$ sudo iwconfig wlan0 essid "my_ssid" pi@raspberrypi$ iwlist wlan0 scan | grep ESSID ESSID:"my_ssid" ESSID:"" ESSID:"NETGEAR16" pi@raspberrypi$ iwconfig wlan0 wlan0 IEEE 802.11bg ESSID:"my_ssid" Nickname:"<WIFI@REALTEK>" Mode:Managed Frequency:2.412 GHz Access Point: D8:EB:97:B1:33:99 Bit Rate:54 Mb/s Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Power Management:off Link Quality=100/100 Signal level=65/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 |
次はWPAの認証と接続。前述のサイトの指示に従って、WPA2-PSK-TKIP用のwpa_supplicant.confファイルを作る。/etc/wpa_supplicant/wpa_supplicant.confはすでに存在しているが、ファイルの内容が余りにも違うので、別にファイルを作ることにする。
注意:このファイルは平文のPSKを含むので、必ずオーナをスーパーユーザにしてオーナ以外の読み出しを禁止すること。
pi@raspberrypi$ sudo cat /etc/wpa_supplicant/wpa_supplicant-my_ssid.conf network={ ssid="my_ssid" proto=RSN key_mgmt=WPA-PSK pairwise=TKIP group=TKIP psk="xxxxxxxx" } pi@raspberrypi$ ls -l /etc/wpa_supplicant/wpa_supplicant-my_ssid.conf -r-------- 1 root root 218 May 20 17:09 /etc/wpa_supplicant/wpa_supplicant-my_ssid.conf |
ごのファイルで認証と接続を実行する。
pi@raspberrypi$ sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant-my_ssid.conf rfkill: Cannot open RFKILL control device rfkill: Cannot open RFKILL control device ioctl[SIOCSIWAP]: Operation not permitted ioctl[SIOCSIWENCODEEXT]: Invalid argument ioctl[SIOCSIWENCODEEXT]: Invalid argument wlan0: CTRL-EVENT-DISCONNECTED bssid=00:00:00:00:00:00 reason=0 ioctl[SIOCSIWENCODEEXT]: Invalid argument ioctl[SIOCSIWENCODEEXT]: Invalid argument wlan0: Trying to associate with d8:eb:97:b1:22:88 (SSID='my_ssid' freq=2412 MHz) wlan0: Association request to the driver failed wlan0: Associated with d8:eb:97:b1:33:99 wlan0: WPA: Key negotiation completed with d8:eb:97:b1:33:99 [PTK=TKIP GTK=TKIP] wlan0: CTRL-EVENT-CONNECTED - Connection to d8:eb:97:b1:33:99 completed (auth) [id=0 id_str=] ^Z [1]+ Stopped sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant-my_ssid.conf pi@raspberrypi$ bg [1]+ sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant-my_ssid.conf & |
ここでifconfigを実行してみると、あ~ら不思議、dhcpもちゃんと動いてWLANが使えるようになっている。
pi@raspberrypi$ ifconfig wlan0 wlan0 Link encap:Ethernet HWaddr 80:1f:02:86:07:e0 inet addr:192.168.0.115 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:450574 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:73019668 (69.6 MiB) TX bytes:729719 (712.6 KiB) |
以上の操作をシステム起動時に自動的に実行させる。私はDebian系のRCファイルはまったく分からないが、前述のサイトの指示にしたがって/etc/network/interfacesを変更してみた。空色の部分が変更・追加した所。
pi@raspberrypi$ cat /etc/network/interfaces # $Header: /etc/network/RCS/interfaces,v 1.2 2013/05/21 00:17:33 root Exp $ auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 # Disabled by h ##iface wlan0 inet manual ##wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf ##iface default inet dhcp # Added by h # http://www.youchikurin.com/blog/2007/06/linuxlan_1.html auto wlan0 iface wlan0 inet dhcp wireless-essid my_ssid wpa-conf /etc/wpa_supplicant/wpa_supplicant-my_ssid.conf |
これで自宅のWLANに常に接続できるようになった。次は、現在見える(あるいは見えない)SSIDから予め登録された「安全なホットスポット」のリストを照合して自動的に接続する方法を見つけるあるいは作ることだが、それは次回に…。
0 件のコメント:
コメントを投稿