ESP32のNVS削除をブラウザから

 こんどは、特別なツールを入れなくてもNVSが削除できるような簡単なツールはないかと言われた。ESP Toolでもできるのだけど、ちょっとミスするといろいろ失敗してしまうのでリカバリが面倒だ。

 なので、ESP Toolを食わせてAIに作らせてみた。たぶん、esptool-jsライブラリをそのまま使うような感じになっていると思う。

ESP Toolにも削除機能もあるのだけど、アドレス指定なので、パーティション構造を表示してチェック入れて消せるほうがわかりやすいし、入力ミスなどのヒューマンエラーがなくて安全だもの。

 まぁ、インストールなしでというリクエストだけど、chromeくらいは入っているという前提でいいだろう。

 WebUSBのシリアルを使うので、ChromeかEdgeでしか動かない。

 firefoxでは、対応していないメッセージが出る。お利口じゃん。ESP Toolにはそんな機能なかったな。

 アーカイブを展開して、そのディレクトリで、pythonコマンドでWebサーバーを起動し、対応ブラウザからアクセスする。そのへんのインストラクションもREADM.mdに書いてくれた。

 Connectボタンを押すと、シリアルポートの選択画面が出る。デバイスを接続してあるシリアルポートを選ぶ。

 Connectログが表示される。

Read partition tableボタンを押すと、読み取ってリスト表示。

 削除するパーティションにチェックをいれて、Erase selectedボタンを押す。確認ダイアログは出る。

 削除完了。

 念の為、0xFFになっているかどうかを読んで確認する機能を追加した。

full verifyにチェックを入れると全ストレージをチェックするけど、つけないと、16KB以上のサイズのものは前後だけ調べる。

show dangerousにチェックをつけると、消してはいけなさそうなデータの警告を出す。勝手に作られたけど、これ、いるのか?

 一応、デフォルトでは表示しないパーティションを表示するようなチェックらしい。

 表示基準はこれ。いまのところ、type/subtypeでは判定していない。

 ・offset === 0x0000 → bootloader領域扱い

 ・offset === 0x8000 → partition table領域扱い

 ・label(小文字化)が "otadata" を含む → otadata 扱い

 ・label(小文字化)が "nvs_keys" を含む → nvs_keys 扱い

 動作ログはこんな感じ。

=== v4d ===

Connecting...

esptool.js

Serial port WebSerial VendorID 0x303a ProductID 0x1001

Connecting...

Detecting chip type...

ESP32-S3

Chip is ESP32-S3 (QFN56) (revision v0.2)

Features: Wi-Fi,BLE,Embedded Flash 4MB (XMC),Embedded PSRAM 2MB (AP_3v3)

Crystal is 40MHz

MAC: 20:6e:f1:b0:ed:dc

Uploading stub...

Running stub...

Stub running...

Chip: ESP32-S3 (QFN56) (revision v0.2)

Reading partition table: offset=0x00008000 len=0x00001000

Parsed 6 entries

Erasing nvs : off=0x00009000 len=0x00004000

Erase done: nvs : off=0x00009000 len=0x00004000

Erase all selected done.

Verifying nvs : off=0x00009000 len=0x00004000 (full)

Verify OK: nvs

Reading partition table: offset=0x00008000 len=0x00001000

Parsed 6 entries

Reading partition table: offset=0x00008000 len=0x00001000

Parsed 6 entries

Reading partition table: offset=0x00008000 len=0x00001000

Parsed 6 entries

 あんまり検証してないけど、削除してからっぽになっているかは検証できるので、これで必要十分かな。

 その後、type/subtypeも確認するようなパッチも作ってみたけど、特に新しいところはないので、記事は更新しない。

 ソースコードも、AIで簡単に作れる程度のものなので公開しなくていいかな。使ってみたい人がいたら連絡ください。


オリジナル投稿:
ESP32のNVS削除をブラウザから|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/11474375