# ESP Firmware Flasher

> 用瀏覽器透過 USB 燒錄 ESP32／ESP8266 韌體，底層是 esptool-js：自動辨識晶片、把 .bin 寫入任意位址、燒錄前先備份整顆 flash。不必安裝 Python。

- URL: https://bytescope.dev/zh-Hant/esp-flasher/
- Locale: zh-Hant · Also: [en](https://bytescope.dev/en/esp-flasher.md) · [ja](https://bytescope.dev/ja/esp-flasher.md)
- Runs: 透過 Web Serial 在本機和你的開發板對話 —— 韌體不會離開你的瀏覽器。
- Requires: Chrome, Edge or Opera on desktop (Web Serial API). Not Firefox, Safari or any mobile browser; the page still renders the documentation and a support matrix there.
- Updated: 2026-09-08

## What it does

這個 ESP 韌體燒錄工具用 Web Serial API 直接從瀏覽器和 ESP32 或 ESP8266 對話，所以什麼都不用裝 —— 不用 Python、不用 esptool、不用 Arduino IDE。它建構在 `esptool-js` 之上，也就是 Espressif 官方自己的燒錄函式庫（Apache-2.0），底層協定和命令列的 `esptool.py` 完全相同。接上開發板，工具就會自動辨識晶片系列（ESP32、S2、S3、C3、C6、H2 以及 ESP8266）、flash 容量，並替你協商出較快的鮑率。

### 燒錄位址與合併後的 binary

一份完整的 ESP 韌體通常是三個檔案，寫進 flash 的三個不同位移：bootloader、分割表與應用程式。工具會依偵測到的晶片預先填好標準位移 —— 原始 ESP32／S2 的 bootloader 在 `0x1000`（較新的 USB-Serial-JTAG 晶片則是 `0x0`）、分割表在 `0x8000`、應用程式在 `0x10000` —— 並在旁邊逐項說明，讓你不必猜。如果你下載到的是 ESP-Web-Tools 風格的單一合併 binary，切到合併模式、丟進那一個檔案就好：它會整份寫在 `0x0`，不用設定任何位址。

### 燒錄之前先備份

燒錄會覆蓋晶片上原本的內容。在寫入任何東西之前，先用讀回工具把目前的 flash 匯出成一份 `.bin` 留著 —— 如果新韌體不合用，你可以把那份備份原封不動寫回去。你也可以讀取晶片的 flash ID 與 MAC 位址，或執行整顆抹除（這是破壞性操作，必須連按兩次確認才會動作）。

### 誠實的限制

esptool-js 只燒錄已經存在的映像檔，它不編譯也不轉換。它沒辦法把 ELF 變成 `.bin`（那要用 ESP-IDF 工具鏈），也不包含 `espefuse` 或 `espsecure` —— 這裡刻意沒有燒 eFuse，也沒有 secure boot／flash 加密金鑰的處理。那些操作不可逆，屬於受控的桌面環境，不該放在網頁上。

### 變磚風險與救援

寫錯映像檔，或把正確的映像檔寫到錯誤的位址，都可能讓開發板無法開機。這幾乎總是救得回來：連線時按住 BOOT/IO0 按鈕（或把它拉低）強制進入 ROM 下載模式，再燒回一份確定可用的韌體或你的備份。只有在 eFuse 被破壞時，板子才算真正變磚 —— 而這個工具刻意做不到那件事。

## Limits

Does not compile firmware or flash boards without a USB serial connection; it flashes ESP8266/ESP32 binaries you already have.

全晶片抹除會把 flash 上的所有東西清光，包含校正資料和 NVS 資料。這個動作無法復原 —— 先做備份。

## FAQ

### 支援哪些 ESP 晶片？

工具直接倚賴 esptool-js 自己的晶片自動辨識，涵蓋 ESP32、ESP32-S2、ESP32-S3、ESP32-C2、ESP32-C3、ESP32-C6、ESP32-H2 以及 ESP8266。連線之後，晶片系列、flash 容量與 MAC 都是從晶片本身讀出來的，所以你不會選錯目標。尚未在實機驗證過的晶片會誠實列在支援說明裡，而不是宣稱測過。

### 哪些瀏覽器可以燒錄開發板？

任何支援 Web Serial 的 Chromium 瀏覽器：桌面版的 Chrome、Edge、Opera，以及 Android 版 Chrome 148 以上。Safari 與 Firefox 並未實作 Web Serial，也沒有公布任何計畫，所以它們根本無法開啟序列埠 —— 請改用 Chrome 或 Edge 開這個頁面。

### 每個檔案該用哪個燒錄位址？

標準的三檔建置是這樣：bootloader 在原始 ESP32 與 ESP32-S2 上放 0x1000，在有 USB-Serial-JTAG 的新晶片（S3、C3、C6、H2）上放 0x0；分割表放 0x8000；應用程式放 0x10000。工具會依偵測到的晶片預先填好，並逐項說明。真的不確定的話，就用單一合併 binary，那完全不需要位址。

### 什麼是合併後的 binary？

合併（或稱組合）binary 是單一個 .bin，裡面已經把 bootloader、分割表與應用程式依正確位移拼在一起。WLED、Tasmota 這類專案都會提供，方便一鍵安裝。在合併模式下你只要丟進那一個檔案，它就會整份寫在 0x0 —— 不必逐檔設定位址。

### 我會把板子燒成磚嗎？還救得回來嗎？

燒錯映像檔或寫到錯誤的位址，都可能讓板子開不起來，但幾乎總是救得回來：強制進入 ROM 下載模式（連線時按住 BOOT/IO0 拉低），再重新燒一份確定可用的韌體，或你先前做的備份。燒錄前先完整讀回一份備份，你就永遠留著一條回頭路。真正永久變磚必須破壞 eFuse，而這個工具做不到。

### 支援燒 eFuse 或 secure boot 嗎？

不支援 —— 而且是刻意如此。esptool-js 沒有內含 espefuse 或 espsecure，所以這裡沒有寫入 eFuse、啟用 secure boot 或處理 flash 加密金鑰的功能。那些操作不可逆，應該在受控的桌面工具鏈裡完成，而不是在瀏覽器裡。

### 可以備份晶片上現有的韌體嗎？

可以。讀回工具會把一段 flash（或整顆晶片）匯出成 .bin 讓你下載保存。在燒錄任何新東西之前，這是最該做的一件事 —— 萬一更新出問題，你可以把那份一模一樣的映像檔直接寫回去。

## Related tools

- [Serial Monitor & Plotter](https://bytescope.dev/zh-Hant/serial-monitor.md) — 燒完之後，開監看程式看你的開發板開機 →
- [Firmware Installer](https://bytescope.dev/zh-Hant/install.md) — 想要一鍵裝 WLED / Tasmota / ESPHome？用安裝器 →
