I’m trying to install OpenWRT from a tf-card, but sadly it will not boot from anywhere else as from TFTP.
What am I doing wrong?
This is what I’ve done.
1st write the OpenWRT sdcard image to the tf-card
wget -O - -nv https://downloads.openwrt.org/releases/24.10.2/targets/mediatek/filogic/openwrt-24.10.2-mediatek-filogic-bananapi_bpi-r3-sdcard.img.gz | gunzip | sudo dd of=/dev/disk4 bs=4M status=progress conv=fsync
2025-08-01 18:32:00 URL:https://downloads.openwrt.org/releases/24.10.2/targets/mediatek/filogic/openwrt-24.10.2-mediatek-filogic-bananapi_bpi-r3-sdcard.img.gz [23182085/23182085] -> "-" [1]
0+1205 records in
18+1 records out
78905348 bytes transferred in 8.742992 secs (9024982 bytes/sec)
2nd boot the BPI-R3 from SDCARD (all switches up)
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 02B1 [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: Cold boot
NOTICE: WDT: disabled
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 - e2:cd:80:5e:b6:10
eth0: ethernet@15100000
Saving Environment to MMC... Writing to MMC(0)... OK
Saving Environment to MMC... Writing to MMC(0)... OK
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
3rd select 8. Install bootloader, recovery and production to NAND.
spi-nand: spi_nand spi_nand@1: Winbond SPI NAND was found.
spi-nand: spi_nand spi_nand@1: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64
jedec_spi_nor spi_nor@0: unrecognized JEDEC id bytes: 00, ef, aa
'spi-nand0' is now active device
* spi-nand0
- device: spi_nand@1
- parent: spi@1100a000
- driver: spi_nand
- type: NAND flash
- block size: 0x20000 bytes
- page size: 0x800 bytes
- OOB size: 64 bytes
- OOB available: 24 bytes
- 0x000000000000-0x000008000000 : "spi-nand0"
- 0x000000000000-0x000000200000 : "bl2"
- 0x000000200000-0x000008000000 : "ubi"
jedec_spi_nor spi_nor@0: unrecognized JEDEC id bytes: ff, ef, aa
Erasing 0x00000000 ... 0x07dfffff (1008 eraseblock(s))
jedec_spi_nor spi_nor@0: unrecognized JEDEC id bytes: 00, ef, aa
ubi0: default fastmap pool size: 50
ubi0: default fastmap WL pool size: 25
ubi0: attaching mtd2
ubi0: scanning is finished
ubi0: empty MTD device detected
ubi0: attached mtd2 (name "ubi", size 126 MiB)
ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi0: good PEBs: 1008, bad PEBs: 0, corrupted PEBs: 0
ubi0: user volume: 0, internal volumes: 1, max. volumes count: 128
ubi0: max/mean erase counter: 0/0, WL threshold: 4096, image sequence number: 0
ubi0: available PEBs: 982, total reserved PEBs: 26, PEBs reserved for bad PEB handling: 20
4th try to boot from NAND (switches: up down up down)
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 021E [010F]
Jump to BL
NOTICE: BL2: v2.12.0(release):OpenWrt v2025.02.12~e0907706-1 (mt7986-spim-nand-ubi-ddr4)
NOTICE: BL2: Built : 15:35:39, Jul 13 2025
NOTICE: WDT: Cold boot
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
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: 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)
When booting from SDCARD (all switches up) again and trying option 3. Boot production system from SD card., I get this:
spi-nand: spi_nand spi_nand@1: Winbond SPI NAND was found.
spi-nand: spi_nand spi_nand@1: 128 MiB, block size: 128 KiB, page size: 2048, OOB size: 64
jedec_spi_nor spi_nor@0: unrecognized JEDEC id bytes: 00, ef, aa
'spi-nand0' is now active device
* spi-nand0
- device: spi_nand@1
- parent: spi@1100a000
- driver: spi_nand
- type: NAND flash
- block size: 0x20000 bytes
- page size: 0x800 bytes
- OOB size: 64 bytes
- OOB available: 24 bytes
- 0x000000000000-0x000008000000 : "spi-nand0"
- 0x000000000000-0x000000200000 : "bl2"
- 0x000000200000-0x000008000000 : "ubi"
But 2. Boot system via TFTP. does actually work.
* spi-nand0
- device: spi_nand@1
- parent: spi@1100a000
- driver: spi_nand
- type: NAND flash
- block size: 0x20000 bytes
- page size: 0x800 bytes
- OOB size: 64 bytes
- OOB available: 24 bytes
- 0x000000000000-0x000008000000 : "spi-nand0"
- 0x000000000000-0x000000200000 : "bl2"
- 0x000000200000-0x000008000000 : "ubi"
Using ethernet@15100000 device
TFTP from server 192.168.1.254; our IP address is 192.168.1.1
Filename 'openwrt-mediatek-filogic-bananapi_bpi-r3-initramfs-recovery.itb'.
Load address: 0x46000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
###############################################################
1.2 MiB/s
done
Bytes transferred = 9502720 (910000 hex)
## Loading kernel from FIT Image at 46000000 ...
Using 'config-mt7986a-bananapi-bpi-r3' configuration
Trying 'kernel-1' kernel subimage
Description: ARM64 OpenWrt Linux-6.6.97
Type: Kernel Image
Compression: lzma compressed
Data Start: 0x460000e8
Data Size: 4428419 Bytes = 4.2 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x44000000
Entry Point: 0x44000000
Hash algo: crc32
Hash value: ec099821
Hash algo: sha1
Hash value: 69a9f0291cc28418622ec768353c3af338ff1421
Verifying Hash Integrity ... crc32+ sha1+ OK
## Loading ramdisk from FIT Image at 46000000 ...
Using 'config-mt7986a-bananapi-bpi-r3' configuration
Trying 'initrd-1' ramdisk subimage
Description: ARM64 OpenWrt bananapi_bpi-r3 initrd
Type: RAMDisk Image
Compression: uncompressed
Data Start: 0x464394a8
Data Size: 5015612 Bytes = 4.8 MiB
Architecture: AArch64
OS: Linux
Load Address: unavailable
Entry Point: unavailable
Hash algo: crc32
Hash value: d0387a70
Hash algo: sha1
Hash value: d2e530efa9ae18b214b47567328605121d3dfb6d
Verifying Hash Integrity ... crc32+ sha1+ OK
## Loading fdt from FIT Image at 46000000 ...
Using 'config-mt7986a-bananapi-bpi-r3' configuration
Trying 'fdt-1' fdt subimage
Description: ARM64 OpenWrt bananapi_bpi-r3 device tree blob
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x46901df0
Data Size: 32008 Bytes = 31.3 KiB
Architecture: AArch64
Load Address: 0x43f00000
Hash algo: crc32
Hash value: 57491256
Hash algo: sha1
Hash value: a18a73889d085599c5f2fde1df9b56ade5ed7ab1
Verifying Hash Integrity ... crc32+ sha1+ OK
Loading fdt from 0x46901df0 to 0x43f00000
## Loading fdt from FIT Image at 46000000 ...
Using 'mt7986a-bananapi-bpi-r3-sd' configuration
Trying 'fdt-mt7986a-bananapi-bpi-r3-sd' fdt subimage
Description: ARM64 OpenWrt bananapi_bpi-r3 device tree overlay mt7986a-bananapi-bpi-r3-sd
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x4690ad8c
Data Size: 895 Bytes = 895 Bytes
Architecture: AArch64
Hash algo: crc32
Hash value: 6e623988
Hash algo: sha1
Hash value: 26766c16b6823e45cf2095b575672509794f0157
Verifying Hash Integrity ... crc32+ sha1+ OK
## Loading fdt from FIT Image at 46000000 ...
Using 'mt7986a-bananapi-bpi-r3-nand' configuration
Trying 'fdt-mt7986a-bananapi-bpi-r3-nand' fdt subimage
Description: ARM64 OpenWrt bananapi_bpi-r3 device tree overlay mt7986a-bananapi-bpi-r3-nand
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x4690a1b4
Data Size: 1166 Bytes = 1.1 KiB
Architecture: AArch64
Hash algo: crc32
Hash value: 80cf140c
Hash algo: sha1
Hash value: cd9c9ecb32a6ebeb009f82eb718e49d29feff6a1
Verifying Hash Integrity ... crc32+ sha1+ OK
Booting using the fdt blob at 0x43f00000
Working FDT set to 43f00000
Uncompressing Kernel Image to 44000000
Loading Ramdisk to be31f000, end be7e783c ... OK
Loading Device Tree to 00000000be314000, end 00000000be31e17b ... OK
Working FDT set to be314000
Add 'ramoops@42ff0000' node failed: FDT_ERR_EXISTS
set /chosen/rootdisk to bootrom media: rootdisk-sd (phandle 0x00000059)
Starting kernel ...