ラビット・エンジニアリング

趣味の電子工作を、備忘録もかねて・・・・

アップルM1チップ搭載のMacBookAirにesptoolをインストールしてみた

背景

MacBookAir 11インチを愛用していたが、5年ぶりにM1チップ搭載のMac Book Airを購入。当然だがそのままではesptoolが使えないのでインストール方法まとめてみた。

 

結論

M1チップMacBookAirは、購入状態ではpipコマンドによるesptoolのインストールに失敗するが、pipを最新にアップグレードしたら問題解決。esptoolが使えるようになった。

 

前提

esptool.pyのようなPythonモジュールがらみの環境構築には、PythonPython3の共存の話が尽きない。最新のMacを購入したのに、旧バージョンのPythonに悩まされたく無いので、Python3のみで構築することを前提とした。

 

以下、やった事を残した。

 

まずはそのままesptoolのインストール

MacBookAir購入状態でそのままesptoolのインストールしてみた。

方法は簡単。コンソールで下記コマンド実行

pip install esptool

 

詳しくは、ここに詳細説明あり。

micropython-docs-ja.readthedocs.io

 

言われた通りにpipでのインストールやってみたが・・・

pipコマンドでesptoolインストールした結果が以下

 

usagi@usagi-mba ~ % pip install esptool

Traceback (most recent call last):

File "/usr/local/bin/pip", line 11, in <module>

load_entry_point('pip==21.1.1', 'console_scripts', 'pip')()

 ...長いので省略

 

ImportError: No module named typing

 

ImportError: No module named typing、要するにpipが見つからないっぽい。

 

pip3コマンドでやってみた

usagi@usagi-mba ~ % pip3 install esptool
Collecting esptool
Collecting reedsolo<=1.5.4,>=1.5.3 (from esptool)
Collecting cryptography>=2.1.4 (from esptool)
Using cached https://files.pythonhosted.org/packages/9b/77/461087a514d2e8ece1c975d8216bc03f7048e6090c5166bc34115afdaa53/cryptography-3.4.7.tar.gz
Installing build dependencies ... done

...長いので省略

I
Successfully built cffi
ERROR: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly
WARNING: You are using pip version 19.2.3, however version 21.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
usagi@usagi-mba ~ %

 

pipの時とは異なり、なんとなくうまく進んでsuccessfullyで終わっている部分もあるが、最終的にはERRORで終わっている。

こんな警告が出ていた。

 

WARNING: You are using pip version 19.2.3, however version 21.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

  

pipの更新をおすすめされているらしい。

 

pipを最新バージョンにアップグレードした。

 

usagi@usagi-mba work % sudo pip3 install --upgrade pip

... 省略

Installing collected packages: pip
Found existing installation: pip 19.2.3
Uninstalling pip-19.2.3:
Successfully uninstalled pip-19.2.3
Successfully installed pip-21.1.1

問題なく終わった

 

pipのバージョン確認

usagi@usagi-mba work % pip -V
pip 21.1.1 from /Library/Python/3.8/site-packages/pip (python 3.8)

問題なく最新バージョンに更新された。
さらに注目は、pip3コマンドではなく、pipコマンドでPython3のモジュールの呼び出しができているところ。これからはpipとpip3を気にしなくていいと思われる。

 

最新のpipでesptoolをインストール

usagi@usagi-mba work % pip install esptool

... 省略

Successfully built esptool bitstring cffi reedsolo
Installing collected packages: pycparser, cffi, reedsolo, ecdsa, cryptography, bitstring, esptool
Successfully installed bitstring-3.1.7 cffi-1.14.5 cryptography-3.4.7 ecdsa-0.16.1 esptool-3.0 pycparser-2.20 reedsolo-1.5.4

 

無事インストールされたらしい。

 

esptoolの動作確認

versionコマンドで動作チェック

usagi@usagi-mba work % esptool.py version
zsh: command not found: esptool.py

 

そんなコマンドないよって。
whichコマンドで探してみたら、ここにあった。
 

usagi@usagi-mba ~ % which esptool.py

/Users/usagi/Library/Python/3.8/bin/esptool.py

 

ここに移動して再度確認

usagi@usagi-mba bin % ./esptool.py version
esptool.py v3.0
3.0

 

動くぞ!
要するに、パスが通ってないってことか?
パスの設定見てみる。

 

usagi@usagi-mba work % echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin

 

確かに通ってない。

 

パスを通す

M1チップ搭載Macのシェルはzsh

usagi@usagi-mba work % echo $SHELL
/bin/zsh

 

パスを設定するには、.zschrcにパスを追記すればいい。
まずは、ホームに.zschrcが存在するか確認。
 

usagi@usagi-mba ~ % find .zshrc
find: .zshrc: No such file or directory

 

ないので作成

usagi@usagi-mba ~ % touch .zshrc

 

作成したファイルにviエディタなどでesptool.pyのあるディレクリ
/Users/usagi/Library/Python/3.8/bin
を追加。
 

export PATH=$PATH:/Users/usagi/Library/Python/3.8/bin

 

保存して、有効化する。

usagi@usagi-mba ~ % source ~/ .zshrc

 

改めて、あえてesptool.pyの存在する場所とは異なるディレクトリからの動作確認

 

usagi@usagi-mba ~ % esptool.py version
esptool.py v3.0
3.0
usagi@usagi-mba ~ %

 

無事に通った。

 

M5STACK差し込んで確認してみる

差し込む前のデバイス情報をlsコマンドで確認 

usagi@usagi-mba ~ % ls /dev/tty.*

/dev/tty.Bluetooth-Incoming-Port
/dev/tty.wlan-debug
/dev/tty.debug-console

 

接続後

usagi@usagi-mba ~ % ls /dev/tty.*

/dev/tty.Bluetooth-Incoming-Port
/dev/tty.wlan-debug
/dev/tty.debug-console 
/dev/tty.usbserial-0203ACAE

 

一つ増えた。/dev/tty.usbserial-0203ACAEがM5カメラ

flash_idコマンドでチップ情報みてみる。

 

usagi@usagi-mba ~ % esptool.py chip_id
esptool.py v3.0
Found 4 serial ports
Serial port /dev/cu.wlan-debug
/dev/cu.wlan-debug failed to connect: [Errno 16] could not open port /dev/cu.wlan-debug: [Errno 16] Resource busy: '/dev/cu.wlan-debug'
Serial port /dev/cu.usbserial-0203ACAE
Connecting....
Detecting chip type... ESP32
Chip is ESP32-D0WDQ6-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: b8:f0:09:c5:c5:10
Uploading stub...
Running stub...
Stub running...
Warning: ESP32 has no Chip ID. Reading MAC instead.
MAC: b8:f0:09:c5:c5:10
Hard resetting via RTS pin...

 

認識した。

これでこれまでのMacと同様にesptool使える環境に戻った。