Banana Pi BPI-F3 (bananapi-bpi-f3)

From postmarketOS Wiki
Banana Pi BPI-F3
Manufacturer Banana Pi
Name BPI-F3
Codename bananapi-bpi-f3
Released 2024
Type single board computer
Hardware
Chipset SpacemiT K1
CPU 8x SpacemiT X60 @ 1.6 / 2.0 GHz
GPU IMG BXE-2-32
Storage SD Card, NVMe, or 8 / 16 / 32 / 128 GB eMMC
Memory 2 / 4 / 8 / 16 GB 64bit LPDDR4X
Architecture riscv64
Software
Original software Bianbu Linux
postmarketOS
Category testing
Pre-built images no
Features
Flashing
USB Networking
Internal storage
SD card
Works
Screen
Works
Multimedia
3D Acceleration
Audio
Camera
Connectivity
WiFi
Bluetooth
Broken
Ethernet
Works
Miscellaneous
USB-A
Works
USB OTG
HDMI/DP
Works
Sensors
Power Sensor


This device is based on the SpacemiT Key Stone K1.
See the SoC page for common tips, guides and troubleshooting steps

Contributors

Users owning this device

  • Haui2 (Notes: Same issue as the roma pad. Needs specific sd card layout.)


How to enter flash mode

Use the download button or the DIP switch to enter fastboot mode.

Installation

The company who builds the processor (Spacemit) also makes the Linux distribution that comes with it (Bianbu Linux) and holds the key to the proprietary u-boot fork that they make.

So currently you have to burn the bianbu image to an sd card and exchange the content of the rootfs with the one of the postmarketOS build.

We will update this once it has been figured out.

Resources

Documentation

Articles

Software

GPIO

PIN Function Function PIN
1 VCC3V3_SYS VCC5V0_OUT 2
3 AP_I2C4_SDA_3V3 VCC5V0_OUT 4
5 AP_I2C4_SCL_3V3 GND 6
7 GPIO_70_3V3 / JTAG TDI R_UART0_TXD_3V3 8
9 GND R_UART0_RXD_3V3 10
11 GPIO_71_3V3 / JTAG TMS GPIO_74_3V3 12
13 GPIO_72_3V3 / JTAG TCK GND 14
15 GPIO_73_3V3 / JTAG TDO GPIO_91_3V3 16
17 VCC3V3_SYS GPIO_92_3V3 18
19 SPI3_MOSI_3V3 GND 20
21 SPI3_MISO_3V3 GPIO_49_3V3 22
23 SPI3_SCLK_3V3 SPI3_CS_3V3 24
25 GND GPIO_50_3V3 26

DIP switches

Front

QSPI_DATA1 QSPI_DATA0 Function
0 0 TF Card -> EMMC
1 0 TF Card -> SPI NOR
0 1 TF Card -> SPI NAND
1 1 TF Card -> SD
QSPI_DATA3 Function
0 Normal boot
1 Download mode
QSPI_DATA2 Function
0 USB
1 UART

Back

There are pads on the back for a DIP switch.

1K resistor to VCC
JTAG_SEL Function
0 GPIO (off)
1 JTAG
10K resistor to GND
MMC1_CMD Route
0 X60
1 N308

Boot process

Boot-ROMU-boot SPL (128K)OpenSBI (1M)U-boot (2M)kernel

Partition layout

PostmarketOS

This section needs expansion. You can help by adding to it.

Name Start
Size

Bianbu Linux

emmc

Contains a protected boot0 area containing the FSBL. Seperate address spaces?

boot0 user_data
gpt fsbl env opensbi uboot bootfs rootfs
bootinfo_emmc.bin FSBL.bin unused unused(?) fw_dynamic.itb u-boot.itb bootfs.img: Image, kernel.dtb, env.txt, bootlogo rootfs.img

sdcard

gpt fsbl env opensbi uboot bootfs rootfs
bootinfo_sd.bin FSBL.bin env.bin fw_dynamic.itb u-boot.itb bootfs.img: Image, kernel.dtb, env.txt, bootlogo rootfs.img
Name Start Size Image
bootinfo 0K 512 factory/bootinfo_sd.bin
fsbl 128K 256K factory/FSBL.bin
env 384K 64K env.bin
opensbi 1M 1M fw_dynamic.itb
uboot 2M 2M u-boot.itb
bootfs 4M 256M bootfs.ext4
rootfs 260M - rootfs.ext4

nor+ssd

NOR flash
bootinfo fsbl env opensbi uboot
bootinfo_spinor.bin FSBL.bin env.bin fw_dynamic.itb u-boot.itb
NVME SSD
gpt bootfs rootfs
bootfs.img: Image, kernel.dtb, env.txt, bootlogo rootfs.img

Firmware layout documentation

Bits of networks Debian

Partition Start (LBA) Size Name
1 256 512 unused
2 768 128 env
3 2048 2048 opensbi
4 4096 4096 uboot
5 8192 400M bootfs
6 - - rootfs

Boot-ROM and bootinfo data

This section needs expansion. You can help by adding to it.

Bootinfo possibly contains the boot vector and info about memory protected area (size of boot0). Boot-ROM uses it to load the FSBL.

Inner-workings of the Boot-ROM seem to be fully undocumented.

$ xxd bootinfo_sd.bin

00000000: f014 07b0 0100 0100 5344 4300 0000 0000 ........SDC.....

00000010: 0002 0000 0000 0100 0000 0010 0000 0000 ................

00000020: 0000 0200 0000 0800 0060 0300 0000 0000 .........`......

00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................

00000040: 4df8 cc36 0000 0000 0000 0000 0000 0000 M..6............

$ xxd bootinfo_emmc.bin

00000000: f014 07b0 0100 0100 654d 4d43 0000 0000 ........eMMC....

00000010: 0002 0000 0000 0100 0000 0010 0000 0000 ................

00000020: 0002 0000 0000 0000 0060 0300 0000 0000 .........`......

00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................

00000040: 67dc ac43 0000 0000 0000 0000 0000 0000 g..C............

$ xxd bootinfo_spinor.bin

00000000: f014 07b0 0100 0100 4e4f 5246 0000 0000 ........NORF....

00000010: 0001 0000 0000 0100 0000 1000 0000 0000 ................

00000020: 0000 0200 0000 0700 0060 0300 0000 0000 .........`......

00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................

00000040: d945 f055 0000 0000 0000 0000 0000 0000 .E.U............

$ xxd bootinfo_spinand.bin

00000000: f014 07b0 0100 0100 4e41 4e44 0000 0000 ........NAND....

00000010: 0008 0000 0000 0200 0000 0010 0000 0000 ................

00000020: 0000 0200 0000 0800 0060 0300 0000 0000 .........`......

00000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................

00000040: 044f c948 0000 0000 0000 0000 0000 0000 .O.H............

FSBL

This section needs expansion. You can help by adding to it.

Seems to be U-Boot SPL.

OpenSBI

This section needs expansion. You can help by adding to it.

U-Boot

This section needs expansion. You can help by adding to it.

Linux kernel

This section needs expansion. You can help by adding to it.

See also

Purchase links