“Intel Edison Compute Module – Firmware R2-BETA-WW05-15”について

はじめに

2015年3月26日(木)に「Intel Edison勉強会 第2回目: OSのアップデートが来ました!」というのがあり、私も「Intel Edison Compute Module Firmware Release 2 BETA WW05-15」についてのセッションを受け持ちました。その際に使用した資料(スライド)の配布と、当日口頭で話をした内容を盛り込んでまとめたメモを公開します。

資料(スライド)について

当日使用した資料(PowerPoint形式のスライド)をPDF化したファイルを用意しました。このファイルは以下の条件で提供するものです:

  • 「Intel Edison勉強会」で使用された資料を共有する目的で配布するものであり、他の意図は全くありません。
  • このファイルはありのままで提供されるもので、発表者である“さかきけい”は内容について事前に問題点を承知しているか否かにかかわらず、一切保証しません。
  • 発表以後に気付いた内容の誤りや誤字などは修正していません。
  • 各種商標および登録商標等については概ね省略しています。
  • “さかきけい”に限らず、他の関係者は一切責任を負いません。利用する方々の責任においてのみ、使用することができます。
  • 本ファイルの著作権などの諸権利(日本国が各国と結んでいる条約上の権利を含む)について“さかきけい”はすべてを留保します。

【PDF】自己の責任において使用することに同意してダウンロードします。

メモにまとめたものについて

以下にメモにまとめたものを公開します。資料(スライド)にセッションの発表時に口頭で説明したものを盛り込んだ上で、プラス・アルファしたものです:


Intel Edison Compute Module
Firmware R2-beta-WW05-15

R1最後のリリースと比較してR2で変更されたことのまとめ
・・・・のようなものです。

作成:さかきけい
https://kei-sakaki.jp/

どこまでやるの?

  • 全部紹介したいのはやまやまですが、細かいところまで始めると数時間必要になるので、大きな変更・追加を中心にしたいと思います。
  • Intel Corporationが作成したページの情報を基本にそこから派生した情報を拾っています。

Intel Edisonファーム・ウェアの種類

バージョン 内容
初期プレインストール版 シリアル・コンソールで文字入力を取りこぼすバージョンとして有名です。
Release-1 WW36-14 Intel Edison発売時に公開されていたバージョンで、最初からこのバージョンに更新して使用することが推奨されていたもので、シリアル・コンソールで文字入力を取りこぼさなくなっています。
Release-1 maint WW42-14 日本でのIntel Edison発売後すぐに公開されたバージョンです。このため初めて使うときにはこのバージョンを使っていた人も多いのではないかと思います。
現在のところR1最後のリリース版です。
Release-2 beta WW05-15 Release 2のベータ版です。概ねRelease 2の機能はこれで固まっているのだろうと思われます。

ファームウェアの更新方法について

R2-beta-ww05-15ではパーティションの構成が変更されているので、一般的な方法(USBで接続した時に認識されるストレージにファームウェア・イメージを載せて、Linuxコマンド・ラインから「reboot ota」を実行する方法)ではなく、「flashall.bat」あるいは「flashall.sh」を実行して完全に新しいファーム・ウェアで初期化する方法を使用することをお勧めします。
※初期化なので設定内容やユーザーのファイル等は全部消えます!

Windows 7での更新例

  1. 更新に使用する「dfu-util.exe」を入手します。今回は下記URLよりビルド済みのものをダウンロードさせていただきました:
    https://dl.dropboxusercontent.com/u/54378433/dfu-util/dfu-util.exe
  2. Intel Corporationのサイトからr2-beta-WW05-15のイメージ・ファイルをダウンロードして任意のフォルダーに展開します。
  3. そのフォルダーに先ほどダウンロードしたdfu-util.exeを置きます。
  4. Intel Edisonが該当パソコンに接続されていないこと、および電源が切れていることを確認します(すぐに接続して使用できるようにしておきます)。
  5. 展開したフォルダーの「flashall.bat」を実行します。
  6. Intel Edisonをパソコンへ接続して起動させます。
  7. しばらくするとIntel Edisonを検出してイメージの書き込みが開始されるので終了するまで待ちます。私の環境では5分ほどかかりました。
  8. 「flashall.bat」の実行終了後2分間は接続したままにして電源を落とさないようにして待ちましょう(flashall.batの最後にそういう表示が出ます)。
  9. 正常に起動すれば完了です。

Windows 7で更新を行った際の表示例

Windows 7でflashall.exeを使用した書き込み例

ファーム・ウェアの更新後の状態

以下にRelease 1最後のバージョンであるr1-maint-ww42-14、flashall.batで書き込んだRelease 2のベータ版であるr2-beta-ww05-15、およびreboot otaで書き込んだRelease 2のベータ版であるr2-beta-ww05-15において、パーティションがどのように設定されているかを示します。

r1-maint-ww42-14

Poky (Yocto Project Reference Distro) 1.6 edison ttyMFD2

edison login: root
root@edison:~# uname -a
Linux edison 3.10.17-poky-edison+ #1 SMP PREEMPT Tue Oct 14 15:19:49 CEST 2014 i686 GNU/Linux
root@edison:~# cat /etc/version
edison-rel1-maint-weekly_build_16_2014-10-14_14-56-19
root@edison:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root               475080    329920    108464  75% /
devtmpfs                491736         0    491736   0% /dev
tmpfs                   492048         0    492048   0% /dev/shm
tmpfs                   492048       496    491552   0% /run
tmpfs                   492048         0    492048   0% /sys/fs/cgroup
tmpfs                   492048       496    491552   0% /etc/machine-id
systemd-1                 5638      5184       454  92% /boot
tmpfs                   492048        56    491992   0% /tmp
systemd-1              2337308      3588   2317336   0% /home
tmpfs                   492048         0    492048   0% /var/volatile
/dev/mmcblk0p5            1003        19       913   2% /factory
/dev/mmcblk0p10        2337308      3588   2317336   0% /home
/dev/mmcblk0p7            5638      5184       454  92% /boot

r2-beta-ww05-15(flashall.batで更新の場合)

Poky (Yocto Project Reference Distro) 1.6.1 edison ttyMFD2

edison login: root
root@edison:~# uname -a
Linux edison 3.10.17-poky-edison+ #1 SMP PREEMPT Fri Jan 30 14:16:35 CET 2015 i686 GNU/Linux
root@edison:~# cat /etc/version
weekly-120
root@edison:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root              1458032    381136    992360  28% /
devtmpfs                491416         0    491416   0% /dev
tmpfs                   491728         0    491728   0% /dev/shm
tmpfs                   491728       500    491228   0% /run
tmpfs                   491728         0    491728   0% /sys/fs/cgroup
systemd-1                 5862      5400       462  92% /boot
tmpfs                   491728         4    491724   0% /tmp
systemd-1              1337936      2052   1319500   0% /home
tmpfs                   491728         0    491728   0% /var/volatile
/dev/mmcblk0p5            1003        19       913   2% /factory
/dev/mmcblk0p10        1337936      2052   1319500   0% /home
/dev/mmcblk0p7            5862      5400       462  92% /boot

r2-beta-ww05-15(reboot otaで更新の場合)

Poky (Yocto Project Reference Distro) 1.6.1 edison ttyMFD2

edison login: root
root@edison:~# uname -a
Linux edison 3.10.17-poky-edison+ #1 SMP PREEMPT Fri Jan 30 14:16:35 CET 2015 i686 GNU/Linux
root@edison:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root               475080    372568     65816  85% /
devtmpfs                491416         0    491416   0% /dev
tmpfs                   491728         0    491728   0% /dev/shm
tmpfs                   491728       504    491224   0% /run
tmpfs                   491728         0    491728   0% /sys/fs/cgroup
systemd-1                 5862      5400       462  92% /boot
tmpfs                   491728         4    491724   0% /tmp
tmpfs                   491728         0    491728   0% /var/volatile
/dev/mmcblk0p5            1003        19       913   2% /factory
/dev/mmcblk0p7            5862      5400       462  92% /boot
systemd-1              2337308      3592   2317332   0% /home
/dev/mmcblk0p10        2337308      3592   2317332   0% /home

パーティション設定の差

flashall.batでIntel Edison Compute Moduleへ書き込んだr2-beta-ww05-15は、r1-maint-ww42-14とは異なるパーティションになっています。具体的にはルート・ファイル・システム(/)が463MBから1423MBに増量されています。当然全体の容量は変わらないので、減ったパーティションもあります。それが/homeパーティションで、ルート・ファイル・システムが拡大した分減っています。

一方でreboot otaでIntel Edison Compute Moduleに書き込んだr2-beta-ww05-15ではルート・ファイル・システムの容量は増加しておらず、また/homeパーティションも減っていません。このようにパーティションの設定が変更されていないわけです。このために、Release 2への移行時にはflashall.batを使用する方法でIntel Edison Compute Moduleへ書き込みを行うべきです。

Release-1で提供される機能

Intel Edison R1 Software Support

出典: IDF14 / Intel® Edison Technology for Engineers: Hardware, Software, and Cloud / P.35

Release-2で提供される機能

Intel Edison R2 Software Support

出典: IDF14 / Intel® Edison Technology for Engineers: Hardware, Software, and Cloud / P.36
ただし赤色の強調は筆者によるものです。

赤色の着色を行った部分がRelease-2で拡張された部分です。ただし、この表はIDF14で2014年12月に実装予定として発表されたもので、すべてが実現されているというものではありません。

R2-beta-WW05-15の新機能

  • Wi-Fiダイレクト
  • Bluetooth LE(Low Energy)と8個の新たなプロファイルのサポート
  • 拡張されたデバイスからデバイスおよびデバイスからクラウドへのメッセージング、セキュリティーおよび認証

Wi-Fiの改善

Wi-Fiダイレクト、多用途およびアドホック・ネットワークのサポート

機能 詳細
Wi-Fiピア・ツー・ピア接続とWi-Fiダイレクト 2つのIntel Edison Compute Module(またはIntel Edisonとスマートフォン)がダイレクトにWi-Fi接続をアクセス・ポイントを介すことなく行うことができます。
Wi-Fiの多用途化 同時にWi-Fiダイレクト・オペレーションによるアクセス・ポイントへの接続を可能にします。
Wi-Fi IBSSモード アクセス・ポイントを一切含まないマルチ・ノード・アドホック・ネットワークの新規作成が可能です。

詳細:
Intel® Edison Wi-Fi User Guide

Bluetoothベース・レート・プロファイル

機能 詳細
Hands-Free Profile(HFP) ハンズ・フリー・ユニットまたはオーディオ・ゲートウェイへの接続が可能になります。
Advanced Audio Distribution Profile(A2DP) Intel Edison開発ボードからオーディオを流すことが可能になります。
Serial Port Profile(SPP) Intel Edison開発ボードからオーディオを流すことが可能になります。
Device ID Profile(DIP) 基本的なデバイス・クラスの範囲を超えて、Intel Edison開発ボードの識別を拡張します。

詳細:
Intel® Edison Products Bluetooth* User Guide

Bluetooth LEとObject Exchange(OBEX)プロファイル

機能 詳細
Time Profile(TIP) Intel Edisonが日付、時間、タイムゾーン、および夏期時間に関する情報を得て関連制御機能を構成することが可能になります。
Proximity Profile(PXP) Intel Edisonと別デバイスの間の近接モニタリングを可能にします。
Generic Attribute Profile (GATT) Profile越しのHuman Interface Devices (HID) Intel Edisonがキーボードやゲーム・コントローラーのようなBLEが有効なHIDと接続することが可能になります。
File Transfer Profile (FTP) Intel Edisonがどのファイルとフォルダーがどのように当方と先方の間で閲覧できるか、およびファイルの送信と受信が可能かを定義します。

詳細:
Intel® Edison Products Bluetooth* User Guide

Internet of Things (IoT)通信ライブラリー

機能 詳細
認証と暗号化が可能なWi-FiおよびBluetooth上に拡張されたデバイスとデバイスおよびデバイスとクラウドへのメッセージング MQTT*、ZeroMQ*およびRESTfulを活用したローカルとリモートのセンサー・グリッド。

iotkit-comm チュートリアル

既知の課題

  • オンボードのMCUをサポートしていません。
    現在はバリデーション中であり、将来のリリースに含まれる見込みです。
  • XDK-deamonがエラーを起こします。
    XDK IDEを使用している場合に影響を受けます。Intel Edisonを使用しているデバイスを再起動することで回復します。
  • Intel Edisonのホスト名に小文字しか使用できません。
    Iotkit comm D2D(CとNode.js)が影響を受けます。
  • C/C++でZMQサーバー・クライアントによるコミュニケーションに失敗します。
  • Iotkitの1.6.4への更新による問題があります。
    Arduino IDEを使用するIoT開発キットが影響を受けます。クラウド接続を行わないバージョンへダウングレードすることで回避することができます。将来のリリースで修正される可能性があります。
  • connmanがWi-Fiネットワークをスキャンできないことがあります。
  • Wi-Fiのスキャニングが不安定です。
    現在のwpa_cliコマンドによる実装ではWi-Fiアクセス・ポイントの検索に6秒をかけています。この6秒による検索がいくつかのアクセス・ポイントを検出するためには早すぎることがあることが原因です。
  • rootfsサイズの拡大による各種影響があります。
    これまでのReleaseではrootfsのサイズが小さすぎることでいろいろな問題が発生していました。これを解消するためにRelease-2ではrootfsのサイズを拡大しました。ただし、前述のようにreboot otaによる更新ではパーティションの構成は変更されません。これらの変更を適用するためにはflashall.batあるいはflashall.shによる初期化を伴う更新を行うべきです。

