BPI-R4 Cannot Install the Latest OpenWrt/ImmortalWrt Firmware

Hello everyone, I just received my BPI-R4 today and encountered some issues while installing the firmware. Here are the detailed problems:

1. Using the official firmware (Getting Started BPI-R4 | BananaPi Docs):

  • Create an SD card image and boot from it, then create an image for the onboard NAND: Went smoothly and was successful.
  • Boot from the NAND image and create an eMMC image: Went smoothly and was successful.
  • Boot from the eMMC image and run it: Went smoothly and was successful.

2. Using a third-party firmware (version: ImmortalWrt Firmware Selector):

Installation to eMMC fails. Below are my detailed steps:

  • Boot from the official NAND image installed in Step 1.
  • Mount the USB drive with: mount -t vfat /dev/sda1 /mnt
  • Execute: echo 0 > /sys/block/mmcblk0boot0/force_ro
  • Execute: dd if=bl2_emmc-r4.img of=/dev/mmcblk0boot0 – I’ve tried multiple files for this step, including the EMMC-BL31-UBOOT.FIP provided by the third-party firmware, bl2_emmc_8g.img from the official firmware, and https://github.com/frank-w/u-boot/releases/download/CI-BUILD-2025-10-bpi-2025.10-2025-10-27_1028/bpi-r4_emmc_8GB_bl2.img. All attempts resulted in the same failure.
  • Execute: dd if=SDCARD.IMG.GZ of=/dev/mmcblk0 – I consistently used the SDCARD.IMG.GZ from the third-party ImmortalWrt firmware for this step.
  • Execute: mmc bootpart enable 1 1 /dev/mmcblk0

Then I switched to eMMC boot, and the following error occurred: (However, when using the same SDCARD.IMG.GZ to install to an SD card and boot from it, everything works normally.)

In:    serial@11000000
Out:   serial@11000000
Err:   serial@11000000
reset button found
Loading Environment from MMC... Card did not respond to voltage select! : -110
mmc_init: -95, time 17
*** Warning - No block device, using default environment

Net:   MediaTek MT7988 built-in switch

Warning: ethernet@15100000 (eth0) using random MAC address - f2:8c:21:17:41:a8
eth0: ethernet@15100000
Saving Environment to MMC... Card did not respond to voltage select! : -110
mmc_init: -95, time 17
No block device
Failed (1)
Saving Environment to MMC... Card did not respond to voltage select! : -110
mmc_init: -95, time 16
No block device
Failed (1)
off

        ( ( ( OpenWrt ) ) )  [SD card]       U-Boot 2024.10-ImmortalWrt-r33602-e717d133ed6d (Oct 27 2025 - 14:10:17 +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 NAND.
      8. Reboot.
      9. Reset all settings to factory defaults.
      0. Exit


  Press UP/DOWN to move, ENTER to select, ESC to quit
Card did not respond to voltage select! : -110
mmc_init: -95, time 17
Card did not respond to voltage select! : -110
mmc_init: -95, time 17
Card did not respond to voltage select! : -110
mmc_init: -95, time 17
Using ethernet@15100000 device
TFTP from server 192.168.1.254; our IP address is 192.168.1.1
Filename 'immortalwrt-mediatek-filogic-bananapi_bpi-r4-initramfs-recovery.itb'.
Load address: 0x50000000
Loading: *

Could you please help me with this issue? Thanks in advance for your assistance!

One additional note: Writing the third-party firmware image directly to NAND per the official documentation also fails. The error message is as follows:

        ( ( ( OpenWrt ) ) )  [SD card]       U-Boot 2024.10-ImmortalWrt-r33602-e717d133ed6d (Oct 27 2025
      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 NAND.
      8. Reboot.
      9. Reset all settings to factory defaults.
      0. Exit


  Press UP/DOWN to move, ENTER to select, ESC to quit
Card did not respond to voltage select! : -110
mmc_init: -95, time 17
Card did not respond to voltage select! : -110
mmc_init: -95, time 17
Card did not respond to voltage select! : -110
mmc_init: -95, time 17
Using ethernet@15100000 device
TFTP from server 192.168.1.254; our IP address is 192.168.1.1
Filename 'immortalwrt-mediatek-filogic-bananapi_bpi-r4-initramfs-recovery.itb'.
Load address: 0x50000000
Select (enter for default): 0

Input U-Boot's IP address: 192.168.1.1
Input TFTP server's IP address: 192.168.1.254
Input IP netmask: 255.255.255.0
Input file name: uboot.fip

Using ethernet@15100000 device
TFTP from server 192.168.1.254; our IP address is 192.168.1.1
Filename 'uboot.fip'.
Load address: 0x44000000
Loading: T T #################################################################
         #################################################################
         #################################################################
         #################################
         110.4 KiB/s
done
Bytes transferred = 1162393 (11bc99 hex)
Saving Environment to MMC... Writing to MMC(0)... OK

*** Loaded 1162393 (0x11bc99) bytes at 0x44000000 ***

*** FIP is not compatible with current u-boot ***
       current compatible strings: "mediatek,mt7988-rfb", "mediatek,mt7988-sd-rfb"
       new u-boot compatible strings: "bananapi,bpi-r4", "mediatek,mt7988"
*** FIP verification failed ***

Could this be related to something specific? To help the community better analyze the connection, could you clarify what “this” refers to—such as a known compatibility issue, a specific hardware detail, a previous operation, or a bug you’ve come across?

I guess the fip is not really emmc compatible…the voltage selection error sounds like the sdmmc dts is used in uboot.

could you tell me how to fix that? thank you

As i do not know details of both images i cannot help here. My fip will not be compatible with your openwrt system. Maybe you could use the vanilla openwrt 24.10?

Okay, thank you. This has taken up too much of my time, so I plan to temporarily use the SD card firmware variant first and will try again with future new versions.