esptool 下载与使用:乐鑫官方命令行烧录工具(v5.3.1)
乐鑫官方维护的 ESP 系列命令行烧录工具,GPL-2.0 开源、三平台都有独立二进制;它的价值不在界面好看,而在于每一步都能写进脚本和 CI。
- 授权
- GPL-2.0 开源
- 平台
- Windows / macOS / Linux
- 协议
- UART、USB
- 官网
- https://docs.espressif.com/projects/esptool
- 源码
- https://github.com/espressif/esptool
- · 需要把烧录步骤固化进构建脚本、Makefile 或 CI 流水线的开发者
- · 在 Linux/macOS 上开发 ESP32、或需要远程通过 SSH 给设备刷固件的场景
- · 从没用过命令行、只想点几下按钮把 bin 刷进去的初学者
- · 产线上多台设备同时烧录并需要一人盯多工位的场合(GUI 批量工具更省人)
- 文件名
- esptool-v5.3.1-windows-amd64.zip
- 版本
- v5.3.1
- SHA256
- 待补(尚未实际核对,不填占位值)
- 核对于
- 2026-09-02
本站不托管安装包,上方为官方渠道直链。下载后请自行核对 SHA256,与上表不一致说明文件被改动过。
esptool 是乐鑫官方维护的 ESP 系列芯片烧录工具,采用 GPL-2.0 许可证,仓库在 espressif/esptool。它是一个命令行工具——没有窗口,没有按钮,你敲一行命令,它把 bin 写进 flash。
很多人第一次见到它会有点抵触:都 2026 年了,烧个固件为什么还要敲命令。这个问题值得先回答,因为它决定了你该不该用这个工具。
为什么乐鑫要出一个命令行工具
答案很简单:烧录这件事,在真实项目里极少是"一次"。
你写完一版固件要烧一次,改一行日志要再烧一次,同事拉了代码在他机器上也要烧。等到项目上了 CI,每次提交都要在真机上跑一轮冒烟测试,那就是每天几十上百次。这种量级下,"打开软件、选串口、选文件、点开始"这套动作是无法接受的——它没法被脚本调用,也没法在没有显示器的构建机上跑。
命令行工具解决的正是这个。一条命令可以写进 Makefile、写进 shell 脚本、写进 CI 的 job 里;参数可以来自环境变量,串口号可以自动探测,返回值可以被判断成功与否。乐鑫官方的构建系统内部烧录,走的也是这条路径。
所以判断标准不是"命令行难不难",而是你这次烧录会不会重复发生。只烧一次的场合,图形工具确实更快;一天要烧十次以上,或者需要别人在另一台机器上复现你的烧录动作,命令行才是省事的那个。
官方渠道与三平台安装
官方只有两处:仓库 https://github.com/espressif/esptool,文档站 https://docs.espressif.com/projects/esptool。最新版本是 v5.3.1,发布于 2026-06-29。别从第三方下载站拿——烧录工具直接操作串口和 flash,来路不明的副本没有任何好处。
安装有两条路,选哪条取决于你是不是 Python 用户。
第一条:直接下独立二进制。 官方在发布页提供了打包好的可执行文件,覆盖 Windows(windows-amd64)、macOS(macos-amd64 与 Apple 芯片的 macos-arm64)、Linux(linux-amd64、linux-aarch64、linux-armv7)。三大平台都有,而且 ARM 版本齐全——这意味着你在树莓派这类 ARM 板子上也能直接跑,不必现场编译。
这条路的好处是不碰 Python 环境。解压出来就是个可执行文件,扔进 PATH 里就能用。对于只想烧个固件、不想在机器上多装一套 Python 依赖的人,这是更干净的选择。
第二条:走 Python 包安装。 esptool 出身于 Python 生态,历史上大家习惯叫它 esptool.py,用 pip 装是很多人的肌肉记忆。如果你本来就在用 ESP-IDF,工具链会把它一并带上,你不需要单独装。
两条路功能是一样的。新手、或者只是临时烧一下,建议走独立二进制;已经在维护 Python 项目、需要把它作为依赖锁版本的,走 pip 更顺。
常见用法与它在自动化里的位置
日常用到的动作其实就那么几类:把 bin 写进指定的 flash 地址、把整片 flash 擦干净、读回芯片信息确认型号和 MAC、以及把 flash 内容 dump 出来做比对。具体子命令和参数请以官方文档站为准,乐鑫在版本之间调整过命令风格,照着文档敲比照着别人的博客敲可靠得多。
真正值得记住的是参数的稳定性。串口号在不同机器上会变,波特率可以调,但"哪个 bin 写到哪个地址"这件事是工程属性,一旦定下来就应该固化。把这套地址映射写进脚本,比每次凭记忆填要安全——烧错地址是很难查的一类问题,现象往往是设备启动不了或者一直重启,看不出跟你上次多敲了一个零有关。
CI 里的位置也类似:构建产出 bin,脚本调 esptool 烧进挂在构建机上的真机,再用串口读回启动日志判断是否正常。这条链路上每一环都必须无人值守,GUI 工具在这里是插不进去的。
烧不进去时按这个顺序排查
ESP 芯片要接受串口烧录,得先进入下载模式。机制上是靠 GPIO0 在复位那一刻的电平决定的:GPIO0 被拉低时上电或复位,芯片进入下载模式;否则正常启动运行用户程序。
多数开发板上你不需要手动按键,因为板子做了自动复位电路——用串口芯片的 DTR 和 RTS 两根控制线,配合三极管,在烧录开始前自动把 GPIO0 拉低并复位一次。这就是为什么你插上板子直接敲命令就能烧。但也正因为它是电路,它会坏、会因为板子设计不同而失效,这时才需要手动按住 BOOT 键再点一下 RST。
按这个顺序查,比反复拔插快得多:
先确认串口存在。 看不到端口就是驱动没装,或者线是纯供电线。ESP 开发板上常见的串口芯片是 CH340 或 CP2102,两者驱动不同,装错了一样看不到。设备管理器(或 Linux 下的 /dev/ttyUSB*、/dev/ttyACM*)里能不能列出来,是第一道判断。
再确认端口没被别人占着。 串口是独占的。你上一个串口调试助手窗口还开着,esptool 就连不上。这是最高频、也最容易被忽略的一条——先关掉助手,或者用站内的串口调试工具确认端口当前是否空闲。
然后手动进下载模式试一次。 按住 BOOT 不放,按一下 RST,松开 RST,再松开 BOOT,然后立刻执行命令。如果手动能烧、自动不能,问题就锁定在自动复位电路或者串口芯片的控制线上,跟固件和软件都无关。
接着降波特率。 高速率对线材和信号质量敏感。线长、没接地、转换器质量一般的情况下,降速再试,能过就说明是信号问题不是逻辑问题。波特率换算可以用进制与波特率换算工具。
最后怀疑供电。 ESP32 在 WiFi 发射瞬间电流尖峰很大,只靠 USB 那点电流供电时,烧录中途掉电会表现成"随机失败"。这类时好时坏的现象参考 ESP32 供电那篇的判断思路。
它和 GUI 工具的分工
乐鑫官方还有一个图形界面的批量烧录工具,叫「Flash 下载工具」,官方页面上的 Release Date 停在 2024.12.18。它和 esptool 不是替代关系,而是场景分工:
GUI 工具的主场是产线。 一屏能开多个下载通道,操作员看着进度条,烧完一个换一个,不需要懂命令行。这个场景下界面就是生产力。
esptool 的主场是开发和自动化。 它能被脚本调用、能在没有桌面的机器上跑、能把烧录结果变成一个可判断的返回值。
实际项目里两个都会用到:研发阶段用 esptool 配合构建脚本,转产之后产线用 GUI 工具。如果你正在把项目推向批量生产,烧录环节的整体流程可以接着看 L5 批量烧录。
顺带一提,如果你手上是 STM32 或者 STC 的 51 单片机,那是完全不同的工具链——见 FlyMcu 和 STC-ISP。这几个都叫"串口下载",但协议、引脚条件和操作节奏各不相同,别拿一套经验硬套另一套。烧录之后要看设备吐出来的日志,串口助手那一类工具见 SSCOM 与 UartAssist。
本文为公开资料整理,非亲测。关键参数与代码请结合实物与下列官方来源验证。
- esptool 官方文档站(乐鑫) ↗
docs.espressif.com/projects/esptool
- esptool 官方仓库(GPL-2.0,v5.3.1 发布于 2026-06-29) ↗
github.com/espressif/esptool
延伸阅读
烧录只是链路的一头,另一头是串口本身。波特率与进制换算用 进制与波特率换算工具直接算,想弄明白那几根线上跑的是什么, 从 UART 串口原理读起。 烧录时好时坏、复位就掉线,多半不是软件问题,对照 ESP32 供电那篇先排供电; 做到批量刷机那一步,流程在 L5 批量烧录。 其余嵌入式与工业通信工具见软件与工具库。
- Flash 下载工具 嵌入式开发·烧录与下载
- FlyMcu 嵌入式开发·烧录与下载
- STC-ISP 嵌入式开发·烧录与下载