• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

esptool.py: A fatal error occurred: Timed out waiting for packet header

vicus

New member
Всем привет!
ESP8266-01, пытаюсь залить прошивку NodeMCU утилитой esptool.py под линухом так:
$ ./esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash 0x00000 ../nodemcu-master-8-modules-2016-11-13-09-20-34-integer.bin
esptool.py v1.3-dev
Connecting...
Auto-detected Flash size: 8m
Running Cesanta flasher stub...
Flash params set to 0x0020
Writing 389120 @ 0x0... 3072 (0 %)

A fatal error occurred: Timed out waiting for packet header
$
При этом, такой результат не всегда. Бывает, что процесс обрывается еще раньше. Иногда на ошибке
"Failed to connect to ESP8266"

Использую USB-TTL конвертер PL2303. Внешний источник питания на 3.3В, 1А, надежный. Пробовал заменять на батарейки (2 x 1.5v) - результат одинаковый.
По схеме включения:
GPIO0 притянут резистором к GND
GPIO2 и CHPD притянуты резисторами к VCC.

Сам ESP модуль живой, - команды типа AT+GMR выполняются успешно в ESPlorer. Через ESPlorer командой AT+CIUPDATE успешно обновил SDK до 1.5.4:
AT+GMR
AT version:1.1.0.0(May 11 2016 18:09:56)
SDK version:1.5.4(baaeaebb)
Ai-Thinker Technology Co. Ltd.
May 28 2016 10:42:12
OK


Chip ID: 0x00cbbf36
flash_id: Manufacturer: e0, Device: 4014

Помогите разобраться с проблемой. Куда копать?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Сделайте нормальное питание модулю.
При описанных симптомах у питомца, такое происходит, когда питание идет через резистор, т.е. с просадкой. esptool при этом часто просто "виснет" на каком-то %. Возможно потом выходит по тайм-ауту, но зависит от версии esptool.py...
 
Последнее редактирование:

vicus

New member
Сделайте нормальное питание модулю.
При описанных симптомах у питомца, такое происходит, когда питание идет через резистор, т.е. с просадкой. esptool при этом часто просто "виснет" на каком-то %. Возможно потом выходит по тайм-ауту, но зависит от версии esptool.py...
Питание нормальное у модуля. Питание - это то о чем я подумал сразу. Как я сказал выше - сейчас модуль запитан от стационарного стабилизированного блока питания на 3.3В, 1А. Просадки напряжения при включении нет. Но раньше пробовал и по другому запитывать (от батареек, и от USB-TTL конвертера), - результат такой же.
Визуально похоже как раз на то, что "виснет" не esptool, а esp-модуль. А именно, когда возникает ошибка "Timed out waiting for packet header" - то пока после этого не передернеш питание на модуле, - постоянно выдает ошибку "Failed to connect to ESP8266" на всех последующих, даже простых, операциях, типа получения chip_id.
И еще уточню... У меня всегда виснет на 0%. Очень редко на 1%. Еще ни разу не смог прошить успешно.
 
Последнее редактирование:

pvvx

Активный участник сообщества
И еще уточню... У меня всегда виснет на 0%. Очень редко на 1%. Еще ни разу не смог прошить успешно.
Значит смотрите амплитуду сигнала TX от адаптера. Не стоит превышать 3.3В. Гляньте и как там с другими ногами для авто переключения в режим программирования. Если не поможет, то придется глядеть пропайку чипа на модуле...
И осторожнее с "прошивку NodeMCU" - она не знает, что у вас ESP-01 и делает вывод в GPIO15, который припаян в модуле на gnd. Как итог - возможный выход из строя чипа, от перегрева выхода...
 

vicus

New member
Гляньте и как там с другими ногами для авто переключения в режим программирования.
Не совсем понял, что имеется в виду? Ноги стоят так:
GPIO0 притянут резистором к GND.
GPIO2 и CHPD притянуты резисторами к VCC.
Именно так выставлены ноги при включении питания. Или они должны быть по другому выставлены при подаче питания, а после подачи нужно переключить?
И осторожнее с "прошивку NodeMCU" - она не знает, что у вас ESP-01 и делает вывод в GPIO15
Ого... спасибо что предупредили. А как лечить? Может есть где-то готовая NodeMCU адаптированная под ESP-01?
 

