Raspberry Pi を無線化
Wi-fi ドングルの WLI-UC-GNM を使った。
まずUSBポートに無線LANアダプタをさして、Raspbianを起動。sudo lsusb で見るとで正しく認識されている。
1 |
Bus 001 Device 004: ID 0411:01a2 BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070] |
また、sudo ifconfig で見ると、Wi-fi は、wlan0 として認識されている。
SSID と PASSPHRASE(実際の環境に合わせて書き変えること) を以下の様に指定する。
sudo wpa_passphrase SSID PASSPHRASE >> /etc/wpa_supplicant/wpa_supplicant.conf
1 2 3 4 |
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1network={ ssid="SSID" #psk=PASSPHRASE psk=英数字の羅列 } |
の様に出力されるので、以下の様に修正
1 2 3 4 5 6 7 8 9 |
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1network={ proto=WPA key_mgmt=WPA-PSK pairwise=CCMP group=CCMP priority=2 ssid="SSID" psk=英数字の羅列 } |
起動時に無線LANに接続するよう設定。
sudo vi /etc/network/interfaces
1 2 3 4 5 6 7 8 9 10 11 12 |
auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 #iface wlan0 inet manual #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp |
設定が完了したら再起動して、wlan0 から接続できればOK。
その後の顛末:
dhcp だと、リース時間が切れるとつながらなくなる罠。
- リース時間をめっちゃ長くする。
- 一定時間で再接続する。
- 固定IPアドレスに変更する。
などの対応が必要だね。
その後のその後の顛末:
- dhcpのリース時間を長くした。
- dhcpのリースをマックアドレスで固定した。
なのに切れる。
どうやらパワーマネジメントがオンになっていて、無線LANが切れると再接続しないらしい。
/etc/network/interfaces に
1 |
wireless-power off |
と書くと、パワーマネジメント機能がオフになるらしい。
設定して再起動したら、Power Management が off になったよ。
1 2 3 4 5 6 7 8 9 10 11 |
root@raspberrypi:/etc/apt# iwconfig wlan0 IEEE 802.11bgn ESSID:"xxxxxxxxxxx" Mode:Managed Frequency:2.462 GHz Access Point: xx:xx:xx:xx:xx:xx Bit Rate=65 Mb/s Tx-Power=20 dBm Retry long limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality=61/70 Signal level=-49 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:92 Invalid misc:27 Missed beacon:0 lo no wireless extensions.eth0 no wireless extensions. |
それでも切れてしまったので、今度は無線LANを dhcp から固定アドレスに変更
sudo vi /etc/network/interfaces
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet dhcp auto wlan0allow-hotplug wlan0 #iface wlan0 inet manual #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf #iface wlan0 inet dhcp iface eth0 inet static address 192.168.0.3 netmask 255.255.255.0 gateway 192.168.0.1 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp |
sudo vi /etc/resolv.conf
1 |
nameserver 192.168.0.1 |
これでも、切れてしまった。
クライアントして入り切りするのなら良いけれど、サーバ用途で常時接続に無線LANを使うのは難しいってことかなあ。
解決しました。(力技だけど)いろいろ調べると無線が切断されると再接続されないのが問題らしい。なので、切れたら再接続するスクリプトを組んで cron に登録してみた。
/home/pi/wlan0restart.sh
1 2 3 4 5 6 7 |
#!/bin/sh res=`/sbin/ifconfig wlan0 | /bin/grep "inetアドレス:"` ←① echo "$res" if [ "$res" = "" ]; then sudo /etc/init.d/networking restart logger "networking restarted" fi |
※①は英語環境だと ”inet addr:” とかになるので適宜修正してね。
1 |
*/5 * * * * /home/pi/wlan0restart.sh |
その後、/var/log/messages を見てみると
1 2 3 4 5 |
May 14 07:05:03 raspberrypi kernel: [69916.507287] wlan0: associated May 14 07:05:04 raspberrypi kernel: [69916.647761] ieee80211 phy0: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 0 in queue 2 May 14 07:05:04 raspberrypi kernel: [69916.647860] ieee80211 phy0: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 0 in queue 2 May 14 07:05:04 raspberrypi kernel: [69916.647886] ieee80211 phy0: rt2800usb_entry_txstatus_timeout: Warning - TX status timeout for entry 0 in queue 2 May 14 07:05:04 raspberrypi logger: networking restarted |
と正しく再起動していた。
なるほど、原因はタイムアウトだったのね。それ程不安定な環境じゃないと思うんだけどなあ。
でも、これで固定IPからDHCPに戻してもなんとかなりそうだね。