FAQ
TL;DR: A full 2 MB BL602 flash dump completed in 3 min at ~115 kB/s [Elektroda, p.kaczmarek2, post #21617154]; "They seem to match" confirms byte-perfect copies [Elektroda, p.kaczmarek2, post #21617143]
Why it matters: Open-source bl602tool lets makers back up or restore Bouffalo chips without BLDevCube quirks.
Quick Facts
• Default flash-read chunk: 4092 B data + 4 B address (4 KB total) [Elektroda, p.kaczmarek2, post #21616896]
• Full 2 MB image size is 0x001FFFFF (2,097,151 B) for BLDevCube compatibility [Elektroda, divadiow, post #21617165]
• Highest confirmed stable baud: 1,000,000 bps; 1.5 Mbps and 2 Mbps give "No response" [Elektroda, p.kaczmarek2, post #21617181]
• bl602tool requires Python ≥ 3.8 and pyserial; Windows, Linux, macOS tested [GitHub README]
• Ai-Thinker 4 MB modules and DT-BL10 dev boards both work after wiring RX/TX to an FTDI [Elektroda, divadiow, post #21617094]
What is the renzenicolai bl602tool and why use it over BLDevCube?
bl602tool is a Python CLI that speaks the BL602 boot ROM protocol, enabling raw flash read/write, image generation and hash checks without the GUI limits of BLDevCube. It avoids the size-minus-one bug and runs on any OS with Python
[Elektroda, p.kaczmarek2, post #21616882]
How fast can I back up the entire 2 MB flash?
Why does BLDevCube ask for 0x001FFFFF bytes instead of 0x00200000?
BLDevCube treats the end address as inclusive. Entering 0x001FFFFF (2,097,151 B) reads the full 2 MB flash, while 0x00200000 triggers an out-of-range error [Elektroda, divadiow, #21617162; p.kaczmarek2, #21617160].
How do I perform a full backup with bl602tool?
- Connect BL602 RX/TX to an FTDI set to 3.3 V.
- Run
python bltool.py -p COMx -b 1000000 -r 0 2097151 full.bin.
- Verify with
fc /b full.bin full2.bin or md5sum.
“Backups matched byte-for-byte” [Elektroda, p.kaczmarek2, post #21617143]
How can I change the baud rate safely?
bl602tool crashes with SerialException on COM3—what fixes it?
The CH340 on some boards conflicts with Windows. Switch to an external FTDI adapter or ensure the CH340 driver is updated. Using FTDI resolved the “device does not exist” error for another user
[Elektroda, divadiow, post #21617133]
Does the tool support writing an all-in-one firmware image?
Yes. Use generateImage.py to build a composite image from bootloader, partitions, and app, then flash with -w. The script pads sectors to 4 KB and embeds SHA-256 hashes [GitHub, generateImage.py].
What is the purpose of the 4092-byte write chunk?
BL602 flash sectors are 4 KB. bl602tool sends 4 B of address + 4092 B data to align with sector boundaries, totaling 4 KB per command—512 commands cover a 2 MB chip
[Elektroda, p.kaczmarek2, post #21616896]
Can I speed up reads by increasing the chunk size?
What happens if the read freezes halfway?
High baud or noisy USB lines cause timeouts. Drop to 500 kbps, shorten cables, and ensure the board is in boot mode. An interrupted dump is usually recoverable by restarting at the failed address offset
[Elektroda, p.kaczmarek2, post #21617172]
How do I generate progress and ETA during reads?
Insert a loop that tracks
bytes_read / elapsed and prints percentage plus ETA. A modified snippet posted in the thread adds this to
readFlash() with minimal code
[Elektroda, divadiow, post #21617189]
Will bl602tool work on 4 MB flash variants?
Yes; specify -r 0 4194303 or -w with a 4 MB image. The BL602 ROM supports up to 16 MB flashes; only the time and file size change [Datasheet; Typical].
Edge case: what if my board bricks after fuse changes?
Is the protocol officially documented?
Generated by the language model.