Частые вопросы об ESP32

Прошивка ESP32 на Linux и Mac

// linux + mac · flashing faq

Рубрика: ESP32 · Linux · macOS · Прошивка · Обновлено: август 2026

Прошивка esp32 на linux и mac на самом деле проще, чем на Windows: никакой охоты за драйверами для большинства плат, просто имя serial-порта выглядит иначе. Команды, ошибки прав и одна причуда macOS, которая сжигает вечер.

Нужны ли драйверы на Linux?

Обычно нет — в ядре уже есть драйверы CH340, CP2102 и нативного USB-Serial-JTAG. esptool.py на linux не требует дополнительного шага с драйверами для обычных плат; чего он требует — прав: если вы не в группе dialout, esptool падает с «could not open port». sudo usermod -aG dialout $USER, выйти, зайти — готово.

Нужны ли драйверы на macOS?

Классическим USB-чипам — да: платы на CP2102 хотят драйвер VCP от Silicon Labs, на CH340 — драйвер WCH; оба ставятся kext-файлами, на которые macOS всё больше ворчит. Более новые платы ESP32-S3, C3 и C6 показывают USB-Serial-JTAG и не требуют ничего, так что esptool.py на mac с ними работает из коробки. На современном железе вопрос драйверов исчезает.

Как прошить ESP32 на Linux?

Найдите порт через ls /dev/tty* до и после подключения, затем прошивайте: esptool.py --port /dev/ttyUSB0 write_flash 0x0 firmware.bin. Для плат с нативным USB порт — /dev/ttyACM0. Всё остальное — адреса, режим загрузки, бод — совпадает с любой другой ОС, так что общий FAQ по прошивке применим слово в слово.

Как прошить ESP32 на Mac?

Имя порта — единственный сюрприз: /dev/cu.usbserial-XXXX для плат на CH340/CP2102, /dev/cu.usbmodem для нативного USB. Дальше та же строка esptool: esptool.py --port /dev/cu.usbserial-XXXX write_flash 0x0 firmware.bin. Если порт не появляется — ответ в разделе про драйверы выше, а не в плате.

Arduino IDE одинакова на обеих системах?

Да, включая пакет плат и выбор порта — одним пунктом меньше переучивать. FAQ по Arduino IDE описывает настройку Board Manager, которая здесь ведёт себя идентично. Единственное ОС-специфичное различие Arduino на Linux — та самая группа dialout; на macOS — kext, и оба чинятся один раз.

Порт не виден — что делать?

Выполните ls /dev/tty* / ls /dev/cu.* с отключённой платой, затем с подключённой — новичок и есть ваш порт. Если ничего не появилось: кабель (кабели «только зарядка» — виновник номер один), затем драйвер, затем сама плата. Я наблюдал, как люди покупали вторую плату из-за кабеля за $2.

Можно ли прошивать через PlatformIO на Linux или Mac?

Да, и это самый гладкий вариант на обеих: platformio run --target upload сам определяет порт и прошивает тем же инструментарием, что и esptool. FAQ по PlatformIO покрывает настройку; шаг загрузки здесь идентичен Windows, кроме имени порта.

По-прежнему нужно держать BOOT?

На большинстве devkit нет — цепь автоперезагрузки (разводка DTR/RTS) делает это за вас, ровно как на Windows. Платам без автоперезагрузки или голым модулям нужен ручной танец: зажать BOOT, нажать EN, отпустить. Логика зависит от платы, а не от ОС.

Почему прошивка на Linux медленная?

Дефолтный бод esptool консервативен. Добавьте --baud 460800 к write_flash — и та же прошивка встаёт за долю времени. Если мостовой чип заикается на этой скорости — некоторые платы на CH340 так делают, — снизьте до 230400. В основном работает, с разбросом от платы к плате; мой старый devkit на CH340 отказывается от всего выше 115200.

Можно ли прошивать из Docker-контейнера?

Да, пробросив serial-порт: docker run --device /dev/ttyUSB0 плюс членство в группе dialout для пользователя контейнера. Это чистый способ фиксировать версии инструментариев, и свои ночные прошивки я гоняю именно так. А если хотите потренировать процесс прошивки вообще без железа — практическую сторону покрывает браузерный симулятор.

Проекты по этой теме запускаются прямо в бесплатном симуляторе sensbench: схема уже собрана, прошивка включена — без аккаунта и установки.

Leave a Reply

Your email address will not be published. Required fields are marked *