この記事は「Raspberry Pi記事まとめ」に集約しています。
無線LAN関係の番外編を紹介します。
- Wifiの自動再接続
- 複数のAPを登録
Wifiの自動再接続
※ 【2016/02/04】あまり意味がなさそうなので今はやってません。
Raspbianの仕様なのかwpa_supplicantの仕様なのか、無線AP側がダウンして復帰してもRPi側の無線が再接続してくれないという現象があります。
自動監視システムや停電による再起動に対応できないので、自動再接続できるようにします。
参考サイト:ハードウェア – Raspberry PiでWi-Fi切断時、自動的に再接続されるようにする方法 – Qiita
スクリプトの作成
ルータのゲートウェイにpingを打って反応がなかったら再接続処理をする、という流れです。
なんかviだと今まで触ってた挙動と違うのでnanoで書いてます。
$ nano wifi_reconnect.sh
#!/bin/sh
ping -c 1 192.168.24.1 test $? -eq 1 && sudo /etc/ifplugd/action.d/action_wpa wlan0 up
参考サイトでは最後の行を「test $? -eq 1 && sudo /etc/ifplugd/ifplugd.action wlan0 up」とあったのですが、おそらくJessieから仕様変更したのか、掲載されているパスでは動作しません。多分wheezyだと前の構文でいけると思います。
ちなみに、action_wpaは「/etc/wpa_supplicant/action_wpa.sh」のエイリアスなので、このパスを指定してもいけるんじゃないかと。
postfixのインストール
postfixが入ってないと、cron実行時に「No MTA installed, discarding output」というログが出てしまうので一応インストールしときます。
$ sudo apt-get install postfix
なんかいろいろ聞かれるけど適当に。本格的に使う予定が無いのであれば「ローカル」でいいでしょう。
cronで定期監視
参考サイトでは1分ごとに接続テストするようになっていますが、ここでは30分ごとにしておきます。常時動いてなきゃいけないというわけではないので。
$ sudo crontab -e
【最下行に追加】
*/30 * * * * sh ~pi/wifi_reconnect.sh
これで30分ごとに定期チェックするようになります。
複数のAPを登録
※Jessieから固定IPの方法が変わりました。詳細は「Raspberry Pi 2のIPアドレス設定方法を修正した – 継ぎ接ぎノウハウの集積所」。
wpa_supplicantは複数のAPを登録したり、個別にIPを設定したりできることが分かりました。
参考サイト:Raspberry Piで複数Wifiで個別の固定IPを指定する方法 | 1ft-seabass.jp.MEMO
APパスフレーズを取得
APのSSIDとパスフレーズをwpa_suppricant用に取得するには、以下のコマンドを使います。
$ sudo wpa_passphrase ESSID パスフレーズ
network={
ssid=“ESSID”
#psk=“パスフレーズ(原文)”
psk=パスフレーズ(暗号化)
}
出てきた値をメモ帳に登録します。
ちなみに、この時点でAPに接続してある必要はなく、ほかに使いそうなAPがあればどんどん記録しときます。
設定ファイルに書き込み
記録したAP情報を貼り付けて、付属情報を追加します。
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid=“ESSID1"
psk=ESSID1のパスフレーズ(暗号化)
priority=0
key_mgmt=WPA-PSK
id_str=“ESSID1の識別名”
}
network={
ssid=“ESSID2”
psk=ESSID2のパスフレーズ(暗号化)
priority=1
key_mgmt=WPA-PSK
id_str="ESSID2の識別名"
}
ポイントはpriorityとid_strです。priorityは優先度で、id_strは次のIP情報を書くときの識別名になります。pskの原文は使わないので消してあります。
正確には暗号化方式とか詳細に書くべき何だろうけど、WPA-PSKで自動判別してるみたいなんでこのままで。
次にIPアドレス関連を設定します。
$ sudo vi /etc/network/interfaces
(省略)
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
iface ESSID1の識別名 inet static
address 192.168.24.199
netmask 255.255.255.0
gateway 192.168.24.1
iface ESSID2の識別名 inet dhcp
ここでのポイントはwpa-roamとwpa-supplicant.confでつけた識別名を入れてるところです。
wpa-roamは自動切り替えに使うもので、複数各場合はwpa-confではなくwpa-roamにする必要があります。
識別名の下にIPアドレス等を入れれば、一つ目は固定IPで、二つ目はDHCPでなんてことができます。
“Raspberry Pi 2で遊ぶ:無線LAN番外編” への1件のフィードバック