OpenBlocks IoT VX2をいじるときに知っておくと良いこと

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

ども、ゲストの大瀧です。IoTゲートウェイの定番製品、OpenBlocks IoTを3年ぶりに触ってます。

最新機種のVX2を検証する機会があったので、いろいろいじるときに知っておくと良いことをまとめてみたいと思います。

基本操作

電源ボタンは無いので付属のACアダプタを接続すれば、本体の電源が入ります。初期状態で組み込みのLinux OS(Debian Stretch)が起動するので、ネットワーク経由のWeb管理画面USB経由のシリアルコンソールのいずれかで接続します。

Web管理画面ではOpenBlocks特有の機能や3G/LTEモジュールの接続設定など主なシステム構成、シリアルコンソールおよびSSHではCUI(Command Line Interface)でのLinux操作ができます。

ネットワーク

無線LANと有線LANからWeb管理画面にアクセスできます。初期状態ではSSH接続できないので、SSHを使いたい場合はWeb管理画面から許可設定をすると良いでしょう。

種別 本体の印字 Web管理画面のURL
(HTTPSも4430ポートでアクセス可)
Linuxの
インターフェース名
無線LAN - http://192.168.254.254:880 wlan0
有線LAN ETHER-0 http://192.168.253.254:880 eth0
有線LAN ETHER-1 http://192.168.252.254:880 eth1

URLはIPアドレスの3オクテットがそれぞれ異なるので注意しましょう。無線LANはVX2がアクセスポイントとして動作しているので、以下の要領で接続します。

SSID パスワード
iotfamily_<本体背面記載のシリアル番号> openblocks

有線LANではDHCPが動いていないので、接続したいインターフェースに合わせてPCやMacのIPアドレス(ETHER-0なら192.168.253.100/24など)を手動で設定しましょう。

初回アクセス時には使用許諾とWeb管理画面の管理者アカウント設定、ネットワーク設定が表示されるのでそれぞれ進めます。

許諾内容を確認し、「同意する」をクリックすればOKです。

管理者アカウントは、次回以降Web管理画面にログインする際に入力します。後述するrootユーザーとは別です。

管理者アカウントを設定すると、ネットワーク設定画面が表示されます。既存の無線LANにクライアントとして接続する場合など、必要に応じて設定を変更しましょう。

LTEモジュールを追加している場合は、電源を入れる前に本体にSIMカードを挿入し、この画面の「サービスネットワーク (モバイル回線) 」でAPNなどを設定、再起動してLTE回線が利用できます *1。あとはメニューを一覧してクラウド連携など、Web管理画面で何ができるのか眺めてみると良いでしょう。ドキュメントページにある「OpenBlocks IoT Family WEB UIセットアップガイド」が参考になります。

シリアルコンソール

Linuxのコマンド操作を行うのであれば、シリアルコンソールが手軽です。コマンド操作であればSSHを有効化して接続しても良いですがシリアルコンソールであれば起動時のブートローダにアクセスできるため、SSHではできない以下の操作が可能です。

  • OSイメージのバックアップ/リストア
  • ファクトリーリセット

これらについては後述します。

今回はmacOSからの接続方法をご紹介します。Windowsの場合はドキュメントの「OpenBlocks IoT Family 開発者向けガイド」を参照してください。macOSでは接続する前に、以下のリンクからドライバをダウンロードしインストールしておきます。

シリアルコンソールは、筐体前面左端のmicro USB経由でアクセスします。同梱のUSB-micro USBケーブルでPC/Macと接続すればOKです。写真のような感じでつなぎます。

接続できたらデバイスファイル/dev/cu.SLAB_USBtoUARTが作成されるはずなので、screenコマンドでシリアルコンソールにアクセスします。

$ screen /dev/cu.SLAB_USBtoUART 115200 -L
# [Enter]キー押下
Debian GNU/Linux 9 obsiot ttyS0

obsiot login:

初期のログインアカウントは以下です。

ユーザー名 パスワード
root 0BSI0T(オーではなくゼロ、アルファベットは大文字)

コマンド操作が終わったら、ログアウトしてC-a k(Ctrl+aを押した後に k)キーを入力すれば

Really kill this window [y/n]

と出るので、y[Enter]で終了します。コンソール接続なのでログアウトせずにUSBの抜き差しもできたりしますが、デバイスファイルの動作が不安定になることがあるので注意しましょう。

OSイメージのバックアップ/リストア

検証では「いろいろ設定した内容を保存したい」「設定した内容を別のマシンにコピーしたい」といったことがよくあると思います。そんなときにはOSイメージのバックアップ機能が便利でしょう。OpenBlocks IoTはいわゆるレスキューモード(OpenBlocks IoTではエマージェンシーブートモードと呼ぶ)が単体で実行できるので、USBメモリや外付けディスクなどの外部記憶にOSイメージをバックアップ/リストアすることができます。

