Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Nature Remo SDKアップデートの軌跡
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
tomoyuki-nakabayashi
September 29, 2022
Programming
1.3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Nature Remo SDKアップデートの軌跡
tomoyuki-nakabayashi
September 29, 2022
More Decks by tomoyuki-nakabayashi
See All by tomoyuki-nakabayashi
How to learn Embedded Rust Edition 2021
tomoyuki
0
1.6k
Embedded-Rust
tomoyuki
1
3.2k
hello-world-on-RTOS
tomoyuki
0
920
Baremetal Rust for RISC-V
tomoyuki
5
1.2k
Other Decks in Programming
See All in Programming
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
200
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
180
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
200
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.7k
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
130
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
520
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
210
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
0
2k
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.3k
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
260
関数型プログラミングのメリットって何だろう?
wanko_it
0
150
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Raft: Consensus for Rubyists
vanstee
141
7.6k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
Un-Boring Meetings
codingconduct
0
340
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
220
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Ruling the World: When Life Gets Gamed
codingconduct
0
280
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.6k
Are puppies a ranking factor?
jonoalderson
1
3.7k
Transcript
Nature Remo SDKアップデートの軌跡 2022年9月28日 IoTぶっちゃけNight Vol. 1 Nature 中林智之
- 中林智之 @tnakabayashi - Nature Firmware Engineer ちょっと咳は出ちゃうかも ><
自己紹介
PRODUCT 製品について
Nature Remo / Nature Remo mini
How It Works スマートデバイス Nature Remo 家電 赤外線 インターネット 例:
Alexa、書斎照明消して
How It Works スマートデバイス Nature Remo 家電 赤外線 インターネット !?
※登壇者の居室が真っ暗になるデモ中です
Firmwareエンジニア視点のRemo3
BLE Central BLE Peripheral HTTP Server (mDNS) HTTP / WebSocket
Client 赤外線 センサ 温度、湿度 人感、輝度 Nature Remo3の機能 BLE連携 setup Local API server
Nature Remo3の中身 ※分解は自己責任でお願いします! ぱかっと開けると… ESP32 - Espressif - xtensa デュアルコア@240MHz
- SRAM: 520KiB - Bluetooth & Wireless LAN
Nature RemoのSDK - ESP-IDF (Espressif IoT Development Framework) - 大部分がOSS
- GitHubでissueやパッチの受け入れも - 無線通信部分などはバイナリ配布
ぶっちゃけESP32 (ESP-IDF) ってどうなの? - (カタログスペック比で) 破格の安さ - ソフトウェア開発環境は使いやすい - ログシステム
/ デバッグ環境 / テスト環境 - ビルド用のDocker image完備 - menuconfig / kconfig - ソフトウェアに力入れているのは感じる - SDKの変更量 - LLVMのxtensa対応 - Rust - ただし… - 続きは発表の最後で! - チャンネルはそのまま! Ferrous Systemsがやっている Rustチュートリアル用ボードとかも製造
Firmware Updateについての考え方
なぜFirmware Updateをするのか? > ソフトウェアには…簡単に変更できることが求められる。 > 簡単に変更したくないなら、ハードウェアと呼ぶべきだ。 > (中略) > ソフトウェアが簡単に変更できないなら、
> ソフトウェアの存在意義を妨害している。 Nature Remoをハードウェアと呼ばせないため
- ESP-IDF v3.3.4を2年ほど使用 - メンテナンス期限切れ - security issueとか発生したら…? - 機能追加
/ バグフィックス / 開発環境改善 - WPA3対応 - gcc 5.4 -> 8.4 なぜSDKをアップデートするのか?
SDK Updateの軌跡
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
楽しい冒険の始まり - 直前にリリースされた ESP-IDF v4.3.2を移行対象に決定 - 機能開発は凍結 (ぼっちファームなので問題なし ! -
短期決戦を目指して最優先でやる (3ヶ月でケリをつける! 残された希望に満ちたメモ … 100日後に折れるフラグ
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
- v3.3.4で困っていたバグがいくつか直ってそう - WPA3対応してる! - メモリアロケータが変わった…だと…?(v4.3から - TLSF (Two-Level Segregate
Fit) アロケータに - 教科書通りのフリーリストアロケータから O(1) アロケータに - これは重要な変更だ!じっくり調査するしかあるまい? - アロケータの論文 / コード読んだり楽しい時間を過ごす 夢の広がるリリースノート
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
ヒープ残量が・・・ - v4.3.2に上げるとヒープ残量ががっつり減った… - 60KB -> 50KB - 何もしてないのにヒープ残量が減った! -
SDKのコンフィギュレーションが何か変わったか?と調査を開始 - TLSFアロケータのテーブルが10KB使っている
しかも実際のヒープ残量は・・・ - なんかヒープ残量計算がバグってない・・・? - 確保したバッファの管理領域分が計算されていない - 最新バージョンでは直ってます - https://github.com/espressif/esp-idf/issues/8270
ま、いっか 減った分はコード見直せばなんとか…、ということで立ち直る 詳しくは ESP-IDF v4.3でESP32のヒープ残量が10KB減る問題の調査 を参照
None
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
Releaseできちゃうのでは・・・? - 社内リリースして2週間、順調に動いている - サーバー側で段階リリースの仕組みを作ってもらった - 大量の文鎮化を一番恐れている - 本番前に何度かお試し -
全ては順調に見えた・・・
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
v4.3.2の評価結果は・・・? - ダメでした! - 2週間くらい動かすと WiFi 止まる現象がちらほら… - ここから長く苦しいバグ調査の日々が始まる -
真相はバイナリの中 - なので、現象をファームのアプリ層でキャッチする条件調査 - 死活監視入れたり
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
嬉しい悲報の時間です - 4月からファームウェアエンジニアが入社!めでたい! - ファームウェア開発、しちゃうよね…? - v4.3.2にしてしまったから、v3.3.4で開発できるように戻さにゃ - リポジトリをmonorepo化して開発しやすいように -
各種CIやリリースワークフロー再整備 remo3 remo-e products-common network-manager sensor echonet-lite app remo3 remo-e components sensor products-common echonet-lite network-manager
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
新たなる希望v4.4.1 > Fixed failing to transmit data or getting stuck
in WiFi sleep if running WiFi and BT with modem-sleep together これは…まさか…?
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
またヒープ減ってるやんけ・・・ - 4KBくらい ESP-IDF v4.4でまたもやヒープ残量が4KBも減った問題の調査
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
こいつ、止まらないぞ・・・! - 1ヶ月の安定稼働を確認してからリリース準備 - メトリクスを仕込んだり - Remo <-> server 間の通信は
s3 に保存されており、Athenaでクエリできる
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
ナーバス期 - アップデート対象は数十万台…! - CSチームと連携しながら (直接話しながら - prime dayと重なっていたのでちょっとリリース時期調節したり -
自分で毎朝サポートチケット見たり
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7 祝!100%リリース!!!
ぶっちゃけESP32 (ESP-IDF) ってどうなの? - 破格の安さ - なぜか割と入手できる - 開発環境は使いやすい -
ログシステム / デバッグ環境 / テスト環境 - ビルド用のDocker image完備 - menuconfig / kconfig - ソフトウェアに力入れているのは感じる - SDKの変更量 - LLVMのxtensa対応 - Rust - ただし…安定性は慎重な評価が必要 - 場合によっては死活監視も・・・ Ferrous Systemsがやっている Rustチュートリアル用ボードとかも製造
まとめ - Nature RemoのESP-IDFをv3.3.4からv4.4.1にアップデートできた! - ESP32 & ESP-IDFは… - 使いやすいが安定性は慎重に評価が必要
- バイナリ配布の通信部分はどうしようもない… - 見ての通りOSの自作は人生の役に立つんだ!
ご清聴ありがとうございました