現象
ESP32にファームウェアの書き込みはできるが、シリアルモニタでログを見ようとすると動かない。
- ESPの
make monitor
コマンドが失敗する - miniterm.py / arduinoIDEでシリアルに接続すると、ESPが固まる
- シリアル接続しない場合はESPは正常に動く
ESPのmake monitor
の失敗例1
$ make monitor ESPPORT=/dev/tty.usbserial-DQ0007XM
MONITOR
--- WARNING: Serial ports accessed as /dev/tty.* will hang gdb if launched.
--- Using /dev/cu.usbserial-DQ0007XM instead...
--- idf_monitor on /dev/cu.usbserial-DQ0007XM 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
Exception in thread Thread-2:
Traceback (most recent call last):
File "/Users/kido/.pyenv/versions/2.7.10/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "/Users/kido/.pyenv/versions/2.7.10/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/Users/kido/Documents/extra/obniz/obniz-firmware/esp-idf/tools/idf_monitor.py", line 120, in _run_outer
self.run()
File "/Users/kido/Documents/extra/obniz/obniz-firmware/esp-idf/tools/idf_monitor.py", line 200, in run
data = self.serial.read(self.serial.in_waiting or 1)
File "/Users/kido/.pyenv/versions/2.7.10/lib/python2.7/site-packages/serial/serialposix.py", line 509, in read
raise SerialException('read failed: {}'.format(e))
SerialException: read failed: [Errno 6] Device not configured
ESPのmake monitor
の失敗例2
ログが一部しか保存してなかった
.../site-packages/serial/tools/miniterm.py, line 63, in write_bytes self.byte_output.write(byte_string)
TypeError: a bytes-like object is required, not 'int'
原因
Serialの設定がうまくできていなかった模様
解決法
SerialのFlashModeを正しいものにする(デバイス依存)。
仕様書はこちら
https://github.com/espressif/esptool/wiki/SPI-Flash-Modes
設定方法がわからなかったので、arduino IDEをつかってFlashModeをDIOにした
一度設定すればずっと有効みたいなので、抜いて刺しても問題なく動いた
(参考)上の解決に行くまでにやってみたこと
- FDTI社のUSB-Serialドライバーの再インストール
- miniterm.py / ArduinoIDE / screen 等のシリアルモニタでの接続
make monitor
の失敗例2 → make monitor
の失敗例1 に行くまでに、上記を色々やってたので、
そこら編の影響もがあるかも・・・?
#追記
失敗例2が再発して、なかなか直せなかったので、暫定対処として下記コマンドで対応中
make monitorが失敗するなら別コマンドでminiterm動かしちゃえばいいじゃない
make flash ESPPORT=/dev/tty.usbserial-00004314 ESPBAUD=1500000 && miniterm.py /dev/tty.usbserial-00004314 115200