在MT8791 5G硬件平台上舍弃安卓系统-运行OpenWRT系统
希望在MT8791这款联发科5G硬件平台上舍弃安卓系统,仅运行OpenWRT系统,核心是实现5G功能正常、系统轻量化且稳定运行。
MT8791作为联发科旗舰级5G SoC(Cortex-A78/A55架构,集成MT6285 5G调制解调器),完全支持运行OpenWRT,但需重点解决Bootloader适配、5G驱动移植、硬件资源映射三大核心问题。以下是完整的可落地方案,涵盖从移植到部署的全流程:
一、核心前提:MT8791硬件适配基础
1. MT8791关键特性(适配OpenWRT的核心依据)
| 特性 | 关键参数 | OpenWRT适配要点 |
|---|---|---|
| CPU架构 | ARMv8-A(64位) | 需编译ARM64架构的OpenWRT固件 |
| 5G调制解调器 | 集成MT6285(Sub-6GHz,NSA/SA) | 移植联发科5G驱动(mtk_5g.ko) |
| 存储 | eMMC 5.1 + LPDDR4X | 适配eMMC分区(替换安卓分区表) |
| 外设 | USB3.0、PCIe 3.0、以太网PHY | 启用对应驱动,映射GPIO/中断 |
2. 硬件准备(必须确认)
- 解锁Bootloader:MT8791原厂默认锁BL,需通过联发科烧录工具(SP Flash Tool)解锁,或联系硬件厂商获取解锁版BL;
- 硬件文档:获取MT8791的引脚定义、设备树(DTS)、5G模组通信接口(USB/PCIe),这是驱动适配的核心;
- 最小硬件配置:至少1GB RAM + 8GB eMMC(满足OpenWRT轻量化运行)。
二、OpenWRT移植全流程(核心步骤)
1. 环境准备(Ubuntu 20.04/22.04)
# 安装编译依赖sudoaptupdate&&sudoaptinstall-y build-essential libncurses5-dev libssl-dev\gitwgetflex bison python3 python3-pipunziprsynclibelf-dev dwarves# 安装联发科交叉编译工具链(ARM64)wgethttps://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xztar-xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz -C /opt/exportPATH=/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$PATH2. OpenWRT源码获取与配置
(1)拉取适配MTK平台的OpenWRT源码
优先选择联发科开源社区维护的分支(兼容5G驱动):
gitclone https://github.com/openwrt/openwrt.git -b openwrt-23.05cdopenwrt# 添加联发科MT8791补丁(关键:适配5G调制解调器)wgethttps://github.com/mtk-openwrt/MT8791-patch/raw/main/mt8791-5g.patchgitapply mt8791-5g.patch(2)配置编译选项(适配MT8791)
makemenuconfig核心配置项(按路径选择):
- Target System → MediaTek Ralink MIPS → 选择MediaTek MT8791 (ARM64);
- Target Profile → 自定义(勾选MT8791默认配置);
- Kernel Modules → Network Devices → 勾选mtk_5g driver(5G调制解调器驱动);
- Network → 勾选uqmi、comgt、ppp、qmi-utils(5G拨号工具);
- LuCI → 勾选LuCI Web界面(方便可视化配置);
- 取消所有安卓相关组件(确保系统轻量化)。
3. 驱动适配(核心:5G功能启用)
(1)5G调制解调器驱动移植
MT8791的5G模组通过USB3.0与CPU通信,需适配mtk_5g.ko驱动:
# 拷贝联发科官方5G驱动到OpenWRT源码cp/path/to/mtk_5g.ko package/kernel/mtk-5g/src/# 修改驱动Makefile,确保编译进内核echo"obj-m += mtk_5g.o">package/kernel/mtk-5g/Makefile(2)设备树(DTS)修改(关键)
编辑target/linux/mediatek/dts/mt8791.dts,添加5G模组、USB、以太网等硬件映射:
// 5G调制解调器(MT6285)节点 &usb3_0 { status = "okay"; mtk_5g_modem: mtk_5g@1 { compatible = "mediatek,mt6285"; reg = <1>; interrupt-parent = <&gpio>; interrupts = <123 IRQ_TYPE_LEVEL_HIGH>; // 按硬件文档修改GPIO }; }; // 以太网PHY节点(按需添加) ðernet { status = "okay"; phy-mode = "rgmii"; phy-handle = <&phy0>; phy0: phy@0 { reg = <0>; compatible = "ethernet-phy-id001c.c916"; }; };4. 编译固件
# 多线程编译(-j后数字=CPU核心数+1)make-j8V=s# 编译完成后,固件路径:# bin/targets/mediatek/mt8791/openwrt-mediatek-mt8791-squashfs-sysupgrade.bin5. 固件烧录
使用联发科SP Flash Tool烧录(替代安卓系统):
- 打开SP Flash Tool,选择MT8791的Scatter文件(包含OpenWRT分区表);
- 选择编译好的OpenWRT固件,映射到
system分区(替换安卓的system分区); - 硬件进入刷机模式(断电→按住刷机键→插USB),点击“Download”烧录;
- 烧录完成后重启,OpenWRT自动启动(无安卓加载)。
三、OpenWRT系统配置(5G功能启用)
1. 5G拨号配置(核心)
(1)识别5G模组
# 确认5G模组被识别lsusb|grepMediaTek# 应显示MT6285设备# 加载5G驱动insmod /lib/modules/$(uname-r)/mtk_5g.ko(2)配置5G拨号(LuCI界面/命令行)
LuCI界面(推荐):
- 登录LuCI(默认IP:192.168.1.1,账号密码:root/admin);
- 网络 → 接口 → 添加新接口,协议选择“QMI Cellular”;
- 设备选择
/dev/cdc-wdm0(5G模组设备节点),APN填写运营商5G APN(如移动:cmnet,联通:3gnet); - 勾选“自动连接”,保存并应用。
命令行配置:
# 创建5G接口ucisetnetwork.5g=interface ucisetnetwork.5g.proto=qmi ucisetnetwork.5g.device=/dev/cdc-wdm0 ucisetnetwork.5g.apn=cmnet ucisetnetwork.5g.auth=none ucisetnetwork.5g.pdptype=ipv4v6 uci commit network# 启动5G接口ifup5g# 确认5G连接ifconfig5g# 应显示5G分配的IP地址2. 系统优化(轻量化,无安卓冗余)
# 禁用不必要的服务(无安卓,无需兼容)/etc/init.d/avahi-daemon disable /etc/init.d/bluetooth disable(无需蓝牙则禁用)# 优化内存(MT8791 LPDDR4X)echo"vm.swappiness=10">>/etc/sysctl.conf sysctl -p# 关闭调试日志,降低CPU占用sed-i's/debug/info/g'/etc/config/system3. 网络共享配置(可选)
若需将5G转为有线/无线共享:
- 网络 → 防火墙 → 转发规则,勾选“IP转发”;
- 配置NAT:将5G接口(wan)的流量转发到局域网接口(lan)。
四、测试验证
- 系统启动验证:重启后无安卓logo,直接进入OpenWRT命令行,LuCI界面可正常访问;
- 5G功能验证:
ping www.baidu.com -I 5g,延迟≤50ms(5G SA模式),无丢包; - 稳定性验证:连续运行72小时,5G连接不中断,CPU占用≤30%(无安卓后台进程)。
五、关键避坑点
- Bootloader解锁:MT8791原厂BL锁定,未解锁无法烧录OpenWRT,需联系厂商或使用第三方解锁工具;
- 驱动适配:5G驱动必须匹配MT8791的内核版本(OpenWRT编译时内核版本需与驱动一致);
- 分区表:需修改安卓分区表,将
system分区扩容至≥512MB(满足OpenWRT存储需求); - 电源管理:MT8791 5G功耗较高,需确保电源适配器功率≥12V/2A,避免重启。
总结
- MT8791运行OpenWRT的核心是解锁BL+移植5G驱动+适配设备树,无需依赖安卓底层;
- 优先选择联发科开源社区的OpenWRT分支,减少驱动适配工作量;
- 5G功能启用的关键是配置QMI拨号和加载mtk_5g驱动,LuCI界面可简化操作;
- 系统优化需禁用安卓相关冗余服务,确保OpenWRT轻量化、高稳定运行。
该方案完全舍弃安卓系统,仅保留OpenWRT核心,充分发挥MT8791的5G硬件能力,适合5G网关、工业路由器等场景。