LoginSignup
33
13

More than 3 years have passed since last update.

macOS Big SurでArduino IDEからESP32の書き込みができない件

Posted at

手持ちのMacBookを,出来心でCatalina→Big Surにアップグレード.
当然何も起こらないはずがなく…

ESP32 Dev moduleでのコンパイルができない

コンパイルしようとすると

ValueError: dlsym(RTLD_DEFAULT, kIOMasterPortDefault): symbol not found
Failed to execute script esptool
exit status 255

などというエラーが発生.

arduino-esp32 projects fail on macOS 11 "Big Sur" に同様のissueが上がっている.
どうやらBig Surの仕様のせいらしい.そりゃまだ対応されてないわな…(なぜアップグレードしたんだ俺)

対処手順

M1 MacBook Air 2020 でArduino IDEを動かしてみました を見て解決を試みる.
行った手順を以下に引用.

  1. Arduino IDEの環境設定から、/Users/...../preferences.txt のリンクをクリックして、フォルダを開く。
  2. packages/esp32/hardware/esp32/1.x.x フォルダの中にある plathome.txtを開き、 7行目にあるtools.esptool_py.cmd=esptoolとなっている部分を tools.esptool_py.cmd=esptool.pyと書き換えて保存する。
  3. packages/esp32/hardware/esp32/1.x.x/tools フォルダにある esptool.py を packages/esp32/tools/esptool_py/2.x.x/ フォルダにコピーする。
  4. 以下のコマンドで、コピーした esptool.py に実行権限をつける。 chmod +x packages/esp32/tools/esptool_py/2.x.x/esptool.py

解決…できない!

解決できた人はそれでよい.帰りなさい.

私の場合,これが発生した.

ImportError: No module named serial exit status 1 Error compiling for board ESP32 Dev Module.

あー,pyserialが無いのね.
おっけーおっけー,コマンドからこれでインストールすれば解決だ

$ pip install pyserial

pyserialが読み込まれない

読み込んでもらえた人はそれでよい.お帰りなさい.

確かにpyserialはインストールできたはずなのだが,esptoolちゃんは毅然としてImportErrorを履き続ける.ツンデレかな?
更に調べていったら以下のようなissueに辿り着いた.

esptool fails on MacOS Big Sur preview: Failure to import serial.tools.list_ports #509

このコメントを参考に私が行った手順は以下の通り.

  1. コマンドから$ /usr/local/bin/pip3 install pyserialを実行し,大元のPythonにpyserialをインストール
  2. 先程コピーした esptool.py をテキストエディタで開き,1行目の#!/usr/bin/env python#!/usr/local/bin/python3に書き換える

これで無事に書き込みできました!やったね!

おわりに

それにしても,なぜ単純にpipでpyserialをインストールしても,esptoolは読み込んでくれなかったのか?
おそらくpyenvやらpipenvやらで,普段のPython環境を構築してしまっていたのが原因かと思われる.

まぁこんな面倒なことをせずとも,いずれesptoolもBig Surに対応してくれるだろうけど,急ぎでESP32を書き込みたい!って人の参考になったなら幸いです.

33
13
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
13