Sinovoip BananaPi BPi-R3 mini

Bananapi BPi-R3 mini board

  • Two 10M/100M/1G/2.5G capable RJ45 ports, directly connected to SOC.
  • PCIe gen-3 x2 Key-M M.2 socket for NVMe SSD (or additional WiFi in Key-A/E to Key-M adapter)
  • USB 3.0 only Key-B M.2 slot with SIM card slot (no actual PCIe signals on the M.2 socket!)

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

Installation instructions for eMMC

0. Set boot switch to boot from SPI-NAND (assuming stock rom or immortalwrt running there)

1. Write GPT partition table to eMMC Move openwrt-mediatek-filogic-bananapi_bpi-r3-mini-emmc-gpt.bin to the device /tmp using scp and write it to /dev/mmcblk0:

dd if=/tmp/openwrt-*-r3-mini-emmc-gpt.bin of=/dev/mmcblk0

2. Reboot (to reload partition table)

3. Write bootloader and OpenWrt images Move files to the device /tmp using scp:

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

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

4. Remove the device from power, set boot switch to eMMC and boot into OpenWrt. 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.

5. If you 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

0. 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

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 in instucion 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
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2024/12/16 23:26
  • by bulat-ch