Enter download mode on the BW16 / RTL8720DN
Short answer: the BW16 enters download mode by holding BURN, tapping RST, then releasing BURN — on the official dev board — or, at module level, by pulling LOG_TX (PA7) low across an EN reset and then releasing it. This is a Realtek mechanism and has nothing to do with an ESP32's GPIO0 strap. Get this wrong and you get Flashloader download fail or a silent no-response.
In our own flasher telemetry this error accounts for about 13.1% of failed flash attempts (n = 142). First-party data, as of 2026-07-25.
The BW16 is not an ESP32 — the sequence is different
On an ESP32 you hold GPIO0 (BOOT) low while EN resets, and the chip's ROM enters the download bootloader. The BW16's RTL8720DN has its own ROM protocol: the pin that must be held during reset is the LOG_TX (PA7) line, not a dedicated boot strap, and the flasher then has a short window to grab the ROM before the application boots. Do not carry over ESP32 pin names, offsets, or timing — see Why the BW16 isn't an ESP32.
Official dev board — the button method
The official BW16 (Type-C) dev board exposes physical BURN and RST buttons, so you don't touch the pins directly:
- Connect the board over USB.
- Hold BURN.
- Press and release RST while still holding BURN.
- Release BURN.
The board is now in download mode. Connect to it at 115200 baud — the rate Realtek's Image Tool and this site's flasher both use. Realtek's Arduino SDK also offers Tools → Auto Upload Mode → Enable, which lets a board reset itself into download mode so you don't press anything — but this only works on boards that have the auto-upload circuit built in (the official Type-C dev board does); other boards fall back to a manual sequence. It's the same idea the browser flasher on this site uses.
Bare module — the LOG_TX method
On a bare RTL8720DN module with no buttons, Realtek documents driving the pins directly. PA7 is the LOG UART's LOG_TX line (the RXD/TXD pair the module exposes for serial), and 115200 baud is the rate used to talk to it.
- Connect
LOG_TX(PA7) to GND. - Pull
ENlow (to GND), then high (to 3V3) — this resets the module. - Disconnect
LOG_TX(PA7) from GND.
The module is now in download mode, ready to receive the flashloader.
Some third-party dev boards need a UART bridge
Not the official board, but a warning worth stating for the many BW16 clones: several third-party dev boards isolate the upload UART from the log UART. On those you must bridge LOG_UART_TX↔LP_UART_TX and LOG_UART_RX↔LP_UART_RX during upload, or the tool talks to the wrong UART and nothing responds. This is a per-board wiring detail — check your board's own documentation; the official Type-C dev board does not need it.
Browser flashing on this site
The site's flasher runs the download-mode sequence automatically over DTR/RTS the moment you click Connect, so on a working board you press nothing. If it can't enter download mode it says so explicitly rather than writing a partial image. When that happens:
- Replug the USB cable and click Connect again — a clean reset often fixes it.
- On a board with buttons, use the BURN + RST sequence above, then click Connect.
- Confirm the CH340 driver if no port appears at all — USB serial drivers.
Confirm it worked
- The Realtek ROM answers the flasher's probe (this site logs "Download mode active" when the ROM is command-ready).
- Do not test a BW16 with esptool to confirm download mode — esptool speaks the ESP protocol and will always fail here, which tells you nothing about the BW16.
If the board reaches download mode but the write still fails, continue with Flashloader download fail.
Sources
- AmebaDocs — Getting Started with BW16 (button method: hold Burn, press Burn+RST, release Burn; Image Tool at 115200; onboard USB pin routing).
- Ameba Arduino SDK docs — Getting Started with BW16 Type-C (the exact BURN/RST press-release order; Auto Upload Mode from SDK V3.1.3; WCH driver link for the USB bridge).
- Realtek Ameba IoT Developer Forum — BW16 Troubleshooting Guide (module-level
LOG_TX (PA7)→ GND,ENreset, then release; Image Tool at 115200 baud). - BW16-RTL8720DN pinout reference (the LOG UART is on
PA7(TXD) andPA8(RXD)). - tesa-klebeband/RTL8720dn-Deauther ("Most RTL8720dn devboards have the upload and log serial ports isolated" — bridge
LOG_UART↔LP_UARTTX and RX during upload).
Checked 2026-07-25.