Infix defines its own Kconfig options with unprefixed names (IMAGE_*, QEMU_*, TRUSTED_KEYS*) and an INFIX_ prefix. Unprefixed names risk clashing with Buildroot and with other br2-externals/spins that source our tree. Rename all 86 options to a common IX_ prefix, collapsing the existing INFIX_ ones, e.g. INFIX_IMAGE_ID becomes IX_IMAGE_ID. The os-release INFIX_DESC field is a runtime interface, not a Kconfig option, and is kept; the qemu Config.in generator's @ARCH@ symbol is updated to match. Closes #1305 Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
Banana Pi BPI-R3 / BPI-R3 Mini
Overview
The Banana Pi BPI-R3 and BPI-R3 Mini are high-performance networking boards with full Infix support for all enabled features including Ethernet, WiFi, and SFP interfaces.
Both boards share the same SoC and most peripherals. The key differences are:
| Feature | BPI-R3 | BPI-R3 Mini |
|---|---|---|
| Ethernet switch | Yes (4x LAN + WAN) | No (WAN/LAN ports only) |
| SD card slot | Yes | No |
Hardware Features
- MediaTek MT7986 ARM Cortex-A53 quad-core processor @ 2.0 GHz
- 2 GB DDR4 RAM
- 8 GB eMMC storage
- microSD card slot (BPI-R3 only)
- 5x Gigabit Ethernet ports with switch core (BPI-R3 only)
- 2x SFP cages for fiber connectivity (1G/2.5G) (BPI-R3 only)
- Dual-band WiFi (2.4 GHz + 5 GHz)
- USB 3.0 port
- Mini PCIe slot
Default Network Configuration
Infix comes preconfigured with:
- LAN ports (lan1-lan4): Bridged for internal networking (BPI-R3 only)
- WAN port: DHCP client enabled for internet connectivity
- SFP ports (sfp1, sfp2): Available for configuration (BPI-R3 only)
- WiFi interfaces (wifi0, wifi1): Available for configuration
Getting Started
BPI-R3: Quick Start with SD Card
The easiest way to get started with the BPI-R3 is using an SD card:
Note
SD card boot works but we have observed stability issues. For production use or long-term reliability, we recommend installing to eMMC (see below).
- Download the SD card image: infix-bpi-r3-sdcard.img
- Flash the image to an SD card: see this guide
- Set boot switches:
- Set DIP switches to 0000 (SD card boot mode)
- Switch positions are on the underside of the board near the SD slot
- Boot the board:
- Insert the SD card
- Connect power
- Connect to LAN port or console (115200 8N1)
- Default login:
admin/admin
BPI-R3 Mini: Getting Started
The BPI-R3 Mini does not have an SD card slot, so you must install directly to eMMC. See Installing to eMMC — BPI-R3 Mini below.
Boot Switch Reference
The BPI-R3 has a 4-position DIP switch that controls boot media:
| ABCD | Mode | Description |
|---|---|---|
| 0000 | SD card | Boot from microSD card |
| 0101 | SPI NAND | Boot from SPI NAND (advanced users) |
| 1001 | eMMC | Boot from internal eMMC (recommended) |
Note
Switch position is read from left to right: "0" = OFF, "1" = ON. When the DIP switch is in the "UP" position it is OFF(0).
Installing to eMMC
For production deployments or better performance, you can install Infix to the internal eMMC storage.
Important
While Infix boots on both SD card and eMMC on the BPI-R3, we have observed stability issues with SD cards on this platform. eMMC is recommended for reliable operation.
Prerequisites
- FTDI USB-to-serial cable (3.3V) for console access
- USB flash drive (FAT32 formatted)
- microSD card with Infix, for initial boot (BPI-R3 only)
- Downloaded files (see below)
Required Files
Download and place these files on a FAT32-formatted USB drive:
- Infix eMMC image:
- infix-bpi-r3-emmc.img (Complete system image)
- eMMC bootloader (extracted from):
- bpi-r3-emmc-boot-2025.01-latest.tar.gz
- Extract
bl2.imgfrom the tarball to your USB drive
- Intermediate NAND bootloader (BPI-R3 only, from Frank-W's U-Boot):
- bpi-r3_spim-nand_bl2.img (BL2 loader)
- bpi-r3_spim-nand_fip.bin (FIP image)
Warning
The following process involves multiple boot mode changes. Take your time and verify each step carefully.
BPI-R3
Step 1: Boot from SD card
- Set boot switches to 0000 (SD card mode)
- Insert SD card with Infix
- Power on and break into U-Boot (press Ctrl-C during boot)
Step 2: Flash intermediate NAND bootloader
This step installs a temporary bootloader to NAND that will help us flash the eMMC. From the U-Boot prompt:
usb start
mtd erase spi-nand0
fatload usb 0:1 0x50000000 bpi-r3_spim-nand_bl2.img
mtd write spi-nand0 0x50000000 0x0 0x100000
fatload usb 0:1 0x50000000 bpi-r3_spim-nand_fip.bin
mtd write spi-nand0 0x50000000 0x380000 0x200000
Step 3: Boot from NAND
- Power off the board
- Set boot switches to 1010 (NAND mode)
- Power on - you should boot into U-Boot again
Step 4: Write Infix image to eMMC
From the U-Boot prompt:
usb start
fatload usb 0:1 0x50000000 infix-bpi-r3-emmc.img
setexpr blocks ${filesize} / 0x200
mmc dev 0
mmc write 0x50000000 0x0 ${blocks}
This writes the complete Infix system (partitions, rootfs, etc.) to eMMC.
Step 5: Configure eMMC boot
Now configure the eMMC boot partition and write the bootloader:
mmc partconf 0 1 1 1
mmc erase 0x0 0x400
fatload usb 0:1 0x50000000 bl2.img
mmc write 0x50000000 0x0 0x400
mmc partconf 0 1 1 0
Step 6: Boot from eMMC
- Power off the board
- Set boot switches to 0110 (eMMC mode)
- Remove SD card (optional, but recommended to verify eMMC boot)
- Power on
Your BPI-R3 should now boot Infix from internal eMMC storage!
BPI-R3 Mini
The BPI-R3 Mini does not have an SD card slot, so you have to go through the factory-installed Linux (OpenWRT) to flash the Infix bootloader and OS to eMMC.
Step 1: Boot from NAND (factory default)
- Ensure boot switches are set to NAND mode (factory default)
- Place
infix-bpi-r3-emmc.imgandbl2.imgon a USB drive - Power on and boot into Linux
- Mount the USB drive to
/mnt
Step 2: Flash Infix to eMMC
From the Linux shell:
echo 0 > /proc/sys/kernel/printk
dd if=/mnt/infix-bpi-r3-emmc.img of=/dev/mmcblk0
echo 0 > /sys/block/mmcblk0boot0/force_ro
dd if=/mnt/bl2.img of=/dev/mmcblk0boot0
sync
Step 3: Boot from eMMC
- Power off the board
- Set boot switches to eMMC mode (see image above)
- Power on
Troubleshooting
Board won't boot
- Verify boot switch positions (check twice!)
- Ensure power supply provides adequate current (12V/2A recommended)
- Try booting from SD card with switches at 0000 (BPI-R3 only)
Can't break into U-Boot
- Ensure serial console is connected properly (115200 8N1, 3.3V)
- Press Ctrl-C immediately when you see boot messages
- Try power cycling and pressing Ctrl-C repeatedly
eMMC boot fails after installation
- Boot from NAND (1010) and verify eMMC image was written
- Check USB drive contents - ensure all files are present
- Re-run the eMMC boot configuration step
Reverting to SD card (BPI-R3 only)
Simply set boot switches back to 0000 and boot from SD card. The eMMC installation does not affect SD card functionality.
Additional Resources
Building Custom Images
See the main Infix documentation for building from source. To build both SD card and eMMC images locally:
# Build bootloaders for both SD and eMMC
make x-bpi-r3-sd-boot
make x-bpi-r3-emmc-boot
# Build main system
make aarch64
# Create SD card image
./utils/mkimage.sh -od bananapi-bpi-r3
# Create eMMC image
./utils/mkimage.sh -odt emmc bananapi-bpi-r3