2015年3月1日日曜日

Intel Edison の無線 LAN の IP アドレスを固定したい

 前回,Intel Edison で opkg upgrade すると Windows に対して USB OTG で接続できなくなったと書いた。 今回は Intel Edisoin の無線 LAN の固定 IP の設定の話を書こう。

  Intel Edison は極小サイズにもかかわらず,本体に無線 LAN と Bluetooth の機能を持っている。 実物を見ると,こんなに小さいのに?と感じてしまう。 無線 LAN の設定は,初ログイン後に
   # configure-edison --setup
というコマンド実行すると,パスワード,マシン名の後に設定できる。

 その Edison の無線 LAN の設定だが,デフォルトでは DHCP で IP アドレスを取得するように設定される。 しかし,場合によっては固定 IP にしたい場合もある。 今回は再起動しても固定 IP とする方法について書いておこう。 ちなみに,元ネタは新春電子工作!:“Edison”でロボットアームをグリングリン動かす(前編) (3/5)に書いてあった。 ここでも受け売りですねぇ…。

まずは,configure-edison --setup 実行後の ifconfig の結果を載せておこう。 louseb0wlan0 の3つが動いているのがわかる。
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:4480 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4480 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:340480 (332.5 KiB)  TX bytes:340480 (332.5 KiB)

usb0      Link encap:Ethernet  HWaddr 0e:f6:xx:xx:xx:xx
          inet addr:192.168.2.15  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::cf6:d9ff:fee9:6ac7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2310 errors:0 dropped:0 overruns:0 frame:0
          TX packets:237 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:330312 (322.5 KiB)  TX bytes:49790 (48.6 KiB)

wlan0     Link encap:Ethernet  HWaddr fc:c2:xx:xx:xx:xx
          inet addr:192.168.xx.xx  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1647 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1259 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:259878 (253.7 KiB)  TX bytes:823093 (803.8 KiB)
(ここでは念の為に MAC アドレスなどは伏せ字に変えてある。)

 さて,無線 LAN を固定化するには,以下のスクリプトをいじらないといけない。
   /etc/wpa_supplicant/wpa_cli-actions.sh
これは,無線 LAN ネットワークでの認証を受けるために必要な wpa_supplicant の起動のためのスクリプトみたい。 その中で,DHCP による通信の起動が設定されているので,それを固定 IP による起動に変更すればいいみたい。 wpa_cli-actions.sh の中の,以下にある部分(赤色の部分)が DHCP 接続の起動を表しているので, そこを変更すればよい。
if [ "$CMD" = "CONNECTED" ]; then
    kill_daemon udhcpc /var/run/udhcpc-$IFNAME.pid
    udhcpc -i $IFNAME -p /var/run/udhcpc-$IFNAME.pid -S
fi

 変更は,まず念の為にオリジナルの をバックアップしてから行う。
    # cp /etc/wpa_supplicant/wpa_cli-actions.sh /etc/wpa_supplicant/wpa_cli-actions.sh.org

次に,以下のように udhcpc のある行をコメントアウトし(赤色部分), そこに ifconfig と route という2行(青色部分)を追加する。
if [ "$CMD" = "CONNECTED" ]; then
    kill_daemon udhcpc /var/run/udhcpc-$IFNAME.pid
#     udhcpc -i $IFNAME -p /var/run/udhcpc-$IFNAME.pid -S
     ifconfig $IFNAME 192.168.xx.xx netmask 255.255.255.0
     route add default gw 192.168.10.1
fi
 これにより,次の再起動から無線 LAN の IP アドレスは固定される。 ちなみに,192.168.xx.xx の部分が Edison の IP アドレスを記述する部分であり, gw 192.168.10.1 の部分はルーターの持つ private 空間用のアドレスを記載する部分である。

 実際に起動すると,ifconfig で見た際,wlan0 の部分は以下のようになり, Bcast という部分が 0.0.0.0 から変更されていた。
wlan0     Link encap:Ethernet  HWaddr fc:c2:xx:xx:xx:xx
          inet addr:192.168.xx.xx  Bcast:192.168.255.255  Mask:255.255.255.0
          inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1511 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1456 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:141291 (137.9 KiB)  TX bytes:198780 (194.1 KiB)

 せっかくなので,/etc/wpa_supplicant の中にある設定ファイル(wpa_supplicant.conf)の 内容も載せておこう。 これは configure-edison --setup 直後のものである。 無線 LAN への接続パスワードは念の為に伏せ字にしておいた。
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
ap_scan=1

network={
  ssid="aterm-e1ad02-g"

  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP WEP104 WEP40
  eap=TTLS PEAP TLS
  psk="XXXXXXXXXXXX(password)"
}
Intel Edison で micro SD カードを使うに続く)

0 件のコメント: