Azure SphereデバイスをTP4.2.1から18.11にアップデート
これの続きです。
デバイスのOSをTP4.2.1から18.11にアップデートします。
リリースノートの手順に沿って、実行します。
デバイスのOSバージョンを確認
デバイスのOSバージョンを確認します。
C:\>azsphere device show-ota-status warn: Your device's Azure Sphere OS version (TP4.2.1) is deprecated. Recover your device using 'azsphere device recover' and try again. See aka.ms/AzureSphereUpgradeGuidance for further advice and support. Your device is running Azure Sphere OS version TP4.2.1. The Azure Sphere Security Service is targeting this device with Azure Sphere OS version 18.11. warn: Your device is running an older Azure Sphere OS version (TP4.2.1). It has not yet started receiving the available update to version 18.11. warn: Your device is not connected to Wi-Fi. Please check the Wi-Fi configuration on your device and try again. Go to aka.ms/AzureSphereUpgradeGuidance for further advice and support. Command completed successfully in 00:00:03.6789809.
「Azure Sphereセキュリティサービスの対象は18.11」で、
「あなたのデバイス、TP4.2.1で廃止されるよ」と脅されますw
デバイスグループを変更
TP4.2.1で作ったアプリケーションがOTAでインストールされないようにするため?に、デバイスのデバイスグループをSystem Software Only
に設定します。
C:\>azsphere device update-device-group -d cd037ae5-27ca-4a13-9e3b-2a9d87f9d7bd warn: Your device's Azure Sphere OS version (TP4.2.1) is deprecated. Recover your device using 'azsphere device recover' and try again. See aka.ms/AzureSphereUpgradeGuidance for further advice and support. Successfully moved device '961B0F3AF5C4EA9581512975F8E21A81DFED93BEF7A73854D802C8BDEFF7F5A8516639B653E6F082009F5C660C9B96BB1B16F49A56D7DE51A089AC01AE3376EC' to device group 'cd037ae5-27ca-4a13-9e3b-2a9d87f9d7bd' in your Azure Sphere tenant. Command completed successfully in 00:00:02.9167273.
はい、あいかわらずバージョンで脅されますが、デバイスグループが変更できました。
ちなみに、-d
で指定しているcd037ae5-27ca-4a13-9e3b-2a9d87f9d7bd
がSystem Software Only
の意味です。
デバイスのOSをアップデート
では、OSをアップデートしましょう。
azsphere device recover
を実行せよ、ということですが、TP4.2.1では-i
パラメータが必須でした。
どうやら、18.11でオプションになったようです。
C:\>azsphere device recover Starting device recovery. Please note that this may take up to 10 minutes. Board found. Sending recovery bootloader. Erasing flash. Sending images. Sending image 1 of 16. Sending image 2 of 16. ... Sending image 16 of 16. Finished writing images; rebooting board. Device ID: 961B0F3AF5C4EA9581512975F8E21A81DFED93BEF7A73854D802C8BDEFF7F5A8516639B653E6F082009F5C660C9B96BB1B16F49A56D7DE51A089AC01AE3376EC Device recovered successfully. Command completed successfully in 00:02:40.9711364.
イメージファイルはここに展開されていました。
C:\Program Files (x86)\Microsoft Azure Sphere SDK\RecoveryImages
デバイスのOSバージョンを確認(2回目)
デバイスのOSバージョンを確認します。
C:\>azsphere device show-ota-status Your device is running Azure Sphere OS version 18.11. The Azure Sphere Security Service is targeting this device with Azure Sphere OS version 18.11. Your device has the expected version of the Azure Sphere OS: 18.11. Command completed successfully in 00:00:03.4614457.
アップデート完了!!
TP4.2.1のプロジェクトが実行できない
TP4.2.1で作ったプロジェクトを18.11で実行してみようとしたところ、プロジェクトにターゲットAPIセットが設定されていないとエラーになりました。
1>------ ビルド開始: プロジェクト: SteppingMotor, 構成: Debug ARM ------ 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Application Type\Linux\1.0\AzureSphere.targets(38,5): error : 'Target API Set' project property is not set. Open the Project Properties and set this field using the drop-down box. Ensure that the Configuration selected on that page includes the active build configuration (e.g. Debug, Release, All Configurations). 1>プロジェクト "SteppingMotor.vcxproj" のビルドが終了しました -- 失敗。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
Azure Sphere SDK 18.11をインストール
これの続きです。
Azure Sphere SDK 18.11をインストールしてみます。
インストーラをダウンロード
ブラウザでhttp://aka.ms/AzureSphereSDKDownload
を開くと、インストーラがダウンロードされます。
Azure_Sphere_SDK_Preview_for_Visual_Studio.exe
と、ファイル名にバージョン番号が無いので、ちょっと分かりにくいです。
ダウンロードしてから、ファイルの詳細を見るとバージョンが18.11.3.20192
であることが確認できます。
インストール
わたしのPCには、すでにAzure Sphere SDK TP4.2.1が入っていますが、それをアンインストールせずに、ダウンロードしたEXEを実行してインストールしてみました。
画面の指示に従い、進めていくと、、、完了。
事前に古いバージョンのアンインストールは不要でした。
インストール結果
azsphereコマンド
azsphereコマンドは、18.11.3.20146
になりました。
C:\>azsphere Missing required positional argument '<Operation>'. Azure Sphere Utility version 18.11.3.20146 Copyright (C) Microsoft Corporation. All rights reserved. ...
Visual Studio拡張
Visual Studio拡張は、18.11.3.20192
になりました。
プロジェクトテンプレート
Blank Application
が増えてる!!
これはウレシイ。
いいねぇ♪
あと、ライブラリがちゃんとビルドできるように直ったっぽい。これは追って調査せねば。
Azure SphereがTP4.2.1から18.11にアップデート
Azure Sphere 18.11がリリースされました。
リリースノートから、どんな変更点があったのか?確認したいと思います。
18.11リリースノート
リリースノートはこちらです。
バージョン表記について、以前は4.2.1という連番でしたが、今回から年と月になりました。Windows10風。
今回、2018年11月にリリースしたので、18.11だそうです。
出だしから、驚きの内容がが。
updating the OS to the 18.11 release will involve connecting the device to a PC and manually installing the OS instead of receiving the software over the air (OTA).
18.11へのOSアップデートは、OTAではなくPCから手動でインストールするようです。
お、おぅ、、、って感じw
OTAによるOSアップデート、楽しみにしていたのですが、、、
次回からはOTAでできるようになるようなので、お楽しみに。
Update to the 18.11 release
アップデート手順です。
ここはスルーで。
New features and changes in this release
新機能や変更点です。
Target API set and Beta APIs
Visual Studioで開発するプロジェクトのプロパティに、Target API Set
が追加になり、Beta APIの利用可否を設定するようになりました。
Beta APIとは、どんなAPIなの?については、あらたに説明ページが追加されているので、そちらを見ると分かります。
Strict prototype checking
デフォルトで、厳密なプロトタイプチェックが有効になりました。-Wstrict-prototypes
ですかね。
「引数無しの関数は(void)
と書いてね」だそうです。
Wi-Fi setup using Bluetooth low-energy (BLE)
スマートフォンからBluetooth LE経由で、Azure SphereのWi-Fi設定するサンプルコードが用意されました。
Azure Sphereとは別に、Bluetooth LEの通信ができるデバイスが必要です。そりゃそうですね。
んー、nRF52 Development Kitがいるみたいだし、Azure Sphereに特別な機能が追加されたようには見受けられないので、スルーかな。
ちなみに、こちらに結線図があります。
Real-time clock
コイン電池でバックアップされたRTCを使えるようになりました。Beta API。
Mutable storage
64Kのストレージ(内蔵Flashだよね。たぶん。)が使えるようになりました。Beta API。
Private Ethernet
MT3620にプライベートな10Mbpsイーサネットワークが使えるようになりました。
SPIに接続したMicrochipのイーサネットインターフェースをC POSIX APIで使えるようになったと思われる。詳細はcoming soon。
External MCU update
外部に接続したMCUのファームウェアをアップデートするサンプルコードが用意されました。
Software update improvements
OTA絡みで、ルート証明書の期限切れに対応したみたい。
Ping command
USB経由の接続で、以前はpingに応答していましたが、応答しないように変更されました。
感想
- やってみようと思うのは、Mutable storageぐらい。
- TP4.2.1から18.11とTP(Technical Preview?)が消えたけど、Preview扱い。PreviewとGAの判断がつかないよねこれ。
次は、SDKを確認して、OSアップデートしてみようと思います。
Azure IoT EdgeをRaspberry Piにインストール
11月にAzure IoT Edgeが1.0.4にアップデートしました。
7月に、Azure IoT Edgeをラズパイにインストールしましたが、、、そこから手順に変更が無いか、確認しました。
RasPi3B + Raspbian
いつものように、マイクロSDをSDFormatterでイレースしてから、Win32DiskImagerでRaspbianイメージをマイクロSDに書き込みます。
Raspbianイメージは現時点最新のLite、2018-10-09-raspbian-stretch-lite.img
にしました。
あと、忘れずにbootにsshファイルを作っておきます。 Raspbian起動後、パソコンのTeraTermからSSH接続で操作したいので。
RasPiにマイクロSDを差して起動、念のためパッケージを最新します。
$ sudo apt update $ sudo apt upgrade
この時点のディスク使用量はこちら。
$ df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 15003420 1138416 13222604 8% / devtmpfs 470116 0 470116 0% /dev tmpfs 474724 0 474724 0% /dev/shm tmpfs 474724 12236 462488 3% /run tmpfs 5120 4 5116 1% /run/lock tmpfs 474724 0 474724 0% /sys/fs/cgroup /dev/mmcblk0p1 44143 22502 21642 51% /boot tmpfs 94944 0 94944 0% /run/user/1000
IoT Edgeをインストール
手順はこちら。
書かれているコマンドをコピペして実行すればOKです。
コンテナーランタイムをインストール
$ curl -L https://aka.ms/moby-engine-armhf-latest -o moby_engine.deb && sudo dpkg -i ./moby_engine.deb $ curl -L https://aka.ms/moby-cli-armhf-latest -o moby_cli.deb && sudo dpkg -i ./moby_cli.deb $ sudo apt-get install -f
IoT Edgeセキュリティデーモンをインストール
$ curl -L https://aka.ms/libiothsm-std-linux-armhf-latest -o libiothsm-std.deb && sudo dpkg -i ./libiothsm-std.deb $ curl -L https://aka.ms/iotedged-linux-armhf-latest -o iotedge.deb && sudo dpkg -i ./iotedge.deb $ sudo apt-get install -f
IoT Edgeセキュリティデーモンをセットアップ
/etc/iotedge/config.yaml
に、IoT Hubへ接続するためのIoT Edgeデバイス接続文字列
を設定して、再起動します。
$ sudo vi /etc/iotedge/config.yaml
$ sudo systemctl restart iotedge
IoT Edgeの稼働確認
IoT Edgeセキュリティデーモンのバージョンは、1.0.4。
$ iotedge version iotedge 1.0.4 (2835ac47fbb944ba628a5cfe812ff394768842e0)
edgeAgent、動いています。
$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 347334cf656e mcr.microsoft.com/azureiotedge-agent:1.0 "/bin/sh -c 'echo \"$…" 2 minutes ago Up 2 minutes edgeAgent
edgeAgentのバージョンは、1.0.4.18259757。
$ sudo docker logs edgeAgent [2018-11-16 09:17:17 +00:00]: Starting Edge Agent [11/16/2018 09:17:17.886 AM] Edge Agent Main() 2018-11-16 09:17:19.134 +00:00 [INF] - Starting module management agent. 2018-11-16 09:17:20.228 +00:00 [INF] - Version - 1.0.4.18259757 (2835ac47fbb944ba628a5cfe812ff394768842e0)
この時点のディスク使用量はこちら。
$ df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 15003420 1442820 12918200 11% / devtmpfs 470116 0 470116 0% /dev tmpfs 474724 0 474724 0% /dev/shm tmpfs 474724 12324 462400 3% /run tmpfs 5120 4 5116 1% /run/lock tmpfs 474724 0 474724 0% /sys/fs/cgroup /dev/mmcblk0p1 44143 22502 21642 51% /boot tmpfs 94944 0 94944 0% /run/user/1000
まとめ
- GA直後と手順は一緒。チョー簡単。
- ディスク使用料は+298MB。(モジュールはedgeAgentのみの場合)
なお、今回はOSからまるっと入れ替えしましたが、旧バージョンからのアップグレードも可能です。
手順はこちら。
Center CLR Try!開発 #2
昨日は「Center CLR Try!開発 #2」に参加しました。
Try!開発とは、もくもく会のように、みんなで集まって気楽に開発をやるイベントです。 イベントというよりも、もくもく開発、寄り合い、寺子屋といった表現のほうが正しいのかもしれません。
今回は水曜日に告知からの土曜日開催なので、参加者3名と寂しい感じでした。
やること・教えてほしいこと
最初に「やること・教えてほしいこと」を自己申告でホワイトボードに書いて情報共有。
わたしは11/17に京都で開催される、AzureSphereセミナーのプレゼン資料の作成をやることにしました。(切実)
Matsuiさんは(あいかわらず)IL2Cの例外だそうです。お手伝いできそうなところはナイっす。
ayumaxさんは忘年会で使えるUnityアプリ開発。これまたお手伝いできそうなところはナイっす。(ちょっと面白そう、、、実際に使ってみたい。)
もくもく
それぞれバラバラな内容ってことで、教えてもらう・教えるみたいなのはほとんど無く、各自もくもく作るって感じになりました。
情報交換?で印象的だったのは、、、
わたしは、、、やる気が上がらず、途中でミスドへ買い出しにいったりしていました。場所が金山駅近くなので、買い物に便利です。買い食いが捗る。
やったこと・教えてほしいこと
終わりの1時間前に、「やったこと・教えてほしいこと」を自己申告で情報共有。
わたしは、しゃべっていたり、ミスドへ行ったりしていたので、、、全体の8割ぐらいできたかなぁという程度でした。
毎月開催します
このイベント、毎月第2土曜日に開催するみたいなので、興味ある方は気軽にご参加ください。
(当面は、cre8 BASE KANAYAMAにご協力いただき、こちらの会議室でやる予定です。)
最後に写真
雰囲気がわかる写真を撮っておらず、、、 Matsuiさんの本日の成果説明の様子をアップしておきます。
AzureのFlow, Logic Apps, Functions, Virtual Machineの価格比較(定期実行時)
SeeedのWio Node、ちょっとしたデータ取得には便利なのですが、、、
連携しているWio Serverには定期的にデータを取得、チェック(たとえば、定期的に温度を測って、異常に高いときはEメール通知するとか)することができません。
Wio Serverは外部からリクエストが来ると、Wio Nodeへ問い合わせして、現在の値を取得する、、、という仕組みなので。
定期実行できて、ちょっとした条件を加えて、外部へ通知する、、、のに適したAzureサービスはなんだろう??主に価格面でw
というわけで、調べました。
Flow
- Free
- 無料
- 実行数 750回/月(1回/時間)
- 最短周期 15分
- Plan1
- $5.00/月
- 実行数 4500回/月(6回/時間)
- 最短周期 3分
- Plan2
- $15.00/月
- 実行数 15000回/月(20回/時間)
- 最短周期 1分
Logic Apps
- 0.00336円/アクション
- 0.01512円/Standardコネクタ
- 0.12円/エンタープライズコネクタ
※ 西日本リージョンの場合
Functions
- 実行時間 0.001792円/GB・秒(毎月400000GB・秒が無料提供)
- 総実行回数 22.40円/100万実行回数あたり(毎月100万実行回数が無料提供)
- 開発はC#, JavaScript, F#, Java
※ 西日本リージョンの場合
※ ストレージを使った場合は別料金が発生
※ Azure IoT Edgeを使えば無料
Linux Virtual Machine
- B2MS(Core x2, RAM 8GB)
- 14.34円/時間
シナリオ
- 2分周期でセンサーのデータを収集。
- センサーは5台。
- データはtwitterなどへ転送するものとし、Azure上で保持しない。
Flow
無理。 (Plan2でも、実行回数の制限に引っかかる。)
Logic Apps
2アクション+1Standardコネクタを5台。(という考え方で良いのかな?) 2438円/月。
Functions
総実行回数は22320回。(センサー5台を逐次取得した場合)
実行時間、、、わからん。
Linux Vertual Machine
10669円/月。
参考リンク
Azure Sphereテナントの作成(準備編)
こちらの記事を、分かりやすく書き直そうとしています。
予備知識
Azure Sphereテナント
MCUデバイス(Azure Sphere対応MCU)のセキュリティ更新やプログラムアップデートなど、いくつかの機能を実現するために、マイクロソフトからAzure Sphereセキュリティサービスが提供されています。
Azure Sphereでは、このAzure Sphereセキュリティサービスの使用が必須です。MCUデバイスをインターネットに接続してAzure Sphereセキュリティサービスと紐づけしない限り、MCUデバイスにプログラムを入れることさえできません!!
そして、このMCUデバイスとAzure Sphereセキュリティサービスの管理範囲を、Azure Sphereテナントと言います。
具体的には、MCUデバイスを紐づけたり、プログラムアップデートなどを指示するときは、Azure Sphereテナントを指定して操作します。
Azure Sphereテナントの認証
Azure Sphereテナントのリソースに対する認証は、Azure ADテナントを使用します。
そのため、Azure Sphereテナントは1つのAzure ADテナントと紐づけされなければいけません。
また、Azure Sphereテナントで使える認証のアカウントは、組織アカウント(Work or school account)に制限されています。(個人アカウント(Microsoft account)は使用することができません。)
Azure ADテナント
Azureのポータルにログインできる状態ですと、必ずAzure ADテナントが存在、使用しています。
自身が保有、利用できるAzure ADテナントは、Azureポータルの画面上部にある手帳マークをクリックすると、一覧表示されます。
組織アカウントと個人アカウント
組織アカウントと個人アカウントは、アカウント名からは判断できません。
Azure ADのユーザー一覧にある”ソース”列や、ログインするときに表示されるアイコンで判断します。
ソース列の"Azure Active Directory"は組織アカウント、"Microsoftアカウント"は個人アカウント。
ネームタグアイコンは組織アカウント、人型アイコンは個人アカウント。
計画
以上から、
- どのAzure ADテナントを使うのか?
- どの組織アカウントで認証するのか?
を決めて、用意してから、
- Azure Sphereテナントを作成
する流れになります。
プライベートで使用しているAzureとか、大企業のAzureとか、状況によってどうするのがベストなのか迷うところですが、、、
プライベート使用であれば、普段選択されているAzure ADテナントに組織アカウントを追加するだけで良いと思います。
たとえば、普段、選択されているAzure ADテナントが”xxx.onmicrosoft.com”だったときは、
- Azure ADテナントは、xxx.onmicrosoft.comを使用する
- xxx.onmicrosoft.comに、組織アカウント yyy@xxx.onmicrosoft.comを追加する
という感じで。