Table of Contents

Sinovoip BananaPi BPi-R3 mini

FIXME This page is still incomplete, incomplete sections usually start with a “fix me”

Bananapi BPi-R3 mini board

Supported Versions

Hardware Highlights

Installation

Please see the user manual provided by SinoVoip to understand the hardware switches selecting the available storage devices, and which device to boot from.

The required files for installation on stock OEM can be found here: https://firmware-selector.openwrt.org/?target=mediatek%2Ffilogic&id=bananapi_bpi-r3-mini

Refer to the Photos section → 'NAND/eMMC BOOT Switch' to switch between SPI or NAND

Installation instructions for eMMC (Done via LAN port + SSH)

BEFORE YOU CONTINUE: Power off your device and set boot switch to boot from SPI-NAND (assuming stock rom or immortalwrt running there)

  1. After switching to SPI-NAND, power up your device
  2. Connect to your LAN port (closest to USB-C power connector) and SCP openwrt-*-r3-mini-emmc-gpt.bin into your device's /tmp directory
  3. SSH into your device as root
  4. Write the GPT partition table to eMMC /dev/mmcblk0 partition using the file we just sent via SCP:
    dd if=/tmp/openwrt-*-r3-mini-emmc-gpt.bin of=/dev/mmcblk0
  5. Reboot (to reload partition table)
  6. SCP the following files to /tmp directory:
    openwrt-*-bananapi_bpi-r3-mini-emmc-preloader.bin
    openwrt-*-bananapi_bpi-r3-mini-emmc-bl31-uboot.fip
    openwrt-*-bananapi_bpi-r3-mini-initramfs-recovery.itb
    openwrt-*-bananapi_bpi-r3-mini-squashfs-sysupgrade.itb
  7. Once again SSH into your device as root
  8. Write the bootloader and OpenWrt images, write them to the appropriate partitions:
    echo 0 > /sys/block/mmcblk0boot0/force_ro
    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
    sync
  9. Remove the device from power, set boot switch back to eMMC
  10. Power your device, let OpenWrt boot up, the device will come up with IP 192.168.1.1 and assume the Ethernet port closer to the USB-C power connector as LAN port, ssh into it and set your device.
  11. (OPTIONAL) If you'd like to have Ethernet support inside U-Boot (eg. to boot via TFTP) you also need to write the PHY firmware to /dev/mmcblk0boot1:
    echo 0 > /sys/block/mmcblk0boot1/force_ro
    dd if=/lib/firmware/airoha/EthMD32.dm.bin of=/dev/mmcblk0boot1
    dd if=/lib/firmware/airoha/EthMD32.DSP.bin bs=16384 seek=1 of=/dev/mmcblk0boot1

Installation instructions for NAND (Done via LAN port + SSH)

This method ISN'T RECOMMENDED, it's recommended to leave the SPI-NAND alone and use the eMMC for the other OS

BEFORE YOU CONTINUE: Set boot switch to boot from eMMC (assuming OpenWrt is installed there by instructions above. Using stock rom or immortalwrt does NOT work!)

1. Write things to NAND

Move files to the device /tmp using scp:

openwrt-*-bananapi_bpi-r3-mini-snand-preloader.bin
openwrt-*-bananapi_bpi-r3-mini-snand-bl31-uboot.fip
openwrt-*-bananapi_bpi-r3-mini-initramfs-recovery.itb
openwrt-*-bananapi_bpi-r3-mini-squashfs-sysupgrade.itb

2. Write them to the appropriate locations:

mtd write /tmp/openwrt-*-bananapi_bpi-r3-mini-snand-preloader.bin /dev/mtd0
ubidetach -m 1
ubiformat /dev/mtd1
ubiattach -m 1
volsize=$(wc -c < /tmp/openwrt-*-bananapi_bpi-r3-mini-snand-bl31-uboot.fip)
ubimkvol /dev/ubi0 -N fip -n 0 -s $volsize -t static
ubiupdatevol /dev/ubi0_0 /tmp/openwrt-*-bananapi_bpi-r3-mini-snand-bl31-uboot.fip
cd /lib/firmware/airoha
cat EthMD32.dm.bin EthMD32.DSP.bin > /tmp/en8811h-fw.bin
ubimkvol /dev/ubi0 -N en8811h-firmware -n 1 -s 147456 -t static
ubiupdatevol /dev/ubi0_1 /tmp/en8811h-fw.bin
ubimkvol /dev/ubi0 -n 2 -N ubootenv -s 126976
ubimkvol /dev/ubi0 -n 3 -N ubootenv2 -s 126976
volsize=$(wc -c < /tmp/openwrt-*-bananapi_bpi-r3-mini-initramfs-recovery.itb)
ubimkvol /dev/ubi0 -n 4 -N recovery -s $volsize
ubiupdatevol /dev/ubi0_4 /tmp/openwrt-*-bananapi_bpi-r3-mini-initramfs-recovery.itb
volsize=$(wc -c < /tmp/openwrt-*-bananapi_bpi-r3-mini-squashfs-sysupgrade.itb)
ubimkvol /dev/ubi0 -n 5 -N fit -s $volsize
ubiupdatevol /dev/ubi0_5 /tmp/openwrt-*-bananapi_bpi-r3-mini-squashfs-sysupgrade.itb

