M5StickC Plus に書き込む際に esptool.py no such file or directory というエラーが発生した

Arduino IDE を使って M5StickC Plus にスケッチを書き込もうとしたら、良く分からないエラーが発生した。 rm -rf ~/Library/Arduino15/packages/m5stack/ で Boards Manager から M5Stack を削除して入れ直したら別のエラーが発生したので、対応したことをメモ。

fork/exec /Users/username/Library/Arduino15/packages/m5stack/tools/esptool_py/3.0.0/esptool.py: no such file or directory
Error compiling for board M5Stick-C-Plus.

環境

  • macOS BigSur 11.5.2 (20G95)
  • Arduino IDE 1.8.15
  • Boards Manager: M5Stack 1.0.9
  • M5StickC Plus

やったこと

エディタで ~/Library/Arduino15/packages/m5stack/hardware/esp32/1.0.9/platform.txt を開いて esptool のコマンド名を変更する。

- tools.esptool_py.cmd=esptool.py
- tools.esptool_py.cmd.linux=esptool.py
- tools.esptool_py.cmd.windows=esptool.exe
+ tools.esptool_py.cmd=esptool
+ tools.esptool_py.cmd.linux=esptool
+ tools.esptool_py.cmd.windows=esptool

macOS なら tools.esptool_py.cmd だけ編集すればいいと思う。

エラーメッセージのパス ~/Library/Arduino15/packages/m5stack/tools/esptool_py/3.0.0 を確認すると、esptool.py ではなく esptool というバイナリが置かれている。

% ls ~/Library/Arduino15/packages/m5stack/tools/esptool_py/3.0.0
esptool*

とりあえず動くようにはなったものの、なぜコマンド名の設定と実際のファイル名がズレているのかが分からない...

また、冒頭で書いた「良く分からないエラー」は java.io.IOException: Cannot run program "___REMOVE___/esptool": error=2, No such file or directory というもので、いつも通り書き込もうとしたタイミングでいきなり発生したものだった。「何もしていないのに壊れた」というやつ。

© 2023 暇人じゃない. All rights reserved.