LoginSignup
3

More than 3 years have passed since last update.

ESPの書き込みができなくてハマった

Last updated at Posted at 2019-11-27

現象

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にした
スクリーンショット 2019-11-26 13.32.44.png

一度設定すればずっと有効みたいなので、抜いて刺しても問題なく動いた

(参考)上の解決に行くまでにやってみたこと

  • 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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3