With the latest stable build for BPI-R3 from https://downloads.openwrt.org/releases/24.10.2/targets/mediatek/filogic/, I cannot boot into production or recovery from the SD card. I cannot flash NAND or NOR from the U-Boot menu.
I used the following process to create the SD card:
> wipefs -a /dev/mmcblk0
/dev/mmcblk0: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
/dev/mmcblk0: 8 bytes were erased at offset 0xedc9ffe00 (gpt): 45 46 49 20 50 41 52 54
/dev/mmcblk0: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa
/dev/mmcblk0: calling ioctl to re-read partition table: Success
> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 59.4G 0 disk
nvme0n1 259:0 0 953.9G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot/efi
├─nvme0n1p2 259:2 0 2G 0 part /boot
└─nvme0n1p3 259:3 0 950.8G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 100G 0 lvm /
> gzip -cd openwrt-24.10.2-mediatek-filogic-bananapi_bpi-r3-sdcard.img.gz | dd of=/dev/mmcblk0
154112+1 records in
154112+1 records out
78905348 bytes (79 MB, 75 MiB) copied, 7.89326 s, 10.0 MB/s
> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 59.4G 0 disk
├─mmcblk0p1 179:1 0 4M 0 part
├─mmcblk0p2 179:2 0 512K 0 part
├─mmcblk0p3 179:3 0 2M 0 part
├─mmcblk0p4 179:4 0 4M 0 part
├─mmcblk0p5 179:5 0 32M 0 part
├─mmcblk0p6 179:6 0 20M 0 part
└─mmcblk0p7 179:7 0 448M 0 part
nvme0n1 259:0 0 953.9G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot/efi
├─nvme0n1p2 259:2 0 2G 0 part /boot
└─nvme0n1p3 259:3 0 950.8G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 100G 0 lvm /
I put all DIP switches up with the plan to flash NAND so that I could flash eMMC. This is the log from booting into the U-Boot menu:
F0: 102B 0000
FA: 1040 0000
FA: 1040 0000 [0200]
F9: 103F 0000
F3: 1001 0000 [0200]
F3: 1001 0000
F6: 300C 0028
F5: 0000 0000
V0: 0000 0000 [0001]
00: 0000 0000
BP: 2400 0041 [0000]
G0: 1190 0000
EC: 0000 0000 [3000]
T0: 0000 01B6 [010F]
Jump to BL
NOTICE: BL2: v2.10.0 (release):OpenWrt v2024.01.17~bacca82a-3 (mt7986-sdmmc-ddr4)
NOTICE: BL2: Built : 20:40:36, Jun 23 2025
NOTICE: WDT: [40000000] Software reset (reboot)
NOTICE: CPU: MT7986 (2000MHz)
NOTICE: EMI: Using DDR4 settings
NOTICE: EMI: Detected DRAM size: 2048MB
NOTICE: EMI: complex R/W mem test passed
NOTICE: BL2: Booting BL31
NOTICE: BL31: v2.10.0 (release):OpenWrt v2024.01.17~bacca82a-3 (mt7986-sdmmc-ddr4)
NOTICE: BL31: Built : 20:40:36, Jun 23 2025
U-Boot 2024.10-OpenWrt-r28739-d9340319c6 (Jun 23 2025 - 20:40:36 +0000)
CPU: MediaTek MT7986
Model: BananaPi BPi-R3
DRAM: 2 GiB
Core: 54 devices, 24 uclasses, devicetree: embed
jedec_spi_nor spi_nor@0: unrecognized JEDEC id bytes: ff, ef, aa
MMC: mmc@11230000: 0
Loading Environment from MMC... *** Warning - bad CRC, using default environment
Reading from MMC(0)... In: serial@11002000
Out: serial@11002000
Err: serial@11002000
Loading Environment from MMC... *** Warning - bad CRC, using default environment
Reading from MMC(0)... Net:
Warning: ethernet@15100000 (eth0) using random MAC address - c2:d5:07:60:e6:dc
eth0: ethernet@15100000
Saving Environment to MMC... Writing to MMC(0)... failed
Failed (1)
Saving Environment to MMC... Writing to MMC(0)... failed
Failed (1)
Button 'reset' not found (err=-16)
( ( ( OpenWrt ) ) ) [SD card] U-Boot 2024.10-OpenWrt-r28739-d9340319c6 (Jun 23 2025 - 20:40:36 +0000)
1. Run default boot command.
2. Boot system via TFTP.
3. Boot production system from SD card.
4. Boot recovery system from SD card.
5. Load production system via TFTP then write to SD card.
6. Load recovery system via TFTP then write to SD card.
7. Install bootloader, recovery and production to NOR.
8. Install bootloader, recovery and production to NAND.
9. Reboot.
a. Reset all settings to factory defaults.
0. Exit
Press UP/DOWN to move, ENTER to select, ESC to quit
There are errors reading the environment in from the SD card due to invalid CRCs in the GPT table.
By pulling the SD card and looking at it from a separate Ubuntu machine, I was able to verify the reported problems with the GPT table.
> parted -s /dev/mmcblk0 print
Error: The backup GPT table is corrupt, but the primary appears OK, so that will be used.
Warning: Not all of the space available to /dev/mmcblk0 appears to be used, you can fix the GPT to use all of the space (an extra 123621343 blocks) or continue with the current setting?
Model: SD SD64G (sd/mmc)
Disk /dev/mmcblk0: 63.8GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 4194kB 4177kB bl2 hidden, legacy_boot
2 4194kB 4719kB 524kB ubootenv hidden
3 4719kB 6816kB 2097kB factory hidden
4 6816kB 11.0MB 4194kB fip boot, hidden, esp
5 12.6MB 46.1MB 33.6MB recovery boot, hidden, esp
6 46.1MB 67.1MB 21.0MB install boot, hidden, esp
7 67.1MB 537MB 470MB production
> sgdisk -v /dev/mmcblk0
Caution: invalid backup GPT header, but valid main header; regenerating
backup header from main header.
Warning! One or more CRCs don't match. You should repair the disk!
Main header: OK
Backup header: ERROR
Main partition table: OK
Backup partition table: OK
Invalid partition data!
Verification may miss some problems or report too many!
Problem: The secondary header's self-pointer indicates that it doesn't reside
at the end of the disk. If you've added a disk to a RAID array, use the 'e'
option on the experts' menu to adjust the secondary header's and partition
table's locations.
Warning: There is a gap between the secondary partition table (ending at sector
1048607) and the secondary metadata (sector 1048608).
This is helpful in some exotic configurations, but is generally ill-advised.
Using 'k' on the experts' menu can adjust this gap.
Problem: MBR partitions 1 and 2 overlap!
Identified 2 problems!
I’m not a disk or filesystem expert. On my first attempt to fix the GPT table, I corrupted the disk to where the BL2=>BL31=>U-Boot boot process no longer worked.
I’m planning to try again, but I would appreciate any help.