3. Remove the device from power, set boot switch to NAND, power up and boot into OpenWrt.


P.S.: in case write to MTD results in error, apply the following:

insmod mtd-rw.ko i_want_a_brick=1


P.P.S.: If after NAND flashing to 24.10.0-rc2 and trying flash using TFTP you got an error like this:

Volume en8811h-fw not found! 
[Airoha] read firmware from UBI failed. 
EN8811H load firmware fail.

Please change this in the instruction above:

ubimkvol /dev/ubi0 -N en8811h-firmware -n 1 -s 147456 -t static

to:

ubimkvol /dev/ubi0 -N en8811h-fw -n 1 -s 147456 -t static

In case both SPI-NAND and eMMC are not bootable

You will need to access the UART

Upgrading OpenWrt

generic.sysupgrade

Debricking / back to stock firmware

generic.debrick

Flash Layout

FIXME Incomplete Flash Layout

eMMC

Banana Pi BPi-R3 SPI-NAND Mini Flash Layout
Layer0 eMMC (KIOXIA THGBMJG6C1LBAIL 3.3V) 8GB
Layer1
mountpoint / /rom
filesystem OverlayFS SquashFS
Size in KiB ? KiB ? KiB ? KiB ? KiB ? KiB ? KiB ? KiB ? KiB ? KiB

SPI-NAND

Banana Pi BPi-R3 eMMC Mini Flash Layout
Layer0 NAND flash memory chip (Winbond 25N01GVZEIG 2.7-3.6V 8-bit SLC) 128 MiB
Layer1
mountpoint / /rom
filesystem OverlayFS SquashFS
Size in KiB ? KiB ? KiB ? KiB ? KiB ? KiB ? KiB ? KiB ? KiB ? KiB

Failsafe mode

failsafe_and_factory_reset

Basic configuration

Basic configuration After flashing, proceed with this.
Set up your Internet connection, configure wireless, configure USB port, etc.

Specific Configuration

Network interfaces

The default network configuration is:

Interface Name Description Default configuration
br-lan LAN & WiFi 192.168.1.1/24
eth0 LAN port None
eth1 WAN port DHCP
phy0 WiFi 2.4Ghz Disabled
phy1 WiFi 5Ghz Disabled

Switch Ports (for VLANs)

Port Switch port Notes
CPU ? No Switch
WAN N/A No Switch
LAN N/A No Switch

LEDs

FIXME Data for 4G LTE and SSD LEDs is missing

How to configure LEDs in general, see the LED section in the led_configuration.

The Banana Pi BPi-R3 Mini has 6 front LEDs:

LED name LED print Internal name Trigger Added information
Power PWR N/A N/A .
System SYS green:status ? Isn't set by default
Wifi 2G W2G blue:wlan-1 netdev .
Wifi 5G W5G blue:wlan-2 netdev .
4G LTE LTE ? ? .
SSD SSD ? ? .
? ? mt76-phy0 ? .
? ? mt76-phy1 ? .

The Banana Pi BPi-R3 Mini has 4 rear LEDs (These are LAN Port LEDs, shouldn't be touched in most cases:

LED name LED print Internal name Trigger Added information
LAN Green LAN mdio-bus:0e:green:lan netdev .
LAN Yellow LAN mdio-bus:0e:yellow:lan netdev
WAN Green WAN mdio-bus:0f:green:wan netdev .
WAN Yellow WAN mdio-bus:0f:yellow:wan netdev .

Buttons

hardware.button on howto use and configure the hardware button(s). Here, we merely name the buttons, so we can use them in the above Howto.

The Banana Pi BPi-R3 Mini has the following buttons:

Button name Action name Hex Value
button-reset reset 0198

Hardware

Info

Photos

Front:
banana_pi_bpi-r3_mini_case_9.jpg}

Rear(Low cost case, applies to both versions) :
banana_pi_bpi-wifi6_mini_and_r3_mini_case_3.jpg

Main PCB:
bpi-r3_mini_interface.jpg

Serial

FIXME Need photos for exact RX/TX/GND positions on the PCB

Use a 3.3V-TTL USB to Serial/UART converter.

Serial connection parameters
for Banana Pi BPi-R3 Mini
115200, 8N1

Bootlogs

OEM bootlog

FIXME Missing bootlog


OpenWrt bootlog

FIXME Missing bootlog

Tags

How to add tags