MT7621+MT7915/MT7905+MT7975 AX1800 SDK编译:从源码到固件的完整避坑指南
1. 认识MTK AX1800方案开发环境第一次接触MT7621MT7915/MT7905MT7975这套组合方案时我对着京东云鲁班路由器拆解图研究了半天。这套方案最大的特点就是双频WiFi6蓝牙5.1的黄金组合MT7621作为老将负责路由核心MT7915/MT7905这对双胞胎负责无线部分区别就像带不带蓝牙功能的双胞胎——MT7915比MT7905多了蓝牙模块。市面上采用这套方案的设备清单能列出一长串京东云无线宝AX1800鲁班、小米CR6606/CR6609、TP-Link XDR1860等等都是性价比极高的WiFi6入门机型。开发环境准备阶段最容易踩的坑就是Linux发行版选择。我实测Ubuntu 20.04 LTS最稳定18.04会有glibc版本问题22.04又可能遇到Python兼容性问题。建议准备至少100GB的磁盘空间因为编译过程中产生的中间文件会像雪球一样越滚越大。内存最好8GB起步4GB机器编译时容易卡在并行编译环节。记得提前装好这些基础组件sudo apt update sudo apt install -y build-essential ccache ecj fastjar file g gawk \ gettext git java-propose-classpath libelf-dev libncurses5-dev \ libncursesw5-dev libssl-dev python python2.7-dev python3 unzip wget \ python3-distutils python3-setuptools rsync subversion swig time \ xsltproc zlib1g-dev2. 源码解压与初始配置实战拿到MTK官方SDK压缩包时要注意mtk-openwrt-lede-4.2.1.0-20200612-d2c8e460.tar.xz是基础系统mtk-wifi-mt7621-mt7915-20201106-AX1800-bin.tar.xz包含无线驱动。解压时建议用tar -xvf代替图形化工具避免权限问题。我遇到过最诡异的情况是解压后文件所有者变成root导致后续编译失败这时候需要暴力修正权限sudo chown -R $USER:$USER mtk-openwrt-lede-4.2.1.0复制配置文件时要特别注意路径差异。MT7915和MT7905的配置文件分别存放在autobuild/mt7621-mt7915-AP-AX1800和autobuild/mt7621-mt7905-AP-AX1800目录下。有个细节容易被忽略config-4.4文件必须复制到target/linux/ramips/mt7621/目录下覆盖原文件否则内核模块编译会出问题。执行make defconfig前建议先清理环境make clean rm -rf ./tmp3. 蓝牙模块编译故障深度排错第一次编译遇到bluedroid报错时错误日志像天书一样扑面而来。关键报错集中在几个点gn: command not found说明缺少GN构建工具ninja: command not found暴露了Ninja构建系统的缺失最要命的是Permission denied系列错误这其实是SDK设计缺陷——编译脚本错误地尝试在系统根目录创建文件。临时解决方案是在menuconfig里关闭蓝牙功能执行make menuconfig进入MTK Properties → Applications取消勾选bluedroid保存退出但要彻底解决需要修改编译脚本。找到package/mtk/applications/bluedroid/bt_others/bluetooth_tool/script/build_stack.sh将第109行的gn gen out改为完整路径/path/to/gn/bin/gn gen out。同时需要手动安装GN和Ninjagit clone https://gn.googlesource.com/gn cd gn python build/gen.py ninja -C out sudo cp out/gn /usr/local/bin/4. 无线驱动编译优化技巧MT7915的WiFi6驱动编译是个性能黑洞默认配置会编译所有调试符号。在.config文件中加入这些参数可以大幅提升编译速度CONFIG_DEBUG_INFOn CONFIG_DEBUG_FSn CONFIG_KALLSYMSn CONFIG_MTK_DEBUGn遇到fatal error: openssl/opensslv.h: No such file or directory错误时不是缺OpenSSL而是路径问题。执行这条命令创建符号链接即可sudo ln -s /usr/include/openssl /usr/include/mips-openwrt-linux/openssl对于需要频繁修改驱动参数的情况推荐使用模块化编译方式。先单独编译无线驱动make package/mtk/drivers/mt7915/compile Vs -j$(nproc)编译完成后在bin/targets/ramips/mt7621/packages/下会生成mt7915-dkms开头的ipk包可以直接opkg安装测试免去全量编译等待。