BPi-R4 Pro
Hardware
The R4Pro will come in two versions: the R4Pro-8X and the R4Pro-4E.
The main difference between the two versions is that the 8X features 8GB of DDR and two 10G PHYs that are mounted. The 4E version features 4GB of DDR, without the two 10G PHYs, it uses the MT7988's built-in 1G and 2.5G.
- MediaTek MT7988A Quad-core Arm Corex-A73,1.8GHz processor
- 4GB/8GB DDR4
- 8GB eMMC flash
- 256MB SPI-NAND Flash
- Micro SD card slot
- 1x 10G SFP WAN / 10G phy (Aeonsemi As21011 is the same as Airoha AN8831) - only 8X
- 1x 10G SFP LAN / 10G phy (Aeonsemi As21011 is the same as Airoha AN8831) - only 8X
- 1x 2.5G RJ45 WAN (Option with 1x 10G SFP WAN, support POE with POE Module soldered) - only 4E
- 4x 2.5G RJ45 LAN (MxL86252C)
- 1x 1G RJ45 LAN (SoC builtin mt753x)
- 2x 1G LAN (FPC Connector)
- 2x miniPCIe slots with PCIe3.0 2lane interface for Wi-Fi 7 NIC
- 2x M.2 M-KEY slots with PCIe3.0 1lane interface for NVME SSD (PCIe can switch to M.2 B-KEY slot)
- 3x M.2 B-KEY slots with USB3.2 for 5G Module (2 are sharing pcie-lane with key-m slots)
- 1x USB3.2 slot
- 1x USB2.0 slot
- 1x USB TypeC Debug Console
- 2×13 PIN Header for expanding application
R4Pro-4E:
v00:
v1.0:
Network
| USB-A | mxl_lan0 | mxl_lan1 | mxl_lan2 | mxl_lan3 | internal WAN | LAN PHY | SFP-LAN | SFP-WAN | WAN PHY | 12V |
|---|---|---|---|---|---|---|---|---|---|---|
| eth2 | eth0 | behind mxl switch and eth-mux | eth1 (eth-mux) | |||||||
Software
U-boot
https://github.com/frank-w/u-boot/tree/2025-10-bpi
note:
in my tests sdmmc speed has to be changed to 48MHz else i got mmc errors
arch/arm/dts/mt7988-sd-rfb.dts
&mmc0 { pinctrl-names = "default"; pinctrl-0 = <&mmc1_pins_default>; - max-frequency = <52000000>; + max-frequency = <48000000>;
this can't reproduced by bpi/mtk so possibly an issue with my sandisk cards…
nand
ubinized image working.
Warnings (NOTICE: UBI: Bad EC magic in block 1008-2031 ffffffff) caused by too small ubi mtd partition on r4pro (has 256 fixed in dts).
BPI-R4> fatload usb 0:1 $loadaddr bpi-r4pro_spim-nand_ubi_bl2.img 263029 bytes read in 32 ms (7.8 MiB/s) BPI-R4> mtd write spi-nand0 $loadaddr 0x0 0x100000 Writing 1048576 byte(s) (512 page(s)) at offset 0x00000000 BPI-R4> mtd erase spi-nand0 0x200000 BPI-R4> fatload usb 0:1 $loadaddr bpi-r4pro_nand.img 30408704 bytes read in 2559 ms (11.3 MiB/s) BPI-R4> mtd write spi-nand0 $loadaddr 0x200000 $filesize Writing 30408704 byte(s) (14848 page(s)) at offset 0x00200000
Linux
Issues
Currently my development state:
V1.0 (6.17-main+):
- SDMMC still only works with reduced speed (48MHz works, 50MHz produces many errors)
- mxl-switch working now
- both usb and pcie working
- mPCIe slots working, m.2 (with switch)
- I2c-mux now detected
V00:
- SDMMC only works with reduced speed
- Trace when mxl port is set to up (if phy not detected before - most times)
- 10G phys not detected and main mdio cannot be scanned
- Eth-Mux not tested because phys were not detected
- Trace for one usb (ssusb0,front=ssusb1 working)
- mPCIe slots working, m.2 (with switch)
- I2c-mux not detected
- SSD-leds behaving weired (off when ssd inserted/recognized, going on system halt)
Openwrt
sdk
MTK instructions:
main branches:
git clone --branch openwrt-24.10 https://git.openwrt.org/openwrt/openwrt.git openwrt git clone --branch master https://git01.mediatek.com/openwrt/feeds/mtk-openwrt-feeds cd openwrt # Select Bpi-R4-Pro SKU to build (1st Build) bash ../mtk-openwrt-feeds/autobuild/unified/autobuild.sh filogic-mac80211-mt7988_rfb log_file=make # MTK SDK image for BPI-R4-Pro is: openwrt-mediatek-filogic-bananapi_bpi-r4-pro-squashfs-sysupgrade.itb openwrt-mediatek-filogic-bananapi_bpi-r4-pro-initramfs-recovery.itb
BPI-R4> setenv loadaddr 0x50000000 BPI-R4> load usb 0:1 $loadaddr openwrt-mediatek-filogic-bananapi_bpi-r4-pro-initramfs-recovery.itb 39976960 bytes read in 3363 ms (11.3 MiB/s) BPI-R4> bootm $loadaddr#config-mt7988a-bananapi-bpi-r4-pro#mt7988a-bananapi-bpi-r4-sd






