[ BPI-R4 Pro 8X ] — Deploy System with UniFi Protect & Network (first release)

After finishing the deploy system for the standard BPI-R4, here is the same concept brought to the BPI-R4 Pro 8X.

What the deploy system covers:

  • SD card boot — flash a ready-made image, no Linux machine needed
  • NAND system install — fully functional permanent option, no disk required
  • eMMC install — permanent install to internal eMMC
  • NVMe install — full OpenWrt on NVMe SSD with dedicated data partition
  • UniFi Protect — camera management running in Docker on NVMe (G5 Flex tested, remote access working)
  • UniFi Network controller — WiFi AP management (U7 Long-Range WiFi 7 adopted and working)

NAND and eMMC are fully functional permanent options. NVMe is recommended for larger storage — required for the UniFi stack.

Everything runs from a GitHub Actions CI pipeline — no build environment needed. Fork the repo, trigger the workflow, flash the release.

Built on mainline OpenWrt + MediaTek SDK. First public release — hardware tested end to end including powercycle persistence. Feedback welcome.

Full install guide and details:
https://github.com/woziwrt/bpi-r4-deploy

Tested hardware:

  • BPI-R4 Pro 8X
  • NVMe: Patriot P300 512 GB (slot CN14)
  • UniFi G5 Flex camera
  • UniFi U7 Long-Range WiFi 7 AP
3 Likes

Good morning, thank you very much. I’ll try it as soon as I can.

You’re number one!

I’m not home right now,

You’re a genius!

I’ll let you know how it goes.

1 Like

Good morning, thank you for the latest image you’ve taken. I’m testing it right now.

The work you’ve done is spectacular.

dejo el enlace para que la gente se anime ha probar eesta maravila de trabajo

releases

Thank you very much.

Good afternoon, here are a few details about this monster you’ve created.

Latest kernel in a week,

Symmetrical speeds. I’ve included some photos.

Wireless Luci, who would never have been able to do it with all the things she has to do, would never have achieved what you have created

Captura de pantalla 2026-06-18 110923 Captura de pantalla 2026-06-18 110906 Captura de pantalla 2026-06-18 110937

And their piece of junk, a noisy 1st generation Banana Be14000.

Please, let them hire you and show them how to do things right. Before they start manufacturing the much-promised 3rd generation Be14000 and the famous Be19000 cards again, tell them how to manufacture them, since their engineers have proven themselves inadequate for both routers and cards. Before releasing something useless again, they should show you all the documentation, because I’m sure you’ll teach them how to do a good job.

Thanks a lot for everything, Wozi.

Hello, can you provide an SDK corresponding to the kernel version

Buenas tardes @zheng.

lo tienes en el primer hilo de este post

Built on mainline OpenWrt + MediaTek SDK. First public release — hardware tested end to end including powercycle persistence. Feedback welcome.

un saludo

You can find it in header comment in workflow file build-bpi-r4-pro-8x.yml on pro-8x-unifi branch on bpi-r4-deploy git

# Build versions — HW tested 2026-06-16 (NAND + eMMC + NVMe, WiFi OK):
#   OPENWRT_COMMIT: 949487e0900b92a87b5f5bc5db9861ce3480db6a
#   MTK_COMMIT:     3f8797ce3efcf0ed534ae2db21b2c06b405d714b  (HEAD 2026-06-15)
#
# Previous (tested ~2026-05):
#   OPENWRT_COMMIT: 13ff2256e5dd9bc070f9a9c6a673bff4a9191837
#   MTK_COMMIT:     dceb45f8cb945bce16f0e09f8d2cd974c9f0ce58

Hi Wozi,

First, your flowers. Marvelous work, you’ve done what even Gli.Net can’t do with their own products which is bring the latest (Main release) OpenWRT Firmware to a custom, powerful router. I thank you very much for bringing this to us.

As for my issue I am having, I have the BPI-R4-Pro-8X with the Wi-Fi 7 Module, and I cannot get Wi-Fi to work. I installed your release titled “BPI-R4 Pro 8X standard WiFi (latest)” as that seemed like the only one for my router. Nearly everything else works without an issue, I even got the Cellular Modem working once I installed the luci-proto-modemmanager, something I couldn’t get with the other firmware’s. What do I need to do for the Wi-Fi? Here are screenshots and the wifi manager log:

wifimgr-syslog.txt (112.0 KB)

Thanks for the kind words!

I went through your syslog. If you installed exactly this release:

then this is not a bug in the image/release — I verified Wi-Fi works on a real BPI-R4 Pro 8X with a BE14 Wi-Fi card on this exact build.

