M1 appleシリコン搭載MacでPlatformIOを使う際のトラブルと解決法

インストール直後、コンパイルでエラー出たのですが、ワークアラウンドが海外サイトにあったので解決できました。

問題はappleシリコン搭載Macで起きていたわけではなく、Big SurとPlatformIOの相性のようです。

以下で解決方法を記載します。

問題のエラー

問題のエラーは下記の写真のとおりです。

エラー画面

文面は下記になります。

Traceback (most recent call last):
File "/Users/userName/.platformio/packages/tool-esptoolpy/esptool.py", line 57, in 
import serial.tools.list_ports as list_ports
File "/Users/userName/.platformio/penv/lib/python3.8/site-packages/serial/tools/list_ports.py", line 29, in 
from serial.tools.list_ports_posix import comports
File "/Users/userName/.platformio/penv/lib/python3.8/site-packages/serial/tools/list_ports_posix.py", line 31, in 
from serial.tools.list_ports_osx import comports
File "/Users/userName/.platformio/penv/lib/python3.8/site-packages/serial/tools/list_ports_osx.py", line 32, in 
kIOMasterPortDefault = ctypes.c_void_p.in_dll(iokit, "kIOMasterPortDefault")
ValueError: dlsym(RTLD_DEFAULT, kIOMasterPortDefault): symbol not found
*** [.pio/build/esp32dev/firmware.bin] Error 1
======================================================

対処方法

対処方法ですが、
File “/Users/userName/.platformio/packages/tool-esptoolpy/esptool.py”, line 57
のあたりをコメントアウトしてしまえば、なんとかなります。

該当ファイルのあるエラーのあたりを選択すると、コマンドクリックでファイルにジャンプする旨表示されるので指示に従います。

修正対象ファイルへ移動


メインウインドウに該当ファイルが表示されたら、下記をコメントアウト(コマンド+/)して保存します。

コメントアウト


このワークアラウンドを使うと、デフォルトのシリアル端末が取得できなくなるらしいので、各プロジェクトのplatform.iniファイルにシリアルポートの記載をしないといけません。

例えば下記20行目と21行目です。

いに


指定するシリアルポートはPlatformIOのHOME画面からDeviceを指定すると表示されます。
(青いアイコンクリックでコピーできます)

デバイス


とりあえず、これでBig Sur AppleシリコンMacでもPlatformIOが使えるようになりました。
めでたし。