Commit in openwrt says emmc first,then nand
Do I have to follow those steps because I have the usb
fonction now ?
i guess this guide is similar…have not tried flashing openwrt yet, so i cannot report from own experience
The files i have provided do not have the openwrt specific vars like emmc_write_production
The link in the posting i linked shows manual install in linux
dd if=/tmp/openwrt-*-bananapi_bpi-r3-mini-emmc-preloader.bin of=/dev/mmcblk0boot0
dd if=/tmp/openwrt-*-bananapi_bpi-r3-mini-emmc-bl31-uboot.fip of=/dev/mmcblk0p3
dd if=/tmp/openwrt-*-bananapi_bpi-r3-mini-initramfs-recovery.itb of=/dev/mmcblk0p4
dd if=/tmp/openwrt-*-bananapi_bpi-r3-mini-squashfs-sysupgrade.itb of=/dev/mmcblk0p5
As you are “only” in uboot you have to convert it to uboot commands
So printing the correct filenames
ls usb 0:1
load usb 0:1 $loadaddr filename
mmc write ...
the problem is that mmc write needs offsets and cannot write to partitions…
one option would be starting a linux-kernel with initrd and doing the linux-steps i linked, or chainloading a openwrt u-boot (load …$uaddr u-boot.bin;go $uaddr) to do the steps manually.
i have an initrd here:
you can set it in my uboot with “setenv initrd rootfs.cpio.zst” and running newboot
so when all files on usb basicly
- run useusb
- setenv initrd rootfs.cpio.zst
- setenv fit bpi-r3.itb # needs to be a kernel with config for r3mini (you can use a recent bpi-r3.itb from my kernel-repo)
- run newboot
I get an error.
what is the output of
printenv bootconf
?
It should show name of this config
If not please set it like this (maybe with # before)
Amd you have downloaded bpi-r3.itb from 6.6-main release? Previous images have no r3mini support.
But it is possible that bootconf is overwritten by setbootconf as r3 has a detection of devices…So could you do
printenv setbootconf
And if there is the detection (checkmmc,checkspi) just change it to fixed bootconf
setenv setbootconf 'setenv bootconf "#conf-emmc-mini"'
Ok it works.
Do I have to put root
as login and follow the link in the posting in a Linux terminal or UART console ?
Yes simply use username root…no pw in initrd
Ok and do I have to follow those steps on a Linux terminal ?
dd if=/tmp/openwrt-*-bananapi_bpi-r3-mini-emmc-preloader.bin of=/dev/mmcblk0boot0
dd if=/tmp/openwrt-*-bananapi_bpi-r3-mini-emmc-bl31-uboot.fip of=/dev/mmcblk0p3
dd if=/tmp/openwrt-*-bananapi_bpi-r3-mini-initramfs-recovery.itb of=/dev/mmcblk0p4
dd if=/tmp/openwrt-*-bananapi_bpi-r3-mini-squashfs-sysupgrade.itb of=/dev/mmcblk0p5
Yes,it is possible you have to disable boot0 readonly mode first
I cannot help much with openwrt specific stuff,but it looks it loads something from mmc first without error…only has error with the leds (missing config option in uboot?). You can try adding the uboot option to uboot (but i do not know how).
Hello, can not flash nand or emmc, there is no even nand device listed by lsblk. But i have a programmer. Has anyone dump for bpi r3 mini, please?
Hello, Frank-W
I have a Banana Pi R3 Mini (MT7986 SoC) that is now bricked. The problem started when I switched the boot source between eMMC and SNAND.
Now, when powering on, the serial log always stops at:
F0: 102B 0000
FA: 1040 0000
FA: 1040 0000 [0200]
F9: 103F 0000
F3: 0000 0000 [0200]
V0: 0000 0000 [0001]
00: 0000 0000
BP: 2400 0041 [0000]
G0: 1190 0000
EC: 0000 0000 [2000]
T0: 0000 016F [010F]
Jump to BL
NOTICE: BL2: v2.6(release):
NOTICE: BL2: Built : 20:16:38, May 7 2023
NOTICE: WDT: disabled
NOTICE: CPU: MT7986 (1998MHz)
NOTICE: EMI: Using DDR4 settings
NOTICE: EMI: Detected DRAM size: 2048MB
NOTICE: EMI: complex R/W mem test passed
ERROR: BL2: Failed to load image id 3 (-2)
- The board has no SD card slot, only SNAND + eMMC + USB.
- I tried to force USB Boot (BootROM) with mtkclient by holding the reset button while powering on, but there is no BootROM handshake.
- The device always tries to boot SNAND/eMMC instead of entering BootROM.
I have access to:
- Serial console (Waveshare FT232/CH343 USB-TTL).
- mtkclient installed on PC.
I need your help to:
- Force the board into BootROM mode (USB/UART download) — maybe via DIP switch, jumper, or shorting boot strap pins.
- Reflash U-Boot / BL2 into SNAND or eMMC so the board can boot again.
- Confirm if recovery via UART (X/Ymodem transfer) is possible if BootROM is not accessible.
Thank you.
The uartboot should work independ of bootswitch position.
You need a bl2 and fip for ramboot (you can find them in releases page of my uboot repo) and the mtk_uartboot binary (i have only tested in linux).
https://wiki.fw-web.de/doku.php?id=en:bpi-r3mini:start#fix_bricked_boot
Just start the mtk_uartboot application with parameters pointing to ram bl2+fip and then poweron your r3mini.
After mtk_uartboot exits start minicom or your preferered uart application on same device and you should have uboot console.
There you can reinstall your preferered os.
Hello Frank-W,
I have a Banana Pi R3 Mini (MT7986 SoC) that is currently not booting properly. The problem started after switching the boot source between eMMC and SPI NAND.
I have mtk_uartboot working to load BL2 + FIP into RAM. Using this, I can reach the U-Boot console via serial.
However, when attempting to boot the board, the serial log shows the following BL2 error:
F0: 102B 0000
FA: 1040 0000
FA: 1040 0000 [0200]
F9: 0000 0000
V0: 0000 0000 [0001]
00: 0000 0000
BP: 2400 0041 [0000]
G0: 1190 0000
EC: 0000 0000 [1000]
T0: 0000 021F [010F]
Jump to BL
NOTICE: BL2: v2.13.0(release): OpenWrt v2025.07.11~78a0dfd9-1 (mt7986-spim-nand-ubi-ddr4)
NOTICE: BL2: Built : 19:55:48, Aug 14 2025
NOTICE: WDT: Cold boot
NOTICE: WDT: disabled
NOTICE: CPU: MT7986 (2000MHz)
NOTICE: EMI: Using DDR4 settings
NOTICE: EMI: Detected DRAM size: 2048MB
NOTICE: complex R/W mem test passed
NOTICE: SPI_NAND parses attributes from parameter page.
NOTICE: SPI_NAND Detected ID 0xef
NOTICE: Page size 2048, Block size 131072, size 134217728
NOTICE: UBI: scanning [0x200000 - 0x8000000] ...
NOTICE: UBI: Bad VID magic in block 12 54000090
NOTICE: UBI: Bad VID magic in block 13 4c520294
NOTICE: UBI: Bad VID magic in block 14 e01f40f9
NOTICE: UBI: Bad VID magic in block 15 2540052a
NOTICE: UBI: Bad VID magic in block 16 ff0300b9
NOTICE: UBI: Bad VID magic in block 17 fd7bc3a8
NOTICE: UBI: Bad VID magic in block 18 00000000
NOTICE: UBI: Bad VID magic in block 19 65747279
NOTICE: UBI: Bad VID magic in block 20 00000000
NOTICE: UBI: Bad EC magic in block 21 ffffffff
NOTICE: UBI: Bad EC magic in block 22 ffffffff
NOTICE: UBI: Bad EC magic in block 23 ffffffff
NOTICE: UBI: Bad EC magic in block 24 ffffffff
NOTICE: UBI: Bad EC magic in block 25 ffffffff
NOTICE: UBI: Bad EC magic in block 26 ffffffff
NOTICE: UBI: Bad EC magic in block 27 ffffffff
NOTICE: UBI: scanning is finished
NOTICE: UBI: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
NOTICE: UBI: VID header offset: 2048 (aligned 2048), data offset: 4096
ERROR: UBI error: No volume named fip could be found
ERROR: io_dev_init failed for FIP image id 0 (-2)
ERROR: Image id 3 open failed with -2
ERROR: BL2: Failed to load image id 3 (-2)
I have attempted to write the OpenWrt SNAND image via U-Boot using RAM-loaded commands, but the board still fails to boot.
Could you please advise:
- How to properly install OpenWrt on SNAND using RAM-loaded U-Boot.
- Any necessary steps for creating/formatting UBI volumes on SPI NAND before flashing.
- If there is a recommended sequence of writing BL2/FIP and OpenWrt images to ensure the board boots correctly.
Thank you for your guidance.
Your ubi does not have a partition with fip label
UBI error: No volume named fip could be found
As i do not use openwrt i have no exact instructions to write.
Creating ubi from uboot is bit complex,so better bootup an kernel with initrd (for example from my kernel and buildroot repo)
Bpi-r3.itb with bootconf conf-emmc-mini (bootm $loadaddr#conf-emmc-mini)
This is how i did for my image on R4
https://wiki.fw-web.de/doku.php?id=en:bpi-r4:start#ubi
This is for openwrt
I found this here in forum: BPI-R3 Mini NAND Restore - #12 by nino_0
If it helps, there is a way to get into Linux directly with mtk_uartboot, skipping uboot all together…
Also, perhaps it is easier to get emmc booting again first.