シリアルコンソールで接続し、rebootコマンドで再起動すると、起動時にブートローダの画面が表示されます。


    GNU GRUB  version 0.97  (252K lower / 523264K upper memory)

 +-------------------------------------------------------------------------+
 | o OBS IoT VX - Normal boot                                              |
 | x OBS IoT VX - WebUI init boot                                          |
 | x OBS IoT VX - Emergency Image                                          |
 | x OBS IoT VX - Factory Image                                            |
 +-------------------------------------------------------------------------+
      Board: Aptio CRB
      Platform: Intel Bay Trail-I
      Hardware Secure Boot: Inactive
      UEFI Secure Boot: Inactive
        System Mode: Setup
        UEFI Secure Boot Mode: Custom
      GRUB Verified Boot: Unsupported
      Boot Device: UEFI OS
      Initial Root Device: (hd0,0)

      Use the ^ and v keys to select which entry is highlighted.
      Press enter to boot the selected OS, 'e' to edit the
      commands before booting, 'a' to modify the kernel arguments

ここで、キーボードの/キーでOBS IoT VX - Emergency Imageを選択し[Enter]キーを押下すればレスキューモードで起動します。レスキューモードのログインアカウントは以下です(通常起動とパスワードが異なります)。

ユーザー名 パスワード
root root

ログインしたら、内蔵ディスクの領域/dev/mmcblk0p2と外部記憶をそれぞれマウントしtarアーカイバなど任意のコマンドでバックアップを取得し外部記憶に保存します。

mkdir /mnt/mmc /mnt/usb
mount /dev/mmcblk0p2 /mnt/mmc
mount /dev/sda1      /mnt/usb   # 外部記憶のデバイスファイルが/dev/sda1の場合
rm -rf /mnt/var/lib/bluetooth/* # ドキュメント記載の、ハードウェア固有ファイルの削除
cd /mnt/mmc
tar --exclude=lost+found zcf /mnt/usb/backup.tgz .
cd /
umount /mnt/mmc /mnt/usb

リストアは、既存のディスク領域をフォーマットしてバックアップファイルを展開すればOKです。

mkfs -t ext4 /dev/mmcblk0p2    # 既存のデータがすべて削除されるので注意
mkdir /mnt/mmc /mnt/usb
mount /dev/mmcblk0p2 /mnt/mmc
mount /dev/sda1      /mnt/usb  # 外部記憶のデバイスファイルが/dev/sda1の場合
cd /mnt/mmc
tar zxf /mnt/usb/backup.tgz
cd /
umount /mnt/mmc /mnt/usb
reboot

開発者ガイドを見ると自動化する仕組み(DEB_CONFIGinit.shファイル)もあるようなので、こちらを試してみるのもいいかもしれません。

ファクトリーリセット

検証が一通り完了したら、初期設定に戻したいこともあるでしょう。シリアルコンソールからファクトリーリセットをかけることができます。手順は簡単でシリアルコンソールで接続して、再起動しブートローダーのメニューからOBS IoT VX - Factory Imageを選んで[Enter]キーを押すだけです。


    GNU GRUB  version 0.97  (252K lower / 523264K upper memory)

 +-------------------------------------------------------------------------+
 | o OBS IoT VX - Normal boot                                              |
 | x OBS IoT VX - WebUI init boot                                          |
 | x OBS IoT VX - Emergency Image                                          |
 | x OBS IoT VX - Factory Image                                            |
 +-------------------------------------------------------------------------+
      Board: Aptio CRB
      Platform: Intel Bay Trail-I
      Hardware Secure Boot: Inactive
      UEFI Secure Boot: Inactive
        System Mode: Setup
        UEFI Secure Boot Mode: Custom
      GRUB Verified Boot: Unsupported
      Boot Device: UEFI OS
      Initial Root Device: (hd0,0)

      Use the ^ and v keys to select which entry is highlighted.
      Press enter to boot the selected OS, 'e' to edit the
      commands before booting, 'a' to modify the kernel arguments

まとめ

OpenBlocks IoT VX2のざっくり知っておくと良い基本操作をご紹介しました。BX1にあったストレージモードの切り替えがなくなり、シンプルに扱えるようなった印象を受けました。クラウド連携が当時よりもかなり強化されているようなので、それらを触ったりSORACOMサービスとの組み合わせをいろいろ考えてみたりしようと思います。

参考URL

脚注

  1. モバイル回線と無線LANのクライアントモードはOpenBlocksの制約があり共存できない点に注意しましょう。