Flashloader download fail (BW16 / RTL8720DN)
Short answer: the Realtek ROM never accepted the RAM flashloader, so nothing could be written. On the BW16 this is almost always too high an upload baud rate or the board not being in download mode — not a dead chip. In the Arduino IDE the default upload speed is 1500000 baud, which many USB-serial bridges and level shifters cannot sustain; drop it and re-enter download mode. Browser flashing on this site sidesteps the baud problem entirely — it runs the Realtek AmebaD protocol locked at 115200 baud.
The full message from the Realtek AmebaD Image Tool / Arduino uploader is:
Flashloader download failWhat it means
Flashing a BW16 is a two-step handshake, not a single write. First the tool uploads a small flashloader into the chip's RAM over the ROM bootloader's serial protocol; only then can that resident flashloader erase and program the flash. Flashloader download fail means step one failed — the ROM never confirmed the RAM upload, so the tool stopped before touching the flash. Your image was never written, and the board is not bricked by this error alone.
Two things break that first step on the BW16:
- The upload baud rate is higher than the serial path can carry. The Realtek Arduino core defaults to 1.5 Mbaud. An inline RS-232 level shifter (e.g. MAX3232, which tops out around 250 kbaud) or a classic CP2102 (reliable only to ~921.6 kbaud) can corrupt bytes at that speed, so the RAM upload never verifies. The board's own CH340C bridge is rated higher, but cable and wiring quality still matter at 1.5 Mbaud.
- The board is not actually in download mode, so the ROM bootloader isn't listening for the flashloader at all. See Enter download mode → BW16.
Fixes, in order
- Put the board in download mode first. On the official BW16 dev board: hold BURN, press and release RST, then release BURN. Full per-board sequence and the module-level
LOG_TXmethod: BW16 download mode. - Lower the upload baud rate. In the Arduino IDE this lives in the Realtek core's
platform.txt— a community fix on Realtek's own forum is to replace the default1500000with230400inpackages/realtek/hardware/AmebaD/<version>/platform.txt. A Realtek staff reply on the same thread notes the 1.5 Mbaud Arduino default and, when it fails, recommends uploading the Arduino-compiled image with the Image Tool instead (whose baud rate you set yourself; Realtek's own docs use 115200). - Use a solid 3.3 V USB-serial path. Connect the bridge directly to the board — no MAX3232 or other RS-232 level shifter in line, which caps the achievable speed. If you added an external adapter, a genuine 3.3 V USB-UART converter is what Realtek's staff recommend.
- Confirm the USB-serial driver. The official BW16 dev board uses a CH340C bridge (a WCH part). If no COM port appears, install WCH's CH340/CH341 driver — do not install a CP2102 driver for a CH340 board.
- Erase a stubborn factory image, then re-flash. Some BW16 units ship with a B&T factory image that Arduino uploads appear to "succeed" against but that keeps booting. Realtek's Image Tool erases the full flash from
0x08000000, size 2 MB (2048 KB); erase, then flash your image. (These are exactly the addresses this site's browser flasher uses.)
Why the browser flasher on this site doesn't hit this
This site does not drive the BW16 through the Arduino toolchain. It talks the Realtek AmebaD ROM protocol directly from the browser and locks the port at 115200 baud — it does not attempt the ROM's baud-change command at all. That rules out the baud-rate cause of Flashloader download fail — an upload speed the serial path can't sustain — because there's no fast upload speed to fail at. It doesn't rule out a download-mode, cable, or driver problem: if the browser flasher can't enter the ROM, follow BW16 download mode and the USB serial driver guide.
This is not an ESP32 — don't apply esptool advice
The RTL8720DN is a Realtek part with its own ROM bootloader; it is not flashed by esptool, and ESP32 boot-mode or offset advice does not transfer. If you reached this page while trying esptool against a BW16, that's the mistake — see Why the BW16 isn't an ESP32.
Sources
- Realtek Ameba IoT Developer Forum — "BW16 - error: Flashloader download fail" (the exact error string; Realtek staff note the 1.5 Mbaud upload default and recommend a lower, configurable Image Tool speed; the
platform.txt1500000→230400community fix; MAX3232 level-shifter speed limit). - Realtek Ameba IoT Developer Forum — "[Resources] BW16 Troubleshooting Guide" (three recovery methods; Image Tool flash erase from
0x0800 0000, size 2 MB / 2048 KB; the B&T factory-image case). - AmebaDocs — Getting Started with BW16 (Image Tool at 115200 baud; download mode via the BURN / RST buttons).
- This site's
webserial-amebadflasher locks the port at 115200 baud and writes the 2 MB image at0x08000000— matching the Realtek Image Tool addresses above.
Checked 2026-07-25.