Confusing Boot Switch Behavior & SD Card Issues

Hi everyone,

I received my BPI-R4 Pro device today. This is my very first development board and my first experience with OpenWrt, so I am trying to understand if what I experienced is normal behavior or a hardware defect.

The Boot Issue:

  1. I flashed the image to the SD card.
  2. According to the board labels and the Wiki instructions, I set both boot switches to the “Down” position (0-0 for SD Boot).
  3. I tried to boot from the SD card for about an hour, but it refused to boot. No activity.
  4. Finally, I changed the switches to the position shown in the attached photo (Please see attached photo), and it surprisingly booted up.

The eMMC Confusion: After managing to boot, I flashed the eMMC images via USB.

  • I left the switches in the same “working” position (the one in the photo), and it booted from eMMC.
  • Then, I changed the switches to the “correct” eMMC position according to the Wiki, and it also booted fine.

My Question: This behavior feels inconsistent and confusing. Why did the official Wiki instructions for SD boot fail for me, while a random switch combination worked? Is there a hardware issue with my board’s boot selection, or is the documentation/labeling misleading?

Additional Issue (NVMe): Besides the boot confusion, I am also unable to get my NVMe SSD to show up in the system. I have opened a separate detailed topic for that issue here: NVMe SSD detected in lspci but missing in lsblk - Missing kmod-nvme

Any guidance for a beginner would be appreciated. I want to make sure my hardware is not defective.

Thanks.

Hello friend, I think you might have turned the wrong switch. SD card boot is 11.

You can start learning R4Pro through the link.

I guess boot switches are right (down=1,not 0), more interesting would be the output on debug-uart.

I noticed an issue with my cards when running on full speed (52mhz). This will cause read errors in uboot+linux.

So if this is the problem, you should get into uboot.

As same cards work well in bpi-r4 i reduced the speed a bit in dts to have maximum compatibility.

But the behavior is really confusing. Here is exactly what happened:

  1. SD Boot: I tried the official “Both Down” position first. It did not boot at all. Then I set them to the position in my first photo (which looks like NAND according to the Wiki), and it worked.

bpi-r4pro-boot_for_sd.png

  1. eMMC Boot (The funny part): After flashing to eMMC, I didn’t change the switches initially. They were still in the “Photo 1” position. And guess what? It booted from eMMC just fine!

bpi-r4pro-boot_for_nand.png

  1. Then I changed them to the “Real” eMMC position, and it booted fine again.

bpi-r4pro-boot_for_emmc.png

So, it seems eMMC boots in almost any position (even the wrong ones), but the SD card was very picky and didn’t work with the official instructions. That’s why I thought the switches or the labels were wrong.

Do you see the EC value from bootrom correctly? How far does your board booting,any errors there? Please post output from debug-uart when it get stuck.

Hi Frank,

I managed to get the UART output via the onboard USB-C debug port. Here is the bootrom log you asked for:

Plaintext


F3: 1001 0000 [0200]
F3: 1001 0000
F6: 380E 5012
F5: 0000 0000
V0: 0000 0000 [0001]
00: 0000 0000
BP: 0600 0041 [0000]
G0: 1190 0000
EC: 0000 0000 [3000]
MK: 0000 0000 [0000]
T0: 0000 013F [0101]
Jump to BL

NOTICE:  BL2: v2.10.0   (release):OpenWrt v2024.01.17~bacca82a-3 (mt7988-sdmmc-comb)
NOTICE:  BL2: Built : 03:09:13, Jun 17 2025
NOTICE:  WDT: Cold boot
NOTICE:  WDT: disabled
NOTICE:  CPU: MT7988
NOTICE:  EMI: DDR4 4BG mode
NOTICE:  EMI: Using DDR unknown settings
NOTICE:  EMI: Detected DRAM size: 8192 MB
NOTICE:  EMI: complex R/W mem test passed

Observation: It says mt7988-sdmmc-comb, which suggests it is trying to boot from the SD card. However, I want to emphasize that I have tried 2 different SD cards with the official vendor image, and I was never able to boot successfully. It always fails or gets stuck, regardless of the card I use.

After the lines above, it fails to find a kernel and falls into a loop trying to boot via TFTP: Wrong Image Type for bootm command ERROR -91: can’t get kernel image!

Does the EC: … [3000] value look correct?

Based on images above the bootstrap pins (switches for bootdevice selection) are set correctly. Your boot goes further as i expected. You hang in uboot,not later output will be interesting…i guess you have read errors because uboot use higher speed for sdcard access. This is an issue i’ve seen in my tests too so i reduced speed from 52 to 48 mHz.

Uboot (i guess bpi image uses different dts - maybe the sd-rfb one):

Linux

Bpi-code: Uboot: https://github.com/BPI-SINOVOIP/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/blob/main/package/boot/uboot-mediatek/patches/999-add-bananapi_bpi-r4-pro-8x.patch#L224

Linux BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/target/linux/mediatek/files-6.6/arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4-sd.dtso at main · BPI-SINOVOIP/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel · GitHub

1 Like

Yes, we have also encountered similar problems. However, the startup of some high-performance SD cards is not a problem, but for some cards, it will be.

I use 32GB sandisk cards which are working in bpi-r4 without issues (tested same card on both devices with same content).