アップルM1チップ搭載のMacBookAirにesptoolをインストールしてみた
背景
MacBookAir 11インチを愛用していたが、5年ぶりにM1チップ搭載のMac Book Airを購入。当然だがそのままではesptoolが使えないのでインストール方法まとめてみた。
結論
M1チップMacBookAirは、購入状態ではpipコマンドによるesptoolのインストールに失敗するが、pipを最新にアップグレードしたら問題解決。esptoolが使えるようになった。
前提
esptool.pyのようなPythonモジュールがらみの環境構築には、PythonとPython3の共存の話が尽きない。最新のMacを購入したのに、旧バージョンのPythonに悩まされたく無いので、Python3のみで構築することを前提とした。
以下、やった事を残した。
まずはそのままesptoolのインストール
MacBookAir購入状態でそのまま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のバージョン確認
問題なく最新バージョンに更新された。
さらに注目は、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コマンドで動作チェック
そんなコマンドないよって。
whichコマンドで探してみたら、ここにあった。
ここに移動して再度確認
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
確かに通ってない。
パスを通す
パスを設定するには、.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の存在する場所とは異なるディレクトリからの動作確認
無事に通った。
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使える環境に戻った。