BPI-R4 Pro source code on github:
OpenWRT image:
BPI-R4Pro-8X-BE14-MT76-OpenWRT24.10-DSA-251125
Baidu Could: 百度网盘 请输入提取码 (pincode: 8888)
Google drive: BPI-R4Pro-8X-BE14-MT76-OpenWRT24.10-DSA-251125 - Google Drive
BPI-R4 Pro source code on github:
OpenWRT image:
BPI-R4Pro-8X-BE14-MT76-OpenWRT24.10-DSA-251125
Baidu Could: 百度网盘 请输入提取码 (pincode: 8888)
Google drive: BPI-R4Pro-8X-BE14-MT76-OpenWRT24.10-DSA-251125 - Google Drive
I don’t know if someone else tried compiling this source code but for me it doesn’t work. @sinovoip
Here is what I did
> 1. git clone
> 2. make menuconfig (selected only Bpi-r4 pro as target and removed the additional stuff that comes with the buildint image like shadowsocks)
> 4. make V=s or make -j1 V=s.
here is the error message:
> make -C /home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.93 KCFLAGS="-fmacro-prefix-map=/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/build_dir/target-aarch64_cortex-a53_musl=target-aarch64_cortex-a53_musl -fno-caller-saves " HOSTCFLAGS="-O2 -I/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/staging_dir/host/include -Wall -Wmissing-prototypes -Wstrict-prototypes" CROSS_COMPILE="aarch64-openwrt-linux-musl-" ARCH="arm64" KBUILD_HAVE_NLS=no KBUILD_BUILD_USER="" KBUILD_BUILD_HOST="" KBUILD_BUILD_TIMESTAMP="Wed Nov 26 09:02:16 2025" KBUILD_BUILD_VERSION="0" KBUILD_HOSTLDFLAGS="-L/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/staging_dir/host/lib" CONFIG_SHELL="bash" V='' cmd_syscalls= CC="aarch64-openwrt-linux-musl-gcc" KERNELRELEASE=6.6.93 Image dtbs modules
make[5]: Entering directory '/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.93'
make[11]: *** No rule to make target '../../linux-firmware-20241110//airoha/EthMD32.dm.bin', needed by 'drivers/base/firmware_loader/builtin/airoha/EthMD32.dm.bin.gen.o'. Stop.
make[10]: *** [scripts/Makefile.build:480: drivers/base/firmware_loader/builtin] Error 2
make[9]: *** [scripts/Makefile.build:480: drivers/base/firmware_loader] Error 2
make[8]: *** [scripts/Makefile.build:480: drivers/base] Error 2
make[7]: *** [scripts/Makefile.build:480: drivers] Error 2
make[6]: *** [/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.93/Makefile:1924: .] Error 2
make[5]: *** [Makefile:234: __sub-make] Error 2
make[5]: Leaving directory '/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.93'
make[4]: *** [Makefile:18: /home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_filogic/linux-6.6.93/.modules] Error 2
make[4]: Leaving directory '/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/target/linux/mediatek'
make[3]: *** [Makefile:12: compile] Error 2
make[3]: Leaving directory '/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/target/linux'
time: target/linux/compile#0.51#0.18#0.63
ERROR: target/linux failed to build.
make[2]: *** [target/Makefile:32: target/linux/compile] Error 1
make[2]: Leaving directory '/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel'
make[1]: *** [target/Makefile:25: /home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/staging_dir/target-aarch64_cortex-a53_musl/stamp/.target_compile] Error 2
make[1]: Leaving directory '/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel'
make: *** [/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/include/toplevel.mk:233: world] Error 2
pietro@pubuntu:~/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel$
because OpenWRT’s kernel compiling depend on the linux-firmware package, So you need firstly compile linux-firmware package. make package/firmware/linux-firmware/compile. then make .
Hello @zuowei8 and thanks for jumping in.
To be honest I expected that to be called automatically by the main make which recursively builds everything.
If I do:
I get the following error:
cp: cannot stat ‘/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/staging_dir/toolchain-aarch64_cortex-a53_gcc-13.3.0_musl/lib/ld-musl-.so’: No such file or directory make[2]: *** [Makefile:779: /home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/build_dir/target-aarch64_cortex-a53_musl/toolchain/.pkgdir/libc.installed] Error 1 make[2]: Leaving directory ‘/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel/package/libs/toolchain’ time: package/libs/toolchain/compile#0.10#0.01#0.10 ERROR: package/libs/toolchain failed to build. make[1]: *** [package/Makefile:177: package/libs/toolchain/compile] Error 1 make[1]: Leaving directory ‘/home/pietro/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel’
this error message makes me think that it is failing because the toolchain has not been compiled first…
this means that I have to change the build process in this way:
Is this expected? To me it looks like the make package/firmware/linux-firmware/compile has been forgotten and should be included in the main compile chain after that the toolchains have been built.
Good morning — I’m sharing the first image, which is an alpha because it hasn’t been tested. As mentioned, I’m sure I’ve forgotten to mention some features.
Because it’s an alpha, I’m waiting for the accessories to arrive so I can run the tests properly.
If someone would be kind enough to try it and say whether it at least boots or works, I would really appreciate it.
Also, I should mention that with the official file arm-trusted-firmware-mediatek-2024.01.17 it was impossible for me to build an image; likewise the .config from the repo always failed without changing absolutely anything. I checked the official repository and the file arm-trusted-firmware-mediatek-2024.01.17 there is only 7.83 MB.
Either it’s wrong or incomplete, so I’m providing the one I used which is 97.1 MB. You should replace the file in the dl folder with the one I include in the zip.
I’m including my .config because the one in the repository also made compilation impossible for me. I added luci-app-nuevas; the luci repository is my personal one and is listed in the feeds.conf.default that I include in the zip.
I’m also including in the zip the wireless-regdb folder with the transmit-power patch I modified. If someone wants to test it, go to the folder package/firmware/, delete the wireless-regdb folder there and put mine in its place. Note: do this after running ./scripts/feeds install -a, because that command creates additional patches that must be removed. If you don’t want to use my patch, leave the folder as it is.
These are the features — I’m sure I’ve forgotten some since the image hasn’t been tested and I don’t even know if it works.
What’s included (installed components and short descriptions)
Scheduled Reboot — schedule router reboots at a specified time on any day of the week.
Scheduled Tasks — system crontab where scheduled jobs can be defined.
LED Configuration — customize device LED behavior where supported.
Dynamic DNS — supports free dynamic DNS services (e.g., duckdns.org) to hide your IP for gaming and other uses.
omcproxy — embedded IGMPv3 and MLDv2 proxy.
UPnP IGD & PCP/NAT‑PMP Service — allow local clients to configure port mappings/forwards on the router autonomously. Service ACLs specify which client addresses and ports can be mapped; IPv6 is always allowed.
Wifi Schedule — parental control to define hours when Wi‑Fi is enabled or disabled each day.
DHCP — separate LAN and SFP networks and create advanced rules (useful with VPNs). Allows exposing specific LAN ports and creating multiple Wi‑Fi networks with public IPs or VPN IPs coexisting, which is helpful when some services don’t work through a VPN.
Fake Mesh Setup — works well for 2G and 5G mesh. 6G is currently not possible because of an OpenWrt bug; once that is fixed (by OpenWrt or MediaTek) the build is prepared to support 6G in mesh mode.
Basic settings for your fake mesh overlay network
Statistics have been enabled to continuously monitor the router’s operation: CPU(s), interfaces, wireless, system load, and memory.
CPU Load and Temperature monitoring have been added to show real‑time CPU load and temperatures for the CPU, SFP and Wi‑Fi card, so you can see operating temperatures.
WireGuard VPN — an excellent, high‑performance VPN.
Experimental regulatory / power adjustments — a patch was made experimentally to remove some restrictions and set channels to maximum transmit power across the three bands. Note: I only adjusted transmit power for the 5G and 6G bands; for 2G I left the default power. An option was also added to manually configure per‑channel transmit power so you can comply with legal limits in your country.
A patch has been added for was110-xgs-pon.
Thanks for trying it and please report whether it works for you and any errors you find.
For compilation, I did it this way:
./scripts/feeds update -a
./scripts/feeds install -a
Then I ran:
make {toolchain,target,package/fail2ban}/compile
Just out of curiosity, I ran:
make package/firmware/linux-firmware/compile. It didn’t do anything since it was already compiled by my first command.
Finally, I ran:
make -j1 V=s 2>&1 | tee fra.log just to see if there were any errors, although I usually run the following commands during my compilations:
make -j$(nproc) V=s | tee build.log
In case this helps
have a good day
For anyone trying to use this source code and enable the MT7916 drivers for AW7916 from AsiaRF … it doesn’t work… compiling MT76 fails because of api mismatches.
Good afternoon, pameruoso. The truth is I’ve never compiled for MT7916 drivers for AW7916 from AsiaRF — I’ve always done it for the be14000.
I also don’t understand why the sources were made for kernel 6.6.93, when there are more recent ones; I suppose they must have their reasons.
But if there are 6.6.93 builds for MT7916 drivers for AW7916 from AsiaRF, they should work on the rest of the Banana Pi R4 boards — the only issue is that MTK references a specific MTK commit that may be specific to the be14.000 and might not include the MT7916 drivers for AW7916 from AsiaRF in that commit. Have you tried compiling with the latest MTK commit instead of the one that comes in the feeds from the repository?
Maybe they’ll answer you about why they chose that specific commit, although I doubt they’ll give a full explanation.
Until my accessories arrive I’m going to have some fun trying builds with a newer kernel for the be14.000.
As I told you, I don’t even know if the image I uploaded works — I only know the build succeeded; in principle it should boot and run.
But until the rest of the accessories I ordered arrive I’m not going to assemble the board or test the image, because I have to remove one of the be14.000 boards I have in another Banana Pi to put it in once the enclosure arrives, and I also bought fans.
Then I’ll have to check the case to see if any further modifications are needed for ventilation — even though it’s large, no accessory has yet been released to allow moving the be14.000 to another position.
I’ve seen a heatsink that isn’t yet for sale, but I’d prefer they released an accessory to let you relocate the Wi‑Fi card to see if that reduces noise. I’ll look on my side for any accessory to move the card — they must sell them somewhere.
For now we have to wait for the Banana team to make a move.
Meanwhile I’m going to have fun now that I’ve had some success: I have my own repos, higher kernels, toolchain, staging_dir — I’ll try to add DTBs and other patches for the new board, and pull the latest MTK commits instead of the one in the repository.
Sorry I can’t help you more.
Do you mean replacing the mediatek feed specific commit in this source code with the 24.10 one fron mediatek?
I could give it a try
Good evening, pameruoso — I’m leaving them public so you can clone my luci openwrt-24.10 repositories: GitHub - brudalevante/luci and GitHub - brudalevante/mediatek-01-12-2025. This is commit 5d915dc8be5554b34556c03e0c4422683dc4c673 [openwrt-24][MAC80211][WiFi7][Fix patch fail on kernel6.6 MAC80211 build]. Send me a message because I will make them private again; I don’t usually make my repositories public because I prefer to work privately, producing images for the community only when I have the strength — I’m very ill and prefer to work privately and share my work with the community occasionally when I’m feeling well.
I don’t worry much about keeping everything up to date across all feeds, and I always compile in private when my health permits. In fact I already announced I wouldn’t release more images on the OpenWrt forum, but today I feel able to help others.
When you’ve copied the repositories, let me know and I’ll set them back to private.
In your feeds, add them like this once you clone them:
src-git-full packages git.openwrt.org Git src-git-full luci https://Put your repository here/luci.git;openwrt-24.10 src-git-full routing git.openwrt.org Git src-git telephony git.openwrt.org Git
src-git mtk_openwrt_feed Put your repository here.git^5d915dc8be5554b34556c03e0c4422683dc4c673
#src-link custom /usr/src/openwrt/custom-feed src-git-full kenzo GitHub - kenzok8/openwrt-packages: openwrt常用软件包 src-git-full small GitHub - kenzok8/small: clash homeprxoy mihomo 依赖
I await your message so I can make them private again.
Best regards.
Good morning — I’m providing a new image, BPI-R4 Pro. A new patch has been added for the XGS-PON module Zaram ZXOS11NPI, and the patch for the XGS-PON module Was-110-H-COM SPP425H-GAB4 is also retained.
The rest of the features remain the same.
BPI-R4+Pro-Zaram+ZXOS11NPI+XGS-PON+module+wass-110-H-COM+SPP425H-GAB4
Best regards.