The log shows the MT7996 radio never appears on the PCIe bus (PCIe link down, no mt7996 device → no radio; the Wi-Fi-manager error is just a side effect of that). So the card isn’t coming up at the hardware level — almost certainly one of:

  1. The Wi-Fi card has no power. The BPI Wi-Fi NIC needs a 12V supply, enabled by the on-board SW4 switch — it must be in the ON position (the 12V LED lights up when on). This is by far the most likely cause of exactly this symptom.

Check this first. (see image)

  1. The card is not seated properly in the slot.

  2. The card is damaged.

Flip SW4 to ON, power-cycle, and Wi-Fi should enumerate. If SW4 is already ON and the 12V LED is lit, reseat the card; if it still doesn’t show up, the module itself is suspect

1 Like

Wozi,

Thanks, you were right, Don’t know how I missed this in the getting started instructions. Thank you again, I will look to see about getting the port activity working as on the overview page, all show disconnected and it doesn’t have all the ports on the device listed. It’s been a while since I did any work on stuff like that (Dynalink Router), think it’s just a file edit somewhere, when I get a sec, if I find it, will share here.

Hi,

I’m currently using your BPi-R4 Pro 8X wired build, and I must say I’m really impressed with the performance and stability – thank you for your great work on this project!

I am now at the point where I would like to expand my setup. I am considering recompiling the system in my own build environment to add some custom packages and maintain full control over the build. However, I’ve hit a roadblock with integrating a custom kernel patch.

I need to include an SFP quirk for my ODI DFP-34X-2IY3 and HALNy HL-GSFP modules to force 2.5G speed, as the standard quirks are not sufficient for my specific link. I have a prepared patch file, but I’m struggling to inject it properly into your builder workflow without breaking the dependency management (I encountered issues with missing mtk-feeds-cache during the process).

What is the recommended “best practice” in your opinion for injecting custom patches and adding extra packages while using your builder scripts? Is there a specific directory structure I should follow to ensure the builder auto-applies my patches, or should I take a different approach?

I would appreciate any guidance or tips on how to handle this correctly.

Thanks a lot for everything, Wozi.

Thank you, Xiaomi_ax3600, for your help earlier—you guys are the best!

Best regards, Sebastian

Hi Sebastian,

Thanks a lot for the kind words — really glad the Pro 8X wired build is treating you well!

First: update your builder. Before anything else, grab the latest builder for your variant — builder-pro-8x-wired.sh from the pro-8x-unifi branch. We recently changed how the MTK feed is pulled: the current builder clones the MTK feed at a pinned commit automatically instead of relying on a local repo-cache tarball, which we removed. Your missing mtk-feeds-cache error is almost certainly because you’re on an older builder that still expects that tarball — updating should clear it up on its own, since the feed gets fetched for you.

Injecting your SFP quirk. The builder doesn’t auto-scan a folder — each patch is copied explicitly, and a kernel patch has to land inside the MTK feed overlay, otherwise the feed-copy step overwrites it. Two steps:

  1. Drop your patch in my_files/, e.g. my_files/999-sfp-12-odi-halny-2g5.patch (use a 999- prefix so it applies after the stock quirks).
  2. Add one line to the builder, right next to the existing SFP quirk lines:
\cp -r my_files/999-sfp-12-odi-halny-2g5.patch mtk-openwrt-feeds/25.12/files/target/linux/mediatek/patches-6.12

That’s exactly how the existing SFP quirks are wired (999-sfp-10-additional-quirks.patch, 999-sfp-11-...) — your change is the same kind, so use one of those as a template. OpenWrt then auto-applies everything in patches-6.12/ via quilt during the kernel prepare step.

Key point: copy into mtk-openwrt-feeds/.../files/target/linux/..., not straight into openwrt/target/... — the feed lays its files/ overlay on top of the tree and would clobber a patch placed there directly.

Custom packages. Add them next to the other config lines (echo "CONFIG_PACKAGE_yourpkg=y" >> .config, then ./scripts/feeds install yourpkg). We’re also planning to publish a prebuilt OpenWrt SDK for this target soon — the cleaner route when you only want extra packages, with no full-tree rebuild. I’ll post once it’s up.

One favour, if you’re up for it: Send over your ODI DFP-34X-2IY3 / HALNy HL-GSFP 2.5G quirk once it works. Module quirks like that are useful to others, and I’d happily fold it into the build so it works out of the box for everyone with those modules.

Hope that unblocks you — shout if anything else comes up.

Best, Wozi