• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Делюсь опытом заливка прошивки через esptool.py останавливается на каком-то %

vicus

New member
Столкнулся с проблемой заливки прошивки NodeMCU в модуль esp8266-12e на Linux системе с использованием esptool.py через USB-TTL конвертор. Проблема выглядела так, что после перевода модуля в режим записи на флеш, выполнение записи останавливалось на каком-то % завершения и выдавалась ошибка "Timed out waiting for packet header". Очень часто остановка записи была на 6%, иногда доходило до 99% как в примере ниже:

$ sudo esptool.py --port /dev/ttyUSB0 write_flash --flash_size 32m -fm dio 0x00000 ./nodemcu-master-10-modules-2017-09-25-18-22-58-float.bin
esptool.py v1.3-dev
Connecting...
Running Cesanta flasher stub...
Flash params set to 0x0240
Writing 425984 @ 0x0... 422912 (99 %)
A fatal error occurred: Timed out waiting for packet header
$

В чем причина ошибки я так и не разобрался, но смог залить прошивку увеличив скорость передачи до 460800 бод:

$ sudo esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size 32m -fm dio 0x00000 ./nodemcu-master-10-modules-2017-09-25-18-22-58-float.bin
esptool.py v1.3-dev
Connecting...
Running Cesanta flasher stub...
Flash params set to 0x0240
Writing 425984 @ 0x0... 425984 (100 %)
Wrote 425984 bytes at 0x0 in 10.0 seconds (341.6 kbit/s)...
Leaving...
$

Может будет полезно кому.
 
Последнее редактирование:

Алексей.

Active member
А я грузил только этим есптулом, больше и грузить то под линухом нечем, точнее я не знаю чем.
Грузил esp32 devkit (выглядит как nodemcu) и esp8266-01 подключенные usb-uart на пролифике, проблем вообще ни каких. Правда есптул использовал версии 2.1 (тот что от августа 2017), в ноябре выпущен 2.2, пока не пробовал его.
Если верить их релиз-нотисам
Timeouts refactored for better consistency, fix some timeouts flashing large binaries (particularly when flashing with a high effective compression ratio)
может этот фикс как раз для Вашего случая.
 

vicus

New member
А я грузил только этим есптулом, больше и грузить то под линухом нечем, точнее я не знаю чем.
Грузил esp32 devkit (выглядит как nodemcu) и esp8266-01 подключенные usb-uart на пролифике, проблем вообще ни каких. Правда есптул использовал версии 2.1 (тот что от августа 2017), в ноябре выпущен 2.2, пока не пробовал его.
Если верить их релиз-нотисам
Timeouts refactored for better consistency, fix some timeouts flashing large binaries (particularly when flashing with a high effective compression ratio)
может этот фикс как раз для Вашего случая.
Последнюю версию esptool тоже пробовал, - результат был аналогичный, или даже хуже. Просто в версии 2.1 не показывались % complete, а только ползунок попыток.
Фикс с таймаутами тоже видел. Как я понял, они просто добавили попытки отправить повторно порцию данных, в случае если возникают таймауты. Но проблема в моем случае была, как мне кажется, где-то в стыке между USB-TTL конвертером и модулем. Может рассогласование какое-то... Такое впечатление, что модуль esp-12e просто подвисал в какой-то момент процесса прошивания, перестав мигать синим светодиодом.
Год назад прошивал этим же esptool-ом модуль esp-01, - было все ок.
 

Алексей.

Active member
После этого мне уж и не хочется покупать nodemcu, для есп-01 использовал usb-ttl, ещё есть пара есп-12, но распаивать лениво, думал купить nodemcu, а уж теперь и покупать стремно.

А в 2.1 проценты почему-то показывались
/home/alex/espressif/esptool-py/esptool.py --port /dev/ttyUSB0 write_flash 0x00000 eagle.flash.bin 0x20000 eagle.irom0text.bin
esptool.py v2.1
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 1MB
Flash params set to 0x0020
Compressed 34000 bytes to 24825...

Writing at 0x00000000... (50 %)
Writing at 0x00004000... (100 %)
Wrote 34000 bytes (24825 compressed) at 0x00000000 in 2.2 seconds (effective 122.0 kbit/s)...
Hash of data verified.
Compressed 255816 bytes to 187629...

Writing at 0x00020000... (8 %)
Writing at 0x00024000... (16 %)
Writing at 0x00028000... (25 %)
Writing at 0x0002c000... (33 %)
Writing at 0x00030000... (41 %)
Writing at 0x00034000... (50 %)
Writing at 0x00038000... (58 %)
Writing at 0x0003c000... (66 %)
Writing at 0x00040000... (75 %)
Writing at 0x00044000... (83 %)
Writing at 0x00048000... (91 %)
Writing at 0x0004c000... (100 %)
Wrote 255816 bytes (187629 compressed) at 0x00020000 in 16.8 seconds (effective 121.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting...
 

kab

New member
осле этого мне уж и не хочется покупать nodemcu
Я так понял ТС, что он пытался залить прошивку, предназначенную для NodeMCU в модуль esp8266-12e, подключенный по своей схеме...

А что касается непосредственно модуля NodeMCU, то у меня по собственному опыту (правда, с использованием Arduino IDE :) под винду) и по отзывам на форуме, сложилось впечатление, что это самая удачная, беспроблемная плата, содержащая ESP8266.
 

Алексей.

Active member
kab, У меня обратный опыт.
На отладочной плате esp-wroom-32 devkit, расположенный на плате usb-ttl CP2104 на скорости 1500000 bps при интенсивной нагрузке вообще отваливался так, что пк вообще переставал видеть это юсб устройство, несмотря на это сам есп32 продолжал работать от питания получаемого от этого юсб. Чтоб оживить usb-ttl приходилось его отключать и заново включать (выдергивать из пк крайне не удобно когда находишься далеко от этого пк).
 
Сверху Снизу