Banana Pi BPI-F3 (bananapi-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 |
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-ROM→U-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
bootinfo | fsbl | env | opensbi | uboot |
---|---|---|---|---|
bootinfo_spinor.bin | FSBL.bin | env.bin | fw_dynamic.itb | u-boot.itb |
gpt | bootfs | rootfs |
---|---|---|
bootfs.img: Image, kernel.dtb, env.txt, bootlogo | rootfs.img |
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.