修正された課題

  • 非常に数が多い(78項目)ので個別の紹介は省略します。それだけ力を入れて対応しているということだろうと思います。
  • 「未修正の課題」に残っていないものは修正されたと考えることができるので、そういう視点で「未修正の課題」を見ていただくか、リリース・ガイドの一覧でご確認ください。

未修正の課題

課題番号 内容
EDISON-1804 configure_edisonで設定したIntel Edisonの名前が正しくない。
EDISON-1921 Intel Edison Breakout BoardでSWリブート後にホスト・モードに正しく切り替わらない。
EDISON-2033 SPIのパケット間で遅延が起こる。
EDISON-2196 connmanのテザリング(例えばUSB Ethernet→Wi-Fi)が動作しない。
EDISON-2228 システム・モードでパルス・オーディオが実行されている。
EDISON-2230 構成の実行中、Wi-Fiデバイスは未知あるいは不正な状態になる。
EDISON-2231 Intel Edisonボード上のviがエラー”vi: Can’t read user input”を出して失敗する。
EDISON-2281 mDNSのエラーでnode.jsサンプルのimport iotkit-commが失敗する。
EDISON-2300 Mosquitto*デーモンがrootで実行されている。
EDISON-2326 GPIO 48をexportした後、SSHが遅くなる。
EDISON-2336 LinuxとMac OS XにおけるXDKで、存在するのにもかかわらずログ・オンが、あるいは新しいアカウントの登録ができない。
EDISON-2354 Wi-Fiの遅延時間が想定よりも高い:120秒毎に遅延する。
EDISON-2355 ビルドをフラッシュした後にシリアル・コンソールが壊れる。
EDISON-2356 Arduinoの7ピンを出力に設定するとWi-Fi接続が不安定になる。

Intel Edisonのシリアル・コンソールの文字取りこぼし問題

ちょっとわき道にそれますが、これは結構重要だという気がするので、Release-1の話ではあるのですが触れておきたいと思います。

Intel Edison Compute Moduleには2つのUARTシリアル・ポートがあります。1つはRX(受信)とTX(送信)のみ、1つはUARTのフルセットです(いずれもNational Semiconductor NS16650A相当のレジスター・セットに同NS16750相当のFIFOを備えています)。このうち、シリアル・コンソールはRXとTXのみで構成されるUARTを使用しています。

Intel Edison Compute ModuleのSoCはスリープ・モードを備えています。これを使用することでバッテリーの駆動時間を増やすことができます。普通ならこの機能をオンにします。その、オンにしていたのが初期のIntel Edison Compute Moduleに搭載されていたファーム・ウェアです。しかし、スリープ・モードに遷移するとRXとTXのみから構成されるUARTは電源が切られてしまいます。そのためスリープ・モードではデータを受信することができません。これが初期ファーム・ウェアにおいて、シリアル・コンソールのキー入力が取りこぼされる原因です。

そこでRelease-1 WW36-14ではIntel Edison Compute ModuleのSoCをスリープ・モードに遷移させないように仕様変更がなされました。ただし、これによって若干バッテリーの持ち時間が減ることになってしまっています。

これはIntel Edison Compute Moduleに採用されているSoCの仕様であるため、今後も改修されることはないでしょう。

ちなみにもう一方フルセットUARTはスリープ・モードでも電源を切られることはないので、こちらを使用していればスリープ・モードを活用することができます。


まとめ

先日公開したメモ“Intel Edison向け新ファームウェアR2のβ版(WW05-15)について”で記述した内容を含む形で加筆・修正し、「Intel Edison勉強会用」に再編を行ったのがこのメモと資料(スライド)です。

少しでもご覧になった方の参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です