diff --git a/board/aarch64/bananapi-bpi-r3/README.md b/board/aarch64/bananapi-bpi-r3/README.md index d998ba2a..fff65889 100644 --- a/board/aarch64/bananapi-bpi-r3/README.md +++ b/board/aarch64/bananapi-bpi-r3/README.md @@ -1,59 +1,122 @@ -# Banana Pi R3 +# Banana Pi BPI-R3 -## Support level -Full support for all Infix enabled features including switched ethernet ports, WiFi, -and SFP interfaces. The board includes comprehensive hardware support for -MediaTek MT7986 SoC features. +The board -### Hardware features -The Banana Pi R3 is a high-performance networking board featuring: -- MediaTek MT7986 ARM Cortex-A53 quad-core processor -- 4x Gigabit LAN ports (lan1-lan4) -- 1x Gigabit WAN port -- 2x SFP ports (sfp1, sfp2) for fiber connectivity -- Dual WiFi interfaces (wifi0 for 2.4GHz, wifi1 for 5GHz) -- USB support -- SD card boot support +## Overview -### Network configuration -The board comes preconfigured with: -- 4 switched LAN ports for internal networking -- Dedicated WAN port with DHCP client enabled -- SFP ports for high-speed fiber connections -- Dual WiFi interfaces for wireless connectivity +The Banana Pi R3 is a high-performance networking board with full Infix +support for all enabled features including switched Ethernet ports, WiFi, +and SFP interfaces. -### Installing Infix on eMMC +### Hardware Features -> [!IMPORTANT] -> No standard eMMC image exist yet, you have to create it your own -> from the SD card image by replacing fip.bin in the SD card image to -> the eMMC variant. +- MediaTek MT7986 ARM Cortex-A53 quad-core processor @ 2.0 GHz +- 2 GB DDR4 RAM +- 8 GB eMMC storage + microSD card slot +- 5x Gigabit Ethernet ports (4x LAN, 1x WAN) +- 2x SFP cages for fiber connectivity (1G/2.5G) +- Dual-band WiFi (2.4 GHz + 5 GHz) +- USB 3.0 port +- Mini PCIe slot -This guide describes how to install Infix on the internal eMMC storage of your BPI-R3. -The installation process requires a FTDI cable for console access, SD -card with Infix, a USB drive with the necessary bootloaders and eMMC -system image, and involves configuring the board's boot switches. +### Default Network Configuration -#### Required files +Infix comes preconfigured with: -Download the following files and place them on a FAT32-formatted USB drive: +- **LAN ports** (lan1-lan4): Bridged for internal networking +- **WAN port**: DHCP client enabled for internet connectivity +- **SFP ports** (sfp1, sfp2): Available for configuration +- **WiFi interfaces** (wifi0, wifi1): Available for configuration -1. **NAND bootloader files** (for initial setup): - - [bpi-r3_spim-nand_bl2.img](https://github.com/frank-w/u-boot/releases/download/CI-BUILD-2025-10-bpi-2025.10-2025-10-13_1032/bpi-r3_spim-nand_bl2.img) - - [bpi-r3_spim-nand_fip.bin](https://github.com/frank-w/u-boot/releases/download/CI-BUILD-2025-10-bpi-2025.10-2025-10-13_1032/bpi-r3_spim-nand_fip.bin) +## Getting Started -2. **eMMC bootloader files**: - - Download and extract [bpi-r3-emmc-boot-2025.01-latest.tar.gz](https://github.com/kernelkit/infix/releases/download/latest-boot/bpi-r3-emmc-boot-2025.01-latest.tar.gz) - - This contains `bl2.img` and `fip.bin` for eMMC boot +### Quick Start with SD Card -3. **System image**: - - `infix-bpi-r3-emmc.img` - The Infix system image for eMMC +The easiest way to get started is using an SD card: -#### Installation steps +1. **Download the SD card image:** [infix-bpi-r3-sdcard.img][2] +2. **Flash the image to an SD card:** see [this guide][0] +3. **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 +4. **Boot the board:** + - Insert the SD card + - Connect power + - Connect to LAN port or console (115200 8N1) + - Default login: `admin` / `admin` -**Step 1: Flash NAND bootloader** +### Boot Switch Reference -Boot from SD card and break into U-Boot by pressing Ctrl-C during startup: +The BPI-R3 has a 4-position DIP switch that controls boot media: + +DIP switches + +| Position | Mode | Description | +|----------|-------------|---------------------------------------| +| 0000 | SD card | Boot from microSD card (recommended) | +| 0110 | eMMC | Boot from internal eMMC storage | +| 0101 | SPI NAND | Boot from SPI NAND (advanced users) | + +> [!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). + +## Advanced: Installing to eMMC + +For production deployments or better performance, you can install Infix +to the internal eMMC storage. This is more complex but provides faster +boot times and eliminates the external SD card. + +### Why Use eMMC? + +**Advantages:** + +- Faster boot and better performance +- No external SD card to manage +- More robust for industrial/embedded deployments + +**Disadvantages:** + +- More complex installation process +- Requires intermediate NAND boot step +- Harder to recover from errors + +### Prerequisites + +- FTDI USB-to-serial cable (3.3V) for console access +- microSD card with Infix (for initial boot) +- USB flash drive (FAT32 formatted) +- Downloaded files (see below) + +### Required Files + +Download and place these files on a FAT32-formatted USB drive: + +1. **Intermediate NAND bootloader** (from Frank-W's U-Boot): + - [bpi-r3_spim-nand_bl2.img][5] (BL2 loader) + - [bpi-r3_spim-nand_fip.bin][6] (FIP image) +2. **Infix eMMC image:** + - [infix-bpi-r3-emmc.img][3] (Complete system image) +3. **eMMC bootloader** (extracted from): + - [bpi-r3-emmc-boot-2025.01-latest.tar.gz][4] + - Extract `bl2.img` from the tarball to your USB drive + +> [!WARNING] +> The following process involves multiple boot mode changes. Take your +> time verify each step carefully. + +### Installation Steps + +#### Step 1: Boot from SD card + +1. Set boot switches to **0000** (SD card mode) +2. Insert SD card with Infix +3. 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 @@ -64,9 +127,13 @@ fatload usb 0:1 0x50000000 bpi-r3_spim-nand_fip.bin mtd write spi-nand0 0x50000000 0x380000 0x200000 ``` -Power off the board and set the boot switch to **0101** (NAND boot mode), then power on. +#### Step 3: Boot from NAND -**Step 2: Flash system to eMMC** +1. Power off the board +2. Set boot switches to **0101** (NAND mode) +3. Power on - you should boot into U-Boot again + +#### Step 4: Write Infix image to eMMC From the U-Boot prompt: @@ -77,9 +144,11 @@ setexpr blocks ${filesize} / 0x200 mmc write 0x50000000 0x0 ${blocks} ``` -**Step 3: Configure eMMC bootloader** +This writes the complete Infix system (partitions, rootfs, etc.) to eMMC. -Write the eMMC bootloader and configure the boot partition: +#### Step 5: Configure eMMC boot + +Now configure the eMMC boot partition and write the bootloader: ``` mmc partconf 0 1 1 1 @@ -90,8 +159,72 @@ mmc partconf 0 1 1 0 mmc bootbus 0 0 0 0 ``` -Power off the board, set the boot switch to **0110** (eMMC boot mode), and power on. -Your BPI-R3 should now boot Infix from the internal eMMC storage. +#### Step 6: Boot from eMMC -### Pre-built images -SD card image: [infix-bpi-r3-sdcard.img](https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r3-sdcard.img) +1. Power off the board +2. Set boot switches to **0110** (eMMC mode) +3. Remove SD card (optional, but recommended to verify eMMC boot) +4. Power on + +Your BPI-R3 should now boot Infix from internal eMMC storage! + +## 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** + +### 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 (**0101**) and verify eMMC image was written +- Check USB drive contents - ensure all files are present +- Re-run Step 5 (eMMC boot configuration) + +### Reverting to SD card + +Simply set boot switches back to **0000** and boot from SD card. The +eMMC installation does not affect SD card functionality. + +## Additional Resources + +- [Infix Documentation][1] +- [Official BPI-R3 Wiki][7] +- [Release Downloads][8] + +## Building Custom Images + +See the main Infix documentation for building from source. To build both +SD card and eMMC images locally: + +```bash +# 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 +``` + +[0]: https://kernelkit.org/posts/flashing-sdcard/ +[1]: https://kernelkit.org/infix/latest/ +[2]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r3-sdcard.img +[3]: https://github.com/kernelkit/infix/releases/download/latest-boot/infix-bpi-r3-emmc.img +[4]: https://github.com/kernelkit/infix/releases/download/latest-boot/bpi-r3-emmc-boot-2025.01-latest.tar.gz +[5]: https://github.com/frank-w/u-boot/releases/download/CI-BUILD-2025-10-bpi-2025.10-2025-10-13_1032/bpi-r3_spim-nand_bl2.img +[6]: https://github.com/frank-w/u-boot/releases/download/CI-BUILD-2025-10-bpi-2025.10-2025-10-13_1032/bpi-r3_spim-nand_fip.bin +[7]: https://wiki.banana-pi.org/Banana_Pi_BPI-R3 +[8]: https://github.com/kernelkit/infix/releases/tag/latest-boot diff --git a/board/aarch64/bananapi-bpi-r3/bananapi-bpi-r3.webp b/board/aarch64/bananapi-bpi-r3/bananapi-bpi-r3.webp new file mode 100644 index 00000000..e46d5653 Binary files /dev/null and b/board/aarch64/bananapi-bpi-r3/bananapi-bpi-r3.webp differ diff --git a/board/aarch64/bananapi-bpi-r3/bootstrap-switch.webp b/board/aarch64/bananapi-bpi-r3/bootstrap-switch.webp new file mode 100644 index 00000000..6b67da2c Binary files /dev/null and b/board/aarch64/bananapi-bpi-r3/bootstrap-switch.webp differ