MaskRom recovery
The hardware first-aid kit. When a board won't boot, won't enter Loader mode, and a normal USB flash fails or can't even see the device — MaskRom is what brings it back. It works at the raw chip level, before any bootloader loads, so it can reach a board that nothing else can.
If your board still enters Loader mode and normal flashing works, you don't need this page — flash over USB instead. Reach for MaskRom when the loader is missing or damaged.
When you need it
- The board does nothing on power-up — no boot, no display, no ADB.
- RKDevTool / rkdeveloptool never shows a Loader device.
- A normal flash fails at "Download IDB" or disconnects immediately.
- A firmware write was interrupted and left the bootloader corrupt.
Any of these means the bootloader can't be trusted. MaskRom bypasses it.
How MaskRom works
Every Rockchip SoC has MaskRom burned into the silicon. When the chip can't load a valid bootloader from any medium (eMMC, SD), it can be forced to wait for commands over the USB download port using the RockUSB protocol. RKDevTool / rkdeveloptool then rewrites the firmware directly — including the bootloader itself. That's why it recovers a "bricked" board: the brick is a bad bootloader, and MaskRom writes underneath it.
What you need
- The correct firmware package for your exact KTM board (see the caution in
Flashing overview) — including the matching loader
.bin. - A USB data cable on the board's download port.
- RKDevTool (Windows) or rkdeveloptool (Linux/macOS), driver installed.
Entering MaskRom mode
The exact control varies by board — a dedicated MaskRom button, a recovery button, or two test pads to short. Check your board's documentation for which it is. The general procedure:
-
Power off the board completely. Remove any bootable microSD.
-
Hold the MaskRom control (button, or short the MaskRom test pads).
-
While holding, connect the USB download cable (and apply power if the board isn't already powered).
-
Release once the tool detects the device:
Found One MASKROM Device (RKDevTool)rkdeveloptool ld# DevNo=1 ... Mode=Maskrom (rkdeveloptool)
If it doesn't appear, release, power off, and repeat — the timing of when you connect the cable versus release the button is the fiddly part.
Flashing from MaskRom
Windows (RKDevTool)
- Upgrade Firmware tab. RKDevTool shows the MaskROM device.
- Select your
update.img(unified image). - Click Upgrade. The tool sends the loader, initializes memory, then writes the full image including the bootloader.
- The board reboots into recovered firmware.
For partition-based recovery, use the Download Image tab with the loader and
per-partition images instead of the unified update.img.
Linux / macOS (rkdeveloptool)
# confirm MaskRom
rkdeveloptool ld # Mode=Maskrom
# send the loader (must match your SoC + DDR)
rkdeveloptool db rk35xx_loader_vX.XX.bin
# write the full unified image
rkdeveloptool wl 0 update.img
# reset into the recovered firmware
rkdeveloptool rd
If MaskRom recovery fails
| Symptom | Cause | Fix |
|---|---|---|
| No MaskRom device ever appears | Button/pad timing, cable, or wrong port | Retry timing; data cable on the download port |
| "Download boot failed" | Wrong loader for the SoC/DDR | Use the exact loader from your board's package |
| Disconnects while sending loader | Unstable power or DDR init failure | Stable supply; correct loader; try again |
| Flashes OK but still won't boot | Wrong image for the board | Use the firmware for your exact model |
MaskRom does not bypass everything. It does not override secure-boot signatures, encryption, or rollback protection where those are provisioned. If a board is secured, recovery has to use properly signed images — talk to your account manager.
MaskRom writes at the lowest level, so a wrong loader or image is also the most
likely thing to leave the board unbootable. Use only the loader and update.img
from your specific KTM board's firmware package. When in doubt, get the package
from your account manager before writing anything.
Related
- Flash over USB — the normal path, try this first
- Flashing overview — Loader vs MaskRom, image types, the loader
.bin - Board pages — download port and any MaskRom button/pads