Rockchip · WebUSB · v5

Luckfox Lyra and Pico Flash Console

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.

MODE no device
flash: —
1 Connect & detect
2 Files & flash plan
3 Write
01 Connect the board

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.

Device connected but not found? → Windows driver fix

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:

  1. Board in Maskrom (hold BOOT, plug in).
  2. Zadig → Options ▸ List All Devices.
  3. Select the entry with USB ID 2207:xxxx (Rockchip / "USB download gadget").
  4. Set the driver to WinUSBReplace Driver.
  5. Re-plug, then click Detect device above.

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.

LOADER vs NETMASK — which mode is this for?

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.

02 Load OS image & check the plan

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.

Drop the OS image here or
whole-disk .img / .img.gz / .img.xz (Armbian · mPWRD-OS)   — optional: a loader .bin to override the board loader
TargetSource file Start (sector)Progress
Whole-disk write. The image is streamed to sector 0 as it downloads/decompresses, so a multi-GB image is never fully held in memory. .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.
03 Write to flash

Runs the loader into RAM, then writes each checked image to its sector and reboots. Keep the cable connected the whole time.

Idle
This page must be served over https or 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.
This webflasher wraps asadm/rkdeveloptool (WASM/WebUSB port of Rockchip's tool). Loader-mode commands and partition map derived from the rkdeveloptool protocol and the Luckfox Lyra SDK. Use at your own risk.