暇人じゃない

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

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 というもので、いつも通り書き込もうとしたタイミングでいきなり発生したものだった。「何もしていないのに壊れた」というやつ。


About

chocoby (GitHub / Twitter)

個人事業主のソフトウェア開発者です。 Ruby と Rails を使った Web サービスの開発を得意としています。

CurryBu というサービスや、jp_prefecture という Gem を作っています。