pvvx

Активный участник сообщества
Не совсем понял, что имеется в виду? Ноги стоят так:
GPIO0 притянут резистором к GND.
GPIO2 и CHPD притянуты резисторами к VCC.
Именно так выставлены ноги при включении питания. Или они должны быть по другому выставлены при подаче питания, а после подачи нужно переключить?
Ничего не надо переключать. Значения с входов для типа загрузки защелкиваются по фронту RESET.
Ого... спасибо что предупредили. А как лечить? Может есть где-то готовая NodeMCU адаптированная под ESP-01?
Не пользоваться GPIO15 и настраивать его на вход. Или снимать чип, резать дорожку и припаивать резистор. Но модуль этого не стоит, да и сразу не вылетит, если включите как выход и выведите "1". Подскакивает потребляемый ток. Так-же не включить UART в режим flow-control, т.к. RTS/CTS и есть GPIO15.

Закорачивание I/O выхода вызывает увеличение тока на 50 мА: http://esp8266.ru/forum/attachments/esp-01-gpio15-out-gif.885/
 
Последнее редактирование:

vicus

New member
Ничего не надо переключать. Значения с входов для типа загрузки защелкиваются по фронту RESET.

Не пользоваться GPIO15 и настраивать его на вход. Или снимать чип, резать дорожку и припаивать резистор. Но модуль этого не стоит, да и сразу не вылетит, если включите как выход и выведите "1". Подскакивает потребляемый ток. Так-же не включить UART в режим flow-control, т.к. RTS/CTS и есть GPIO15.

Закорачивание I/O выхода вызывает увеличение тока на 50 мА: http://esp8266.ru/forum/attachments/esp-01-gpio15-out-gif.885/
Понял, большое спасибо за совет!
Возвращаясь к моей проблеме... Померял уровни RX,TX которые выставляет адаптер PL2303: high ==4.8В. Пятивольтовая логика :( Забыл проверить сразу, так как до этого экспериментировал с адаптером cp2102. На cp2102 логика 3.3В, но там другая проблема: при попытке выполнить команды esptool.py получал исключение на функции установки DTR:
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 535, in setDTR
fcntl.ioctl(self.fd, TIOCMBIC, TIOCM_DTR_str)
В общем, есть пока куда копать. Буду разбираться или с проблемой установки DTR при использовании cp2102, или согласовывать уровни на PL2303. По результату отпишусь.
 

vicus

New member
Убил вечер на танцы с бубном вокруг согласования уровней ТХ - ничего не помогало...
Проблема решилась закорачиванием GPIO0 на GND без резистора, напрямую. До этого подтягивал резистором 20к, - видимо это оказалось много для контроллера, и он хаотично переходил из режима программирования в обычный и обратно.
 

Arthur

Active member
@vicus, ну всё правильно. А зачем вы на землю бросали GPIO0 через резистор в 20К, откуда вы такое взяли? )
Это на VCC кидать через резистор на 3.3 ... 4.3 К стоило бы, для PULL UP... Но Pull Down резистор уж должен быть явно не 20кОм.
Да поправят более знающие товарищи моё утверждение, коли Я не прав.
А вообще, вот табличка, на которую Я периодически гляжу, чтобы освежить память:
 

vicus

New member
@vicus, ну всё правильно. А зачем вы на землю бросали GPIO0 через резистор в 20К, откуда вы такое взяли? )
Такое взял отсюда: Не работает модуль esp8266, цитирую:
"Программирование осуществляется на 115200 Baud. При этом ноги модуля при подаче питания должны быть: GPIO0 через резистор на GND, а GPIO2 через резистор на VCC."
Так как номинал резистора на GND не был указан, поставил обычный подтягивающий, номиналы которых обычно рекомендуют 5-50к. Под рукой 10к не нашлось, влепил что было :)
 
Сверху Снизу