Raspberry Pi 2で遊ぶ:無線LAN番外編

この記事は「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件のフィードバック

コメントを残す