OpenBlocks IoT BX1:コンソールによるネットワーク設定と初期化の方法

2015.09.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、せーのです。今日はOpenBlocks IoT BX1で私がよくハマっていたネットワーク設定のリカバリについて書きます。

前回までのおさらい

前回は外観の説明とWeb UIによる初期設定を行いました。

OpenBlocks IoT BX1を触ってみた

ここで私がハマっていたのがネットワークに繋がらない、という問題でした。 SSID, Passphrase, dhcp, 特に間違ったことはしていないつもりなのですが、これが繋がらない。 元々は独自のSSIDを持っていたものを既存のSSIDに書き換えるので、繋がらない=IPが振られない、ということでWeb UIがどうがんばっても表示されなくなるんですね。 ということでこの方法を覚えておけばいざ繋がらなくなった時も手動でネットワークを書き換えてなんとかWeb UIを復活させることができました。

コンソールからのネットワークの設定

接続する

それではやっていきましょう。まずはOpenBlocks IoT BX1をPCに接続します。

openblocks22

IPが振られていないのでScreenで接続します。

Tsuyoshi$ screen /dev/cu.usbserial-A903B33N 115200 -L

cu.usbserial...の後はデバイスによって違いますのでcu.usくらいでタブキーを押して自動補完しましょう。 Enterキーを2回押すとIDとPASSの入力画面に移ります。[Sorry, could not find a PTY]と出てきた時はケーブルを抜き差ししてもう一回やってみましょう。 ID/PASSはこちらを参照してください。

Debian GNU/Linux 7 obsiottest.example.org ttyMFD2

obsiottest login: root
Password:
Last login: Sat Jan  1 11:00:13 JST 2000 on ttyMFD2
Linux obsiottest.example.org 3.10.17-poky-edison #3 SMP PREEMPT Mon Apr 20 13:05:54 JST 2015 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@obsiottest:~#

Passphraseを暗号化する

次に繋げる対象のSSIDとPassphraseをファイルにまとめ、SSIDのPassphraseを[wpa_passphrase]コマンドで暗号化します。

root@obsiottest:~# wpa_passphrase [SSID] [パスフレーズ] > /etc/wpa_supplicant/wpa_supplicant.conf

この状態で出来たファイルを確認してみましょう。

network={
        ssid="SSID"
        #psk="パスフレーズ"
        psk=暗号化されたパスフレーズ
}

こんな感じになっているかとおもいます。

内容を追加してwpa_supplicantで設定

次に無線の種類によってこのファイルに追記していきます。私の環境は

  • ルータ:AirMac Extreme
  • 帯域:2.4GHz
  • 認証方式:WPA2パーソナル(WPA2-PSK)
  • 暗号方式:AES

でしたので追記としてはこのようになります。

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
        ssid="SSID"
        proto=WPA2
        key_mgmt=WPA-PSK
        group=CCMP
        #psk="パスフレーズ"
        psk=暗号化されたパスフレーズ
}

まず上のctrl_interfaceはwpa_cliでwpa_supplicantコマンドを扱う際に明記する必要があります。ap_scanはAPのスキャン方法の選択です。それぞれ

  • ap_scan=0 : ドライバがスキャンする
  • ap_scan=1 : wpa_supplicantがスキャンする
  • ap_scan=2 : ステルスAPに接続する時に使用

後はprotokey_mgmtgroupの組み合わせで色々変わります。これらを表にまとめるとこんな感じになります。

プロパティ WPA-PSK/AES WPA-PSK/TKIP WPA2-PSK/AES WPA2-PSK/TKIP
proto WPA WPA WPA2 WPA2
key_mgmt WPA-PSK WPA-PSK WPA-PSK WPA-PSK
pairwise CCMP TKIP CCMP TKIP
group CCMP TKIP CCMP TKIP

※ちなみに[RSN]は[WPA2]と同じ規格を指します。

設定ファイルができたらこれを元に設定していきます。設定はwpa_supplicantコマンドで行います。主な オプションはこのようになっています。

  • -B : バックグラウンドでデーモンが実行
  • -s : syslogにログを吐く
  • -P : PIDファイルを指定
  • -D : ドライバを指定
  • -c : 設定ファイルを指定
wpa_supplicant -s -B -P /var/run/wpa_supplicant.wlan0.pid -i wlan0 -D nl80211,wext -c /etc/wpa_supplicant/wpa_supplicant.conf

これで無線LAN関係の設定がwlan0に設定されました。

IPの設定

次にIPを設定します。IPは/etc/network/interface に設定されています。

# vi /etc/network/interfaces

中身はこんな感じになっているかと思います。

/etc/network/interface

auto lo
iface lo inet loopback

#auto wlan0
#iface wlan0 inet dhcp

auto wlan0
iface wlan0 inet static
     address 192.168.254.254
     network 192.168.254.0
     netmask 255.255.255.0
     broadcast 192.168.254.255

wlan0をDHCP設定にするのであれば上のコメントアウトを外して下の固定IPの設定をまるっとコメントアウトしてしまえばOKですね。固定IPの場合は下のIPを修正します。それぞれ設定したら先程作成したファイル[wpa_supplicant.conf]をWPA設定ファイルとして指定します。既存のネットワークに繋げる場合であればデフォルトゲートウェイも指定したほうが良いかと思います。つまりこんな感じです。

auto wlan0
iface wlan0 inet static
     address 192.168.1.17
     network 192.168.1.0
     netmask 255.255.255.0
     broadcast 192.168.1.255
     gateway 192.168.1.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

DNSの設定を確認します。DNSは/etc/resolv.confに書いてあります。

/etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

ここはそれぞれの環境にあったDNSを設定して下さい。私はとりあえずGoogleを設定しました。

ここまで設定したらネットワークを再起動するかOS自体を再起動します。

root@obsiottest:~# ifdown wlan0
root@obsiottest:~# ifup wlan0
root@obsiottest:~# reboot

再起動が終わったらifconfigコマンドでwlan0を確認し、IPが振られていればOKです!

初期化の方法

にっちもさっちもいかなくなった場合、全てを元に戻したい時も出てくるかと思います。その時はこの方法をお試し下さい。

上の方法でネットワークが繋がっていれば「工場出荷用データ」というのが公式サイトにあるので、それを落としてきて入れ替えればOKです。

ストレージ併用モードの解除

まずストレージを外します。

root@obsiottest:~# e2label /dev/mmcblk0p10 ""
root@obsiottest:~# reboot

工場出荷用データの転送

次にmacであればcyberduck、WindowsであればSCP等を使ってここにある工場出荷用データをダウンロードしてrootディレクトリ直下に転送します。

工場出荷用データを展開してリブート

最後に転送したデータを展開してリブートします。 SIMが入っていないとエラーログが出るそうなので/dev/nullに突っ込んでおきます。

root@obsiottest:~# mkfs -t ext4 -L DEBIAN /dev/mmcblk0p10
root@obsiottest:~# mount /dev/mmcblk0p10 /mnt
root@obsiottest:~# tar xzf /root/bx1_userland_web104-9.tgz -C /mnt 2> /dev/null
root@obsiottest:~# umount /mnt
root@obsiottest:~# rm -f /root/bx1_userland_web104-9.tgz
root@obsiottest:~# reboot

これで工場出荷時にリセットされました。

まとめ

いかがでしたでしょうか。今回はOpenBlocksというよりLinuxの無線LAN設定方法、みたいな感じですので応用が効くかと思います。 次回はセンサーデータの取得方法について書きたいと思います。