Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IoT デバイスから AWS IoT へ:Zephyr RTOS でOver the Air

Avatar for jun1_hirata jun1_hirata
October 27, 2025
20

IoT デバイスから AWS IoT へ:Zephyr RTOS でOver the Air

Zephyr Project meetup: Osaka, Japanの資料
https://zephyr-rtos.connpass.com/event/368403/

Avatar for jun1_hirata

jun1_hirata

October 27, 2025
Tweet

Transcript

  1. IoT デバイスから AWS IoT へ: Zephyr RTOSでOver The Air Zephyr

    Project meetup: Osaka, Japan October 20 2025 Junichi Hirata OSAKA
  2. アジェンダ • 自己紹介、応募した経緯 • 今回やること • AWS IoT Coreについて •

    AWS IoT Coreを使ったOver the Air(OTA)技術的な概要 • ZephyrでAWS IoT Coreを使ったOTAをステップバイステップで説明
  3. 応募した経緯 最近日本のZephyr RTOS User Group Japnのイベントに参加しています → Zephyr RTOSはIoTに強いらしいと聞く →

    connpassでAWS IoT 10周年イベント※を見つける → そういや、Zephyr RTOSってAWS IoTどんなのか気になるな → 調べてAWS IoTサンプルプログラムを評価ボードで動かした → せっかくだし、JAWSのイベントのLTに応募してみようか → サンプルプログラムを拡張してみよ、OTAとかええな → 10/20にZephyr meetupあるので、エントリしよ ※JAWS-UG IoT専門支部「AWS IoT 10年の歩みを振り返る」 https://jawsug-iot.connpass.com/event/367418/
  4. AWS IoT Core 今回やること Zephyr RTOSが動作するマイコン評価ボードのファームウェアをリモート操作で アップデートします いわゆるOver The Air

    (OTA)をやります! リモートサービスとして AWS IoT Coreを使用します Zephyr on 評価ボード ・ファームウェアアップデートの開始指示 ・評価ボードのファームウェアイメージ ①アップデート開始指示 ②ダウンロード ③新ファームウェアの適用
  5. AWS IoT Core と IoTデバイスとの通信プロトコル ※1 HTTPS、MQTT over WebSocketなども使える ※2

    参考 AWS IoTコンソールの画面 基本はMQTT over TLS ※1 ・TLSのクライアント認証は必須 (x509証明書を使った認証) → 得体の知れないデバイスは接続させない → IoTデバイスの身元を保証する & AWS側で管理しているモノ (Thing)と結び付けえる※2
  6. AWS IoT Core OTA構成 (AWSのサービスとIoTデバイス) IoTデバイス Zephyr on 評価ボード ②ダウンロード

    HTTP over TLS ③新ファームウェアの適用 Amazon S3 ①更新指示 S3上のファイルのURLなど MQTT over TLS 新ファームウェア イメージファイル Amazon S3 Simple Storage Servie
  7. Zephyrで必要な機能を列挙 機能 用途 MQTT (over TLS) AWS IoT Coreとの通信 JSON

    AWS IoT Coreとの通信のデータ 部がJSON形式 受信データのパース 送信データの生成 HTTPSクライアント Amazon S3から ファームウェアのイメージファ イルをダウンロード Flash ダウンロードしたファームウェ アのイメージファイルの書き込 み ブートローダー (MCUBoot) 新ファームウェアの適用
  8. Zephyrの機能 (あるといいもの) 機能 用途 セキュアストレージ 、セキュアエレメント AWS IoT Coreの接続に使用する 秘匿データ(鍵と証明書)を安全

    に格納 Flashにハードコーディング 暗号化もしないので秘匿データ が流出するかもしれないず危険 ではあるが手順が複雑になるの 今回は使用しない
  9. Zephyrアプリケーション拡張の方針 ベースとなるサンプルを一つきめ、そこに拡張および他のサンプルをマージ ベースはsamples/net/cloud/aws_iot_mqttというAWS IoTと通信する サンプルプログラム ・MQTT通信 ・AWS IoTへ接続 JSONのパースなど ファイル

    ダウンロード フラッシュの 消去/書き込み APIドキュメントから実装 新ファームウェア 適用 Zephyr動作前の 独立したプログラム ブートローダー(MCU Boot) HTTPクライアントのサンプル AWS IoT Coreサンプル これをベースに拡張していく 追加 マージ
  10. 再度Zephyrで必要な機能を列挙 機能 用途 サンプルプログラムのパスなど MQTT (over TLS) AWS IoT Coreとの通信

    samples/net/cloud/aws_iot_ mqtt JSON AWS IoT Coreとの通信のデータ 部がJSON形式 受信データのパース 送信データの生成 APIドキュメントを参照して アプリケーションを実装 HTTPSクライアント Amazon S3から ファームウェアのイメージファ イルをダウンロード samples/net/sockets/http_cli ent Flash ダウンロードしたファームウェ アのイメージファイルの書き込 み APIドキュメントを参照して アプリケーションを実装 ブートローダー (MCUBoot) 新ファームウェアの適用 ../bootloader/mcuboot/boot/ zephyr
  11. AWS IoT Coreサンプルプログラム AWS IoT Core Zephyr_sample/downlink Zephyr_sample/data Zephyr AWS

    IoT サンプルプログラムが 動作しているボード サブスクライブ サブスクライブしているトピックへ メッセージがPublishされたら、 Zephyr_sample/dataへメッセージを Publishする ①メッセージPublish ②①のメッセージを受信 ③メッセージPublish
  12. ここまでの状況 ・MQTT通信 ・AWS IoTへ接続 JSONのパースなど ファイル ダウンロード フラッシュの 消去/書き込み APIドキュメントから実装

    新ファームウェア 適用 ブートローダー(MCU Boot) HTTPクライアントのサンプル AWS IoT Coreサンプル これをベースに拡張していく 追加 マージ clear clear clear clear これから説明
  13. 結果 ・MQTT通信 ・AWS IoTへ接続 JSONのパースなど ファイル ダウンロード フラッシュの 消去/書き込み APIドキュメントから実装

    新ファームウェア 適用 ブートローダー(MCU Boot) HTTPクライアントのサンプル AWS IoT Coreサンプル これをベースに拡張していく 追加 マージ clear clear clear clear 失敗!