wanwanの興味あるもの実験室

arduino、mbed、M5stack その他興味のあるものをちょこちょこと

M5 STACKをMac 使おうと思ったらget.pyでエラーが出た

環境構築で起きた問題

普段、メインPCTはwin10のデスクトップ、サブのノートPCはMac bookを使用している。

家ではあまりノートPCを触ることがないのだが、ふと思い立ってMacで環境構築を行ったところ思った以上に行き詰まったので備忘録として残しておく。

MacOSでM5Stackを使用している方も多くいるようで、下記の記事を参考にしながら環境構築を進めた。  

qiita.com

USBシリアルドライバのインストールは特に問題なく完了。
次に、ESP32 Arduino Coreをインストールしようとしたのだが、ここで盛大に躓いた。

下記のページに記載されている、コマンドをターミナルにコピペし、gitからファイルをダウンロードしようとするとエラーが出る。

github.com

エラーの内容は以下のとおり、

MacBook:tools $ python get.py
System: Darwin, Info: Darwin-16.7.0-x86_64-i386-64bit
Platform: x86_64-apple-darwin
Tool xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz already downloaded
Extracting xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz
Tool esptool-2.3.1-macos.tar.gz already downloaded
Extracting esptool-2.3.1-macos.tar.gz
Downloading mkspiffs-0.2.3-arduino-esp32-osx.tar
Traceback (most recent call last):
  File "get.py", line 148, in <module>
    get_tool(tool)
  File "get.py", line 103, in get_tool
    urlretrieve(url, local_path, report_progress)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 98, in urlretrieve
    return opener.retrieve(url, filename, reporthook, data)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 245, in retrieve
    fp = self.open(url, data)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 213, in open
    return getattr(self, name)(url)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 443, in open_https
    h.endheaders(data)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1049, in endheaders
    self._send_output(message_body)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 893, in _send_output
    self.send(msg)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 855, in send
    self.connect()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1274, in connect
    server_hostname=server_hostname)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 352, in wrap_socket
    _context=self)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 579, in __init__
    self.do_handshake()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 808, in do_handshake
    self._sslobj.do_handshake()
IOError: [Errno socket error] [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)

CUIアレルギーである私が、頑張って読んでみたところ、どうやらmkspiffs-0.2.3-arduino-esp32-osx.tarというファイルのダウンロードでエラーを吐いている用に見える。

冒頭に貼り付けた記事の方も同様のエラーが発生したらしく、解決方法が記載された下記の記事を紹介している。

qiita.com

どうやらエラーの出ているファイルを単体でgitよりダウンロードし、参照されているフォルダに置けばきちんと実行できるらしい。

ということで早速試してみたのだが、記事のリンクよりダウンロードされるファイルは、バージョンが古い0.2.2のものらしくエラーが出るのは変わらず。

解決方法

ロクにソースも読めない私が、なんとか解決した方法を以下に示す。

まず、ファイルのダウンロードURLであるが、get.py実行時に呼び出されているpackage_esp32_index.template.json内に記載してある。

場所は、下記の通り。

~/Documents/Arduino/hardware/espressif/esp32/package

MacOS向けのダウンロードURLは139行目に記載されている。

"host": "x86_64-apple-darwin",
"url": "https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
"archiveFileName": "mkspiffs-0.2.3-arduino-esp32-osx.tar.gz",
"checksum": "SHA-256:9f43fc74a858cf564966b5035322c3e5e61c31a647c5a1d71b388ed6efc48423",
"size": "130270"

これよりURLは、

https://github.com/igrr/mkspiffs/releases/download/0.2.3/mkspiffs-0.2.3-arduino-esp32-osx.tar.gz

コピペしたURLをブラウザに貼り付けてファイルをダウンロードする。

ダウンロードしたファイルは下記の場所に置く。

~/Documents/Arduino/hardware/espressif/esp32/tools/dist/

でこれで大丈夫かと思いきや、ダウンロードしたファイルの拡張子は.tar f:id:wanwan24101:20180910035655p:plain

jsonのコードには、.tar.gzで記載されているので.gzで圧縮する。

cd ~/Documents/Arduino/hardware/espressif/esp32/tools/dist/ &&/
gzip mkspiffs-0.2.3-arduino-esp32-osx.tar

ファイルの拡張子が.tar.gzになっていたらOK。

f:id:wanwan24101:20180910040243p:plain

get.pyがあるフォルダに移動して、再度実行する。

cd ~/Documents/Arduino/hardware/espressif/esp32/tools/ &&/
python get.py

下記のようにDoneになれば成功。

MacBook:tools $ python get.py
System: Darwin, Info: Darwin-16.7.0-x86_64-i386-64bit
Platform: x86_64-apple-darwin
Tool xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz already downloaded
Extracting xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz
Tool esptool-2.3.1-macos.tar.gz already downloaded
Extracting esptool-2.3.1-macos.tar.gz
Tool mkspiffs-0.2.3-arduino-esp32-osx.tar.gz already downloaded
Extracting mkspiffs-0.2.3-arduino-esp32-osx.tar.gz
Renaming mkspiffs-0.2.3-arduino-esp32-osx to mkspiffs
Done

あとは、ESP32ライブラリをgit cloneすればArduino IDEから使用できる。

以上

PS.無理矢理な解決方法な気がするので、根本的な解決方法があれば知りたい