Flash a full OS image to several Luckfox boards straight from the browser over USB — no command
line, no SDK. Built on the WebUSB port of rkdeveloptool. Chrome / Edge only! Hard
reset this web browser window with Control + F5 if having issues.
Hold BOOT while plugging USB-C to enter LOADER mode. Then grant access to the device. If you're using a new Luckfox board, this should work out of the box.
WebUSB on Windows can only talk to a device bound to the WinUSB driver. Rockchip DriverAssistant installs the Rockusb vendor driver (the one RKDevTool uses), which blocks the browser — so RKDevTool sees the board but this page can't. They're mutually exclusive on the same device.
Switch the Maskrom device to WinUSB with Zadig:
2207:xxxx (Rockchip / "USB download gadget").Trade-off: after this, RKDevTool won't see the device until you revert (DriverAssistant ▸ Uninstall Driver, or Zadig back). And the Loader mode the board enters after the loader runs is a different PID — you may need to run Zadig once for that one too.
Linux: usually works once a udev rule grants access to VID 2207.
macOS: no driver needed. If the 2207: device isn't even listed in Chrome's
picker, it's a cable/Maskrom issue, not the driver.
This flasher works in LOADER mode only. Loader mode is the normal USB-flashing state: hold BOOT while plugging in, the board comes up as a Rockchip USB device, and this page can write the eMMC.
NETMASK (a.k.a. Maskrom) is the deeper recovery state the chip falls back to when the bootloader is missing or corrupt — typically after a bad flash. Bringing a board back from NETMASK is a manual recovery process and is not handled by this tool.
If your Lyra is stuck in NETMASK after a bad update, follow the manual write-up: NETMASK recovery.
Drop a full Armbian / mPWRD-OS disk image (.img,
.img.gz, or .img.xz). It's written to the whole eMMC from sector 0.
The loader defaults to the selected board's loader .bin beside this page — drop a
.bin only if you want to override it. GZ and XZ is experimental. Unzip to be cautious.
| Target | Source file | Start (sector) | Progress |
|---|
.gz uses the browser; .xz uses the bundled xzwasm.min.js
(if absent, run unxz -k file.img.xz first). Make sure the uncompressed image fits
the eMMC.Runs the loader into RAM, then writes each checked image to its sector and reboots. Keep the cable connected the whole time.
localhost (WebUSB requirement) and
needs the compiled core (rkDevelopTool_Mac.js + .wasm, or
rkdeveloptool.js/.wasm) sitting next to it. See BUILD.md
for how to build it.