Зависание на этапе checking baudrate при прошивке платы ESP32 или ESP8266 через esptool означает, что утилита не может согласовать скорость обмена данными с загрузчиком чипа. Процесс останавливается до начала записи прошивки, и в консоли появляются повторяющиеся строки Connecting... или сообщение об ошибке таймаута.
Проблема почти всегда связана не с самой прошивкой, а с каналом связи между компьютером и платой: драйвером USB-UART преобразователя, качеством кабеля, неправильной скоростью порта или тем, что чип не переведён в режим загрузки. Ниже разберём, как это диагностировать и устранить, начиная с самых безопасных проверок.
Что происходит на этапе checking baudrate
Когда вы запускаете загрузку прошивки, esptool сначала устанавливает связь с ROM-загрузчиком чипа на стандартной скорости, а затем пытается переключиться на более высокую, чтобы ускорить передачу данных. Именно это переключение и отображается строкой checking baudrate. Если чип не отвечает корректно, процесс зависает или обрывается.
Важно понимать: на этом этапе прошивка ещё не начала записываться во флеш-память. Поэтому сама по себе остановка здесь не «окирпичивает» плату — чип остаётся в исходном состоянии, и попытку можно повторить после устранения причины.
Основные причины зависания
Прежде чем менять настройки, полезно понять, что именно мешает согласованию скорости. Возможные причины:
- 🔌 Не установлен или некорректно работает драйвер USB-UART преобразователя (CH340, CP2102, FTDI — в зависимости от платы).
- 🔋 Кабель только для зарядки — в нём отсутствуют линии данных, и связь с чипом физически невозможна.
- ⚡ Слишком высокая скорость загрузки, заданная в параметрах, — чип или преобразователь не успевают отвечать.
- 🔘 Плата не переведена в режим загрузки — на некоторых платах нужно вручную удерживать кнопку
BOOT. - 🖥️ Порт занят другой программой — например, открытым монитором порта в Arduino IDE или терминалом.
Точную причину заранее назвать нельзя — она зависит от конкретной платы и конфигурации. Поэтому проверки ниже стоит выполнять последовательно, от простого к сложному.
Проверка кабеля и подключения
Начните с физического уровня — это самая частая и самая недооценённая причина. USB-кабели «только для зарядки» внешне неотличимы от полноценных, поэтому единственный надёжный способ проверки — подключить через этот кабель любое другое устройство и убедиться, что оно определяется компьютером как устройство данных, а не только заряжается.
Также имеет смысл подключить плату напрямую к порту компьютера, минуя USB-хабы и удлинители. Длинные или некачественные кабели дают помехи, которые не мешают на низкой скорости соединения, но срывают переключение на высокую — именно на этапе checking baudrate.
Драйверы USB-UART преобразователя
Откройте Диспетчер устройств в Windows и посмотрите раздел «Порты (COM и LPT)» в момент подключения платы. Если устройство появляется с жёлтым восклицательным знаком или определяется как «Неизвестное устройство», проблема в драйвере.
Узнать, какой преобразователь стоит на вашей плате, можно из её документации или по маркировке микросхемы возле USB-разъёма. Драйвер нужно скачивать с официального сайта производителя чипа (WCH для CH340, Silicon Labs для CP210x), а не со сторонних сборников. После установки переподключите плату и убедитесь, что ей присвоен номер COM-порта.
⚠️ Внимание: если порт появляется и тут же исчезает при подключении, это может указывать на проблему с питанием платы или неисправность преобразователя. Не пытайтесь прошивать такую плату «через раз» — сначала добейтесь стабильного определения порта в системе.
Снижение скорости загрузки
Если связь есть, но зависание сохраняется, снизьте скорость прошивки. В Arduino IDE это параметр Upload Speed в меню «Инструменты» — попробуйте значение 115200, которое считается базовым для большинства ESP-плат. При использовании esptool напрямую скорость задаётся параметром командной строки:
esptool.py --port COM5 --baud 115200 write_flash 0x1000 firmware.bin
Низкая скорость увеличивает время загрузки, но заметно повышает стабильность, особенно через длинные кабели и недорогие преобразователи. После успешной прошивки на низкой скорости можно экспериментировать с более высокими значениями.
Перевод платы в режим загрузки
Многие платы на ESP32 умеют входить в режим загрузки автоматически через сигналы DTR/RTS, но на части плат и клонов эта схема работает нестабильно. В таком случае чип нужно перевести в boot-режим вручную: зажать кнопку BOOT (или FLASH), кратко нажать EN/RST, затем отпустить BOOT — и только после этого запускать прошивку. Точное расположение кнопок смотрите в документации своей платы.
Признак того, что чип в режиме загрузки, — отсутствие вывода запущенной программы в мониторе порта после сброса. Если в терминале продолжает бежать лог вашей старой прошивки, чип загрузился в обычном режиме, и esptool не сможет с ним договориться.
☑️ Проверка перед повторной прошивкой
Типичные симптомы и их причины
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
| Порт не появляется в системе | Драйвер или кабель без линий данных | Диспетчер устройств, другой кабель |
| Зависание на checking baudrate | Высокая скорость, помехи в линии | Снижение baud rate, короткий кабель |
| Циклические строки Connecting... | Чип не в режиме загрузки | Кнопка BOOT при старте прошивки |
| Ошибка доступа к порту | Порт занят другой программой | Закрыть монитор порта, терминалы |
| Обрыв в середине загрузки | Нестабильное питание по USB | Другой порт компьютера, без хаба |
⚠️ Внимание: не подключайте к плате внешние модули и периферию во время прошивки, особенно к пинам, участвующим в загрузке (например, GPIO0 у ESP32). Подтяжки на этих линиях могут мешать входу в boot-режим, и причина зависания будет выглядеть как проблема baudrate.
Дополнительные меры, если ничего не помогло
Когда базовые шаги выполнены, а зависание осталось, проверьте следующее. Закройте все программы, которые могут держать COM-порт: монитор порта Arduino IDE, PuTTY, PlatformIO-терминал. Попробуйте другой USB-порт компьютера — желательно напрямую на материнской плате, а не на передней панели корпуса.
Если есть возможность, проверьте плату на другом компьютере. Это быстро локализует проблему: если там прошивка идёт нормально, причина в драйверах или USB-портах первой машины. Если же зависание повторяется и на другом ПК с заведомо исправным кабелем, возможна неисправность самого преобразователя на плате — тогда плату можно прошить через внешний USB-UART адаптер, подключив его к пинам TX/RX, но это уже требует внимательности с уровнями логики (3,3 В у ESP).
Почему esptool вообще меняет скорость
По умолчанию ROM-загрузчик ESP стартует на умеренной скорости. Чтобы ускорить запись многомегабайтной прошивки, esptool согласует с чипом более высокий baudrate. Если линия связи «не тянет» высокую скорость — из-за кабеля, помех или преобразователя — согласование срывается, и вы видите зависание именно на этом шаге.
Частые вопросы
Опасно ли прерывать прошивку на этапе checking baudrate?
Да, прерывание на этом этапе безопасно: запись во флеш-память ещё не началась, чип остаётся в исходном состоянии. Можно спокойно закрыть утилиту и повторить попытку после устранения причины.
Какую скорость выбрать, если прошивка не идёт?
Начните с 115200 — это базовое значение, которое стабильно работает практически на любых платах и преобразователях. После успешной загрузки можно постепенно повышать скорость, проверяя стабильность.
Почему плата прошивалась раньше, а теперь зависает?
Возможные причины: обновление или сбой драйвера в системе, замена кабеля, переход на другой USB-порт, либо открытый монитор порта, который занял соединение. Проверьте, что изменилось в конфигурации с момента последней успешной прошивки.
Нужно ли удерживать BOOT всё время прошивки?
Нет. Кнопку BOOT достаточно удерживать только в момент входа в режим загрузки — до появления в консоли строки о том, что esptool подключился к чипу. После начала передачи данных кнопку можно отпустить.
Может ли зависание означать неисправность платы?
Может, но это стоит подозревать в последнюю очередь — после проверки кабеля, драйвера, скорости и другого компьютера. Если плата не прошивается ни при каких условиях и не определяется стабильно, возможен выход из строя USB-UART преобразователя; обходной вариант — прошивка через внешний адаптер по пинам UART.