07. 运行Linux-5.4+Ubuntu20

联系邮箱:li_cloud6630@qq.com

如果你有一台配置比较高的MT7981,比如你的存储是snor+emmc或者emmc,你的内存1GB。那么在双核MT7981 1.3GHz主频下,单纯运行OpenWrt有一点点亏但不多。如果可以运行Ubuntu的话,相当于硬路由软吃,既可以发挥硬路由在硬件上的优势,又可以和Ubuntu的生态结合起来,从而起到一举两得的效果。

如果觉得MT7981性能还不够,可以运行MT7986,MT7988,步骤什么的都是一样的。

然后内核的配置选项可以多开一些,把能用得到的都编译到内核镜像中去就可以,当然在openwrt中我们不一定需要这么做,但是在运行其它系统时还是尽可能的全一些,比如网络功能,比如通用的驱动等等。

内核WIFI驱动移植

移植过程中注意,尽可能的不要去改动代码里面原生的一些CONFIG选项的名称,各个模块互相有依赖,修改后容易出现编译不过或者功能不全的情况。

移植WIFI驱动CONNINFRA

从build_dir目录中复制conninfra驱动到内核代码的drivers/net/wireless/mediatek/里面,然后目录里面有很多杂质要去了。

进入目录:

plain 复制代码
$ find ./ -name "*.o" | xargs rm
$ find ./ -name "*.ko" | xargs rm
$ rm -rf .built* .con* .dep_files ipkg-aarch64_cortex-a53/ modules.order Module.symvers.tmp .pkgdir/ .prepared_be70f257b2e0b236890547576296f53a_6664517399ebbbc92a37c5bb081b5c53*
$ rm conninfra.mod*

可以了,这样清爽了很多。在conninfra目录中已经包含makefile了,这样的话,我们需要添加一个Kconfig。在上层目录中的Makefile和Kconfig也需要添加上对应目录的编译。

conninfra的Kconfig

在package/mtk/drivers/conninfra/Makefile文件中有如下描述:

plain 复制代码
define KernelPackage/conninfra/config
if PACKAGE_kmod-conninfra
	config MTK_CONNINFRA_APSOC
	bool "Conninfra APSOC Only"
	default n

if MTK_CONNINFRA_APSOC
choice
	prompt "Choose APSOC Chip"

	config MTK_CONNINFRA_APSOC_MT7986
	bool "MT7986"

	config MTK_CONNINFRA_APSOC_MT7981
	bool "MT7981"
endchoice

	config CONNINFRA_EMI_SUPPORT
	bool "EMI Support"
	default n

	config FPGA_EARLY_PORTING
	bool "Only for FPGA Stage"
	default n

	config CONNINFRA_AUTO_UP
	bool "Conninfra Up by Self"
	default n
endif
endif
endef

我们Kconfig就是从这里改过来的。按照内核的格式改动后应该是这样的:

plain 复制代码
menuconfig CONNINFRA_SUPPORT
	tristate "MediaTek Filogic MT798x WIFI CONNINFRA"
	default n

config MTK_CONNINFRA_APSOC
    tristate "Conninfra APSOC Only"
	depends on CONNINFRA_SUPPORT
	default n

if MTK_CONNINFRA_APSOC
choice
	prompt "Choose APSOC Chip"

	config MTK_CONNINFRA_APSOC_MT7986
	bool "MT7986"

	config MTK_CONNINFRA_APSOC_MT7981
	bool "MT7981"
endchoice

	config CONNINFRA_EMI_SUPPORT
	bool "EMI Support"
	default n

	config FPGA_EARLY_PORTING
	bool "Only for FPGA Stage"
	default n

	config CONNINFRA_AUTO_UP
	bool "Conninfra Up by Self"
	default n

endif #MTK_CONNINFRA_APSOC
添加编译

在上层的Kconfig和Makefile中添加编译。

内核选项使能

这样的话,在执行menuconfig的时候,可以看到已经有了这个选项,而且选项里面跟OpenWrt是一样的。按照OpenWrt来选就可以。这里一定会出现很多很多的错误。

编译conninfra

正常编译内核即可。

ERROR 1\] ring.h: No such file or directory ```plain AR drivers/net/wireless/mediatek/conninfra/built-in.a CC [M] drivers/net/wireless/mediatek/conninfra/base/ring.o drivers/net/wireless/mediatek/conninfra/base/ring.c:13:10: fatal error: ring.h: No such file or directory 13 | #include "ring.h" | ^~~~~~~~ compilation terminated. make[5]: *** [scripts/Makefile.build:262: drivers/net/wireless/mediatek/conninfra/base/ring.o] Error 1 make[4]: *** [scripts/Makefile.build:497: drivers/net/wireless/mediatek/conninfra] Error 2 make[3]: *** [scripts/Makefile.build:497: drivers/net/wireless/mediatek] Error 2 make[2]: *** [scripts/Makefile.build:497: drivers/net/wireless] Error 2 make[1]: *** [scripts/Makefile.build:497: drivers/net] Error 2 make: *** [Makefile:1750: drivers] Error 2 ``` 首先ring.h在base/include下面,找不到只能说明Makefile写的不对。我们修改的时候尽可能的以增量式的方式来适配,尽可能的不要出现大改动。 ring.h的头文件路径声明在这里: ```plain ############################################################################### # common_main ############################################################################### ccflags-y += \ -I$(SUBDIRS)/include \ -I$(SUBDIRS)/base/include \ -I$(SUBDIRS)/core/include \ -I$(SUBDIRS)/conf/include \ -I$(SUBDIRS)/platform/include ``` 这里用了一个SUBDIRS的变量,在linux中该变量是不存在的。我们在上面给它赋值。 ```plain SUBDIRS := $(abs_srctree)/drivers/net/wireless/mediatek/conninfra ``` 重新编译内核发现直接就成功了,那么看来这个模块还是很简单的就能移植上。 ```plain LD vmlinux SORTEX vmlinux SYSMAP System.map Building modules, stage 2. MODPOST 40 modules CC [M] drivers/net/wireless/mediatek/conninfra/conninfra.mod.o LD [M] drivers/net/wireless/mediatek/conninfra/conninfra.ko OBJCOPY arch/arm64/boot/Image GZIP arch/arm64/boot/Image.gz ``` ###### 编译warp 跟上面的一样,先准备好代码,复制到目录里面。上层目录的Makefile和Kconfig不再说明,按照上面的添加方式加上就行了。 然后发现已经有Kconfig了但是不全,我们不用那个。使用package/mtk/drivers/warp/config.in并且改造一下: ```plain menuconfig WARP_SUPPORT tristate "WARP Driver Support" default n if WARP_SUPPORT config WARP_VERSION int "WARP Driver HW Version Support" range 1 3 default 1 if TARGET_mediatek_mt7622 default 2 if TARGET_mediatek_mt7986 default 3 if TARGET_mediatek_mt7988 config WARP_DBG_SUPPORT bool "WARP Driver Debug Info Support" default y config WED_HW_RRO_SUPPORT bool "WED HW RRO Support" default y config MTK_MEMORY_SHRINK bool "Memory Shrink" default n config WARP_MEMORY_LEAK_DBG bool "Memory leak debug" depends on !MTK_MEMORY_SHRINK && WARP_DBG_SUPPORT default y config WARP_CHIPSET string "WARP target chipset" default mt7988 help For colgin: colgin, for panther: mt7986, for jaguar: mt7988 config WARP_WO_EMBEDDED_LOAD bool "Emebedded MCU firmware support" default n help Once enabled, firmware download flow try embedded version once externel version being invalid. endif #WARP_SUPPORT ``` ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/8c4788cdeca006442cf581bb5856649d.webp) 这样就看着跟op是一样的了。保存退出,编译一下看看。 \[ERROR 1\] fatal error: warp_cfg.h: No such file or directory 估计跟上面的错误是一样的,Makefile中添加: ```plain PKG_BUILD_DIR := $(abs_srctree)/drivers/net/wireless/mediatek/warp/ ``` 然后编译成功了,又出现错误了。 \[ERROR 2\] undefined ```plain ERROR: "warp_get_wo_emi_node" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_wo_set_apsrc_idle" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_bus_set_hw" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_fwdl_reset" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_wo_pc_lr_cr_dump" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_wo_reset" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "bus_setup" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_wed_rro_init" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_get_wo_ilm_node" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_eint_ctrl_hw" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_wdma_int_sel" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_whole_chip_wo_reset" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_fwdl_get_wo_heartbeat" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_bus_msi_set" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_get_dts_idx" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_fwdl_write_start_address" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! ERROR: "warp_get_pcie_slot" [drivers/net/wireless/mediatek/warp/mtk_warp.ko] undefined! make[1]: *** [scripts/Makefile.modpost:93: __modpost] Error 1 make: *** [Makefile:1340: modules] Error 2 ``` 应该是哪个文件没编译进去。查一下warp_get_wo_emi_node这个吧。因为我们编译的是mt7981,然后敏锐的发现在类似warp_mt7981.c文件中得到了定义。这么看的话,是这个文件没有参与编译。在Makefle中有如下描述: ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/5de4ba29cd6d53788fb6a0fc0d331c99.webp) 但是上面有: ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/c7663c9a7c1c36856d59d1113fd09e40.webp) 这里是带引号的字符串。 ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/950d44bf92f9c479e0c2d6687a4dde6e.webp) 上面的判断加上引号就可以了。 ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/807c31fff4425ccfd1f89df8f0875dca.webp) 成了。 ###### 编译mt_wifi 这个是最复杂,最难的一个。 老样子,复制过去,先处理代码。代码中没有Makefifle,Kconfig,新建这两个文件。 然后Kconfig也是按照package/mtk/drivers/mt_wifi/config.in来,不过看下面的规则,需要处理一下,把MTK_去掉。 ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/9644ef2ed54b565106023e2879ff7435.webp) 里面还有一些跟KMOD相关的,也要替换成对应的内核的CONFIG。 太长了,修改完如下所示: ```plain menuconfig MT_WIFI_SUPPORT tristate "MTK wifi AP driver" default n config SUPPORT_OPENWRT bool default y depends on MT_WIFI_SUPPORT config WIFI_DRIVER bool default y depends on MT_WIFI_SUPPORT select WIFI_MT_MAC select MT_MAC #select FIRST_IF_MT7615E #select CHIP_MT7622 #select CHIP_MT7626 #select SECOND_IF_MT7615E #select THIRD_IF_MT7615E #select CHIP_MT7615E if WIFI_DRIVER choice prompt "Choose First WiFi Interface" config FIRST_IF_NONE bool "None" config FIRST_IF_MT7615E bool "MT7615E" select WIFI_MT_MAC select MT_MAC select CHIP_MT7615E config FIRST_IF_MT7622 bool "MT7622" select WIFI_MT_MAC select MT_MAC select CHIP_MT7622 config FIRST_IF_MT7626 bool "MT7626" select WIFI_MT_MAC select MT_MAC select CHIP_MT7626 config FIRST_IF_AXE bool "MT6867" select WIFI_MT_MAC select MT_MAC select CHIP_AXE config FIRST_IF_MT7915 bool "MT7915" select WIFI_MT_MAC select MT_MAC select CHIP_MT7915 config FIRST_IF_MT7986 bool "MT7986" select WIFI_MT_MAC select MT_MAC select CHIP_MT7986 config FIRST_IF_MT7916 bool "MT7916" select WIFI_MT_MAC select MT_MAC select CHIP_MT7916 config FIRST_IF_MT7981 bool "MT7981" select WIFI_MT_MAC select MT_MAC select CHIP_MT7981 endchoice choice prompt "Choose Second WiFi Interface" config SECOND_IF_NONE bool "None" config SECOND_IF_MT7615E bool "MT7615E" select WIFI_MT_MAC select CHIP_MT7615E select MULTI_INF_SUPPORT config SECOND_IF_AXE bool "MT6867" select WIFI_MT_MAC select MT_MAC select CHIP_AXE config SECOND_IF_MT7915 bool "MT7915" select WIFI_MT_MAC select MT_MAC select CHIP_MT7915 config SECOND_IF_MT7916 bool "MT7916" select WIFI_MT_MAC select MT_MAC select CHIP_MT7916 endchoice choice prompt "Choose Third WiFi Interface" config THIRD_IF_NONE bool "None" config THIRD_IF_MT7615E bool "MT7615E" select WIFI_MT_MAC select CHIP_MT7615E select MULTI_INF_SUPPORT config THIRD_IF_MT7915 bool "MT7915" select WIFI_MT_MAC select MT_MAC select CHIP_MT7915 select MULTI_INF_SUPPORT config THIRD_IF_MT7916 bool "MT7916" select WIFI_MT_MAC select MT_MAC select CHIP_MT7916 select MULTI_INF_SUPPORT endchoice config RT_FIRST_CARD int depends on ! FIRST_IF_NONE default 7615 if FIRST_IF_MT7615E default 7622 if FIRST_IF_MT7622 default 7626 if FIRST_IF_MT7626 default 6867 if FIRST_IF_AXE config RT_SECOND_CARD int depends on ! SECOND_IF_NONE default 7615 if SECOND_IF_MT7615E default 6867 if SECOND_IF_AXE config RT_THIRD_CARD int depends on ! THIRD_IF_NONE default 7615 if THIRD_IF_MT7615E config RT_FIRST_IF_RF_OFFSET hex depends on ! FIRST_IF_NONE default 0xc0000 config RT_SECOND_IF_RF_OFFSET hex depends on ! SECOND_IF_NONE default 0xc8000 config RT_THIRD_IF_RF_OFFSET hex depends on ! THIRD_IF_NONE default 0xd0000 config MT_WIFI tristate "MT WIFI Driver" select WIFI_BASIC_FUNC if MT_WIFI config MT_WIFI_PATH string depends on MT_WIFI default "mt_wifi" if MT_WIFI choice prompt "MT_WIFI DRIVER VERSION" default MT_WIFI_DRIVER_VERSION_7672 config MT_WIFI_DRIVER_VERSION_7661 bool "7.6.6.1" config MT_WIFI_DRIVER_VERSION_7672 bool "7.6.7.2" endchoice choice prompt "MT7916 custom WACPU firmware" depends on CHIP_MT7916 default MT_WIFI_MT7916_20240823 config MT_WIFI_MT7916_DEFAULT_FIRMWARE bool "default firmware" config MT_WIFI_MT7916_20221208 bool "mt7916-fw-20221208" config MT_WIFI_MT7916_20240823 bool "mt7916-fw-20240823" endchoice choice prompt "MT7981 custom WACPU firmware" depends on CHIP_MT7981 default MT_WIFI_MT7981_20240823 config MT_WIFI_MT7981_DEFAULT_FIRMWARE bool "default firmware" config MT_WIFI_MT7981_20230306 bool "mt7981-fw-20230306" config MT_WIFI_MT7981_20230330 bool "mt7981-fw-20230330" config MT_WIFI_MT7981_20230411 bool "mt7981-fw-20230411" config MT_WIFI_MT7981_20230717 bool "mt7981-fw-20230717" config MT_WIFI_MT7981_20231024 bool "mt7981-fw-20231024" config MT_WIFI_MT7981_20240823 bool "mt7981-fw-20240823" endchoice choice prompt "MT7986 custom WACPU firmware" depends on CHIP_MT7986 default MT_WIFI_MT7986_20240823 config MT_WIFI_MT7986_DEFAULT_FIRMWARE bool "default firmware" config MT_WIFI_MT7986_20221208 bool "mt7986-fw-20221208" config MT_WIFI_MT7986_20230421 bool "mt7986-fw-20230421" config MT_WIFI_MT7986_20230808 bool "mt7986-fw-20230808" config MT_WIFI_MT7986_20231024 bool "mt7986-fw-20231024" config MT_WIFI_MT7986_20240823 bool "mt7986-fw-20240823" endchoice config MT_WIFI_FIRMWARE_PATH_MT7916 string default mt7916-fw-20221208 if MT_WIFI_MT7916_20221208 default mt7916-fw-20240823 if MT_WIFI_MT7916_20240823 config MT_WIFI_FIRMWARE_PATH_MT7981 string default mt7981-fw-20230306 if MT_WIFI_MT7981_20230306 default mt7981-fw-20230330 if MT_WIFI_MT7981_20230330 default mt7981-fw-20230411 if MT_WIFI_MT7981_20230411 default mt7981-fw-20230717 if MT_WIFI_MT7981_20230717 default mt7981-fw-20231024 if MT_WIFI_MT7981_20231024 default mt7981-fw-20240823 if MT_WIFI_MT7981_20240823 config MT_WIFI_FIRMWARE_PATH_MT7986 string default mt7986-fw-20221208 if MT_WIFI_MT7986_20221208 default mt7986-fw-20230421 if MT_WIFI_MT7986_20230421 default mt7986-fw-20230808 if MT_WIFI_MT7986_20230808 default mt7986-fw-20231024 if MT_WIFI_MT7986_20231024 default mt7986-fw-20240823 if MT_WIFI_MT7986_20240823 config FW_NEW_API_PATCH bool depends on MT_WIFI_DRIVER_VERSION_7661 default y if !(MT_WIFI_MT7981_DEFAULT_FIRMWARE || MT_WIFI_MT7986_DEFAULT_FIRMWARE) menu "WiFi Generic Feature Options" choice prompt "EEPROM Type of 1st Card" depends on ! FIRST_IF_NONE config FIRST_IF_EEPROM_FLASH bool "FLASH" config FIRST_IF_EEPROM_PROM bool "EEPROM" config FIRST_IF_EEPROM_EFUSE bool "EFUSE" endchoice config RT_FIRST_CARD_EEPROM string depends on ! FIRST_IF_NONE default "prom" if FIRST_IF_EEPROM_PROM default "efuse" if FIRST_IF_EEPROM_EFUSE default "flash" if FIRST_IF_EEPROM_FLASH choice prompt "EEPROM Type of 2nd Card" depends on ! SECOND_IF_NONE config SECOND_IF_EEPROM_FLASH bool "FLASH" config SECOND_IF_EEPROM_PROM bool "EEPROM" config SECOND_IF_EEPROM_EFUSE bool "EFUSE" endchoice config RT_SECOND_CARD_EEPROM string depends on ! SECOND_IF_NONE default "prom" if SECOND_IF_EEPROM_PROM default "efuse" if SECOND_IF_EEPROM_EFUSE default "flash" if SECOND_IF_EEPROM_FLASH choice prompt "EEPROM Type of 3th Card" depends on ! THIRD_IF_NONE config THIRD_IF_EEPROM_FLASH bool "FLASH" config THIRD_IF_EEPROM_PROM bool "EEPROM" config THIRD_IF_EEPROM_EFUSE bool "EFUSE" endchoice config RT_THIRD_CARD_EEPROM string depends on ! THIRD_IF_NONE default "prom" if THIRD_IF_EEPROM_PROM default "efuse" if THIRD_IF_EEPROM_EFUSE default "flash" if THIRD_IF_EEPROM_FLASH config MULTI_INF_SUPPORT bool default y if !FIRST_IF_NONE && !SECOND_IF_NONE config WIFI_BASIC_FUNC bool "Basic Functions" select WIRELESS_EXT select WEXT_SPY select WEXT_PRIV config DOT11_N_SUPPORT bool "802.11n support" default y config DOT11_VHT_AC bool "802.11AC support" depends on WIFI_DRIVER depends on DOT11_N_SUPPORT default y config DOT11_HE_AX bool "802.11AX support" depends on WIFI_DRIVER depends on DOT11_VHT_AC depends on CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981 default y config CFG_SUPPORT_FALCON_MURU bool "MURU support" depends on WIFI_DRIVER depends on DOT11_VHT_AC depends on CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981 default y config CFG_SUPPORT_FALCON_TXCMD_DBG bool "TXCMD DBG support" depends on WIFI_DRIVER depends on DOT11_VHT_AC depends on CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981 default y config CFG_SUPPORT_FALCON_SR bool "SR(Spatial Reuse) support" depends on WIFI_DRIVER depends on CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981 default y config CFG_SUPPORT_FALCON_PP bool "PP(Preamble Puncture) support" depends on WIFI_DRIVER depends on CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981 default y config WIFI_TWT_SUPPORT bool "TWT(Target Wake Time) support" depends on WIFI_DRIVER depends on DOT11_HE_AX depends on CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981 default y config G_BAND_256QAM_SUPPORT bool "2.4G 256QAM support" depends on WIFI_DRIVER depends on DOT11_VHT_AC default y config BRCM_256QAM_SUPPORT bool "BRCM 2.4G 256QAM support" depends on WIFI_DRIVER depends on G_BAND_256QAM_SUPPORT default n config VHT_TXBF_2G_EPIGRAM_IE_SUPPORT bool "BRCM 2.4G VHT Sounding support" depends on WIFI_DRIVER default n config TPC_SUPPORT bool "802.11h TPC Support" depends on WIFI_DRIVER default y config ICAP_SUPPORT bool "ICAP Support" depends on WIFI_DRIVER depends on MT_AP_SUPPORT default y config SPECTRUM_SUPPORT bool "Wifi Spectrum Support" depends on WIFI_DRIVER depends on MT_AP_SUPPORT default y config PHY_ICS_SUPPORT bool "PHY ICS Support" depends on WIFI_DRIVER depends on CHIP_MT7986 || CHIP_MT7916 default y config BACKGROUND_SCAN_SUPPORT bool "Background Scan Support" depends on WIFI_DRIVER default y config SMART_CARRIER_SENSE_SUPPORT bool "Smart Carrier Sense Support" depends on WIFI_DRIVER default y config THERMAL_PROTECT_SUPPORT bool "THERMAL PROTECT SUPPORT" depends on WIFI_DRIVER && SMART_CARRIER_SENSE_SUPPORT default n config SCS_FW_OFFLOAD bool "SCS FW OFFLOAD Support" depends on WIFI_DRIVER && SMART_CARRIER_SENSE_SUPPORT default n config MT_DFS_SUPPORT bool "Dynamic Frequency Selection Support" depends on WIFI_DRIVER default y config OFFCHANNEL_SCAN_FEATURE bool "Channel Quality Monitor" depends on WIFI_DRIVER depends on MT_AP_SUPPORT default n #config WFA_VHT_R2_PF # bool "WFA VHT R2 Plugfest" # depends on DOT11_VHT_AC # default n config HDR_TRANS_TX_SUPPORT bool "Tx Header Translation" depends on CHIP_MT7615E || CHIP_MT7622 || CHIP_MT7626 || CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981 default y config HDR_TRANS_RX_SUPPORT bool "Rx Header Translation" depends on CHIP_MT7615E || CHIP_MT7622 || CHIP_MT7626 || CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981 default y config DBDC_MODE bool "dbdc mode support" depends on CHIP_MT7615E || CHIP_MT7626 || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981 select MULTI_PROFILE_SUPPORT select DEFAULT_5G_PROFILE default y config MULTI_PROFILE_SUPPORT bool "Multi Profile Support" depends on DBDC_MODE default y config DEFAULT_5G_PROFILE bool "5G default profile for DBDC" depends on DBDC_MODE # depends on MULTI_PROFILE_SUPPORT default y config WSC_INCLUDED bool "WSC (WiFi Simple Config)" depends on WIFI_DRIVER depends on MT_AP_SUPPORT || MT_STA_SUPPORT default y config WSC_V2_SUPPORT bool "WSC V2(WiFi Simple Config Version 2.0)" depends on WIFI_DRIVER depends on MT_AP_SUPPORT || MT_STA_SUPPORT default y config DOT11W_PMF_SUPPORT bool "PMF" depends on WIFI_DRIVER depends on MT_AP_SUPPORT || MT_STA_SUPPORT default y config TXBF_SUPPORT bool "Tx Bean Forming Support" depends on WIFI_DRIVER default y config FAST_NAT_SUPPORT bool "Fast-NAT support" # depends on RA_HW_NAT_WIFI default n config WHNAT_SUPPORT tristate "Wifi Hardware NAT support" depends on CHIP_MT7615E || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981 depends on WLAN_HOOK depends on FAST_NAT_SUPPORT depends on NET_MEDIATEK_HNAT default n config WARP_V2 bool "Warp driver version 2 support" depends on WARP_SUPPORT && WHNAT_SUPPORT default n config WIFI_SKB_USES_SLAB bool "WiFi SKB allocation by SLAB" depends on WIFI_DRIVER default n #config LLTD_SUPPORT # bool "LLTD (Link Layer Topology Discovery Protocol)" # depends on WIFI_DRIVER # depends on MT_AP_SUPPORT # default n #config QOS_DLS_SUPPORT # bool "802.11e DLS ((Direct-Link Setup) Support" # depends on WIFI_DRIVER # depends on MT_AP_SUPPORT # default n #config WAPI_SUPPORT # bool "WAPI Support" # depends on WIFI_DRIVER # default n config FTM_SUPPORT bool "FTM Support" depends on WIFI_DRIVER select PASSPOINT_R2 default n #config CARRIER_DETECTION_SUPPORT # bool "Carrier Detect" # depends on WIFI_DRIVER # default n config IGMP_SNOOP_SUPPORT bool "IGMP snooping" depends on WIFI_DRIVER depends on MT_AP_SUPPORT default y config MEMORY_SHRINK bool "Memory Shrink" depends on WIFI_DRIVER default n config MEMORY_SHRINK_AGGRESS bool "Memory Shrink Aggressive" depends on MEMORY_SHRINK default n config RPS_EFFICIENCY bool "RPS Efficiency" depends on WIFI_DRIVER && CHIP_MT7626 default n #config BLOCK_NET_IF # bool "NETIF Block" # depends on WIFI_DRIVER # depends on MT_AP_SUPPORT # default n # help # Support Net interface block while Tx-Sw queue full #config RATE_ADAPTION # bool "New Rate Adaptation support" # depends on WIFI_DRIVER # default y #config NEW_RATE_ADAPT_SUPPORT # bool "Intelligent Rate Adaption" # depends on WIFI_DRIVER && RATE_ADAPTION # default y #config AGS_SUPPORT # bool "Adaptive Group Switching" # depends on WIFI_DRIVER && RATE_ADAPTION # depends on MT_AP_SUPPORT || MT_STA_SUPPORT # default n #config RATE_ADAPT_AGBS_SUPPORT # bool "Adaptive AGBS Mode" # depends on WIFI_DRIVER && RATE_ADAPTION # depends on MT_AP_SUPPORT || MT_STA_SUPPORT # default y #config IDS_SUPPORT # bool "IDS (Intrusion Detection System) Support" # depends on WIFI_DRIVER # depends on MT_AP_SUPPORT # default n #config WIFI_WORK_QUEUE # bool "Work Queue" # depends on WIFI_DRIVER # default n #config WIFI_SKB_RECYCLE # bool "SKB Recycle(Linux)" # depends on WIFI_DRIVER # depends on MT_AP_SUPPORT # default n config RTMP_FLASH_SUPPORT bool "Flash Support" depends on WIFI_DRIVER default y config PRE_CAL_TRX_SET1_SUPPORT bool "Calibration To Flash/BinFile Support" depends on WIFI_DRIVER default y config RLM_CAL_CACHE_SUPPORT bool "RlmCalibrationCache Support" depends on WIFI_DRIVER default y config PRE_CAL_TRX_SET2_SUPPORT bool "Pre-calibration to Flash Support" depends on WIFI_DRIVER default y config CAL_BIN_FILE_SUPPORT bool "Calibration to BinFile Support" depends on WIFI_DRIVER default y config RF_LOCKDOWN_SUPPORT bool "RF Lockdown Support" depends on WIFI_DRIVER default n config LINK_TEST_SUPPORT bool "Link Test Support" depends on WIFI_DRIVER default n #config LED_CONTROL_SUPPORT # bool "LED Support" # depends on WIFI_DRIVER # depends on MT_AP_SUPPORT # default n config ATE_SUPPORT bool "ATE/QA Support" depends on WIFI_DRIVER default y config WLAN_SERVICE bool "Wlan Service Library Support" depends on WIFI_DRIVER default n #config MEMORY_OPTIMIZATION # bool "Memory Optimization" # depends on WIFI_DRIVER # default n config PASSPOINT_R2 bool "Passpoint Release-2 Support" depends on WIFI_DRIVER select DOT11W_PMF_SUPPORT depends on MT_AP_SUPPORT default n config MBO_SUPPORT bool "MBO Support" depends on WIFI_DRIVER select INTERWORKING select WNM_SUPPORT select DOT11K_RRM_SUPPORT select DOT11R_FT_SUPPORT select DOT11W_PMF_SUPPORT default n config OCE_SUPPORT bool "Optimized Connectivity Experience Support" depends on MT_AP_SUPPORT depends on MBO_SUPPORT depends on CHIP_MT7915 || CHIP_MT7986 default y config WTBL_TDD_SUPPORT bool "S/W WTBL TDD SWAP Support" depends on WIFI_DRIVER depends on MT_AP_SUPPORT depends on CHIP_MT7915 || CHIP_MT7916 || CHIP_MT7986 || CHIP_MT7981 default n config SW_CONNECT_SUPPORT bool "Pure S/W STA Increase Connection Support" depends on WIFI_DRIVER depends on MT_AP_SUPPORT depends on CHIP_MT7915 || CHIP_MT7916 || CHIP_MT7986 || CHIP_MT7981 default n config MAP_SUPPORT bool "MAP Support" depends on WIFI_DRIVER select INTERWORKING select WNM_SUPPORT select DOT11K_RRM_SUPPORT select DOT11R_FT_SUPPORT select DOT11W_PMF_SUPPORT default n config MAP_R2_VER_SUPPORT bool "Multi-AP R2 version support" depends on MAP_SUPPORT default n config MAP_R3_VER_SUPPORT bool "Multi-AP R3 version support" depends on MAP_SUPPORT depends on MAP_R2_VER_SUPPORT default n config MAP_R2_6E_SUPPORT bool "Multi-AP R2 6E support" depends on MAP_SUPPORT default n config MAP_R3_6E_SUPPORT bool "Multi-AP R3 6E support" depends on MAP_SUPPORT depends on MAP_R2_6E_SUPPORT default n #config TRACE_TCP_PKT # bool "TCP DATA/ACK packets trace log" # depends on WIFI_DRIVER # default n config UAPSD bool "UAPSD support" depends on WIFI_DRIVER depends on MT_AP_SUPPORT || MT_STA_SUPPORT default y config TCP_RACK_SUPPORT bool "TCP Reduced ACK support" depends on WIFI_DRIVER default n #### PA_LNA_Type choice config RED_SUPPORT bool "RED(Random Early Drop) support" depends on WIFI_DRIVER depends on MT_AP_SUPPORT || MT_STA_SUPPORT default y config FQ_SCH_SUPPORT bool "Fair Queueing support" depends on WIFI_DRIVER depends on MT_AP_SUPPORT && VOW_SUPPORT depends on CHIP_MT7622 default y config CTXD_MEM_CPY_SUPPORT bool "CTXD(sw mode) support" depends on WIFI_DRIVER default n config CTXD_SCATTER_AND_GATHER_SUPPORT bool "CTXD(hw mode) support" depends on WIFI_DRIVER default n config FDB_SUPPORT bool "FW Debug Port" depends on WIFI_DRIVER default n choice prompt "PA LNA Type of 1st Card" depends on ! FIRST_IF_NONE config FIRST_IF_EPAELNA bool "ePAeLNA" config FIRST_IF_IPAILNA bool "iPAiLNA" config FIRST_IF_IPAELNA bool "iPAeLNA" # config FIRST_IF_EPAILNA # bool "ePAiLNA" endchoice choice prompt "PA LNA Type of 2nd Card" depends on ! SECOND_IF_NONE config SECOND_IF_EPAELNA bool "ePAeLNA" config SECOND_IF_IPAILNA bool "iPAiLNA" config SECOND_IF_IPAELNA bool "iPAeLNA" # config SECOND_IF_EPAILNA # bool "ePAiLNA" endchoice choice prompt "PA LNA Type of 3rd Card" depends on ! THIRD_IF_NONE config THIRD_IF_EPAELNA bool "ePAeLNA" config THIRD_IF_IPAILNA bool "iPAiLNA" config THIRD_IF_IPAELNA bool "iPAeLNA" # config THIRD_IF_EPAILNA # bool "ePAiLNA" endchoice #### PA_LNA_Type choice END config WIFI_FW_BIN_LOAD depends on CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981 bool "load wifi fw with bin file" default n config WIFI_SKU_TYPE depends on CHIP_MT7986 string "Panther SKU Type : AX6000 or AX7800 or SADBDC" default "AX6000" config WIFI_ADIE_TYPE depends on CHIP_MT7986 string "Panther ADIE Type : mt7975 or mt7976" default "mt7976" # # Section for chip architectures # # "RLT MAC Support" config RLT_MAC bool depends on WIFI_DRIVER default n config RLT_BBP bool config RLT_RF bool # "RTMP MAC Support" config RTMP_MAC bool depends on WIFI_DRIVER default n config RTMP_BBP bool config RTMP_RF bool # # Section for interfaces # config RTMP_PCI_SUPPORT bool config RTMP_USB_SUPPORT bool config RTMP_RBUS_SUPPORT bool endmenu menu "WiFi Operation Modes" choice prompt "Main Mode" default WIFI_MODE_AP config WIFI_MODE_AP tristate "AP" select MT_AP_SUPPORT config WIFI_MODE_STA tristate "STA" select MT_STA_SUPPORT config WIFI_MODE_BOTH tristate "APSTA" select MT_AP_SUPPORT select MT_STA_SUPPORT endchoice config MT_AP_SUPPORT tristate "Ralink RT2860 802.11n AP support" # depends on NET_RADIO select WIRELESS_EXT select WEXT_SPY select WEXT_PRIV config WDS_SUPPORT bool "WDS" depends on MT_AP_SUPPORT default y config MBSS_SUPPORT bool "MBSSID" depends on MT_AP_SUPPORT default y #config NEW_MBSSID_MODE # bool "New MBSSID MODE" # depends on MT_AP_SUPPORT && MBSS_SUPPORT # depends on RALINK_RT3883 || RALINK_RT3352 || RALINK_RT5350 || RALINK_RT6352 || RALINK_MT7620 # default y #config ENHANCE_NEW_MBSSID_MODE # bool "Enhanced MBSSID mode" # depends on NEW_MBSSID_MODE # default y config APCLI_SUPPORT bool "AP-Client Support" depends on MT_AP_SUPPORT default y config APCLI_CERT_SUPPORT bool "AP-Client TGn Cert Support" depends on MT_AP_SUPPORT depends on APCLI_SUPPORT default n config MAC_REPEATER_SUPPORT bool "MAC Repeater Support" depends on MT_AP_SUPPORT depends on APCLI_SUPPORT depends on RALINK_RT6352 || RALINK_MT7620 || RALINK_MT7603E || MT_AP_SUPPORT default y config APCLI_CONNECTION_TRIAL bool "Trial Connection" depends on MT_AP_SUPPORT depends on APCLI_SUPPORT default n config MWDS bool "Mixed WDS(MWDS)" depends on MT_AP_SUPPORT select APCLI_SUPPORT default n config WIFI_SYSDVT bool "Wifi System DVT tool Support" depends on MT_AP_SUPPORT default n config MUMIMO_SUPPORT bool "MU-MIMO Support" depends on WIFI_DRIVER select MU_RA_SUPPORT default y config MU_RA_SUPPORT bool "MU-RGA Support" depends on MUMIMO_SUPPORT config DOT11R_FT_SUPPORT bool "802.11r Fast BSS Transition" depends on MT_AP_SUPPORT default n config DOT11K_RRM_SUPPORT bool "802.11k Radio Resource Management" depends on MT_AP_SUPPORT default n config ENTERPRISE_AP_SUPPORT bool "Enterprise AP Support" depends on MT_AP_SUPPORT default n config MLME_MULTI_QUEUE_SUPPORT bool "Mlme MultiQueue Support" depends on MT_AP_SUPPORT default n config WIFI_EAP_FEATURE bool "EAP Feature" depends on WIFI_DRIVER default y #VLAN config VLAN_SUPPORT bool "VLAN Support" depends on MT_AP_SUPPORT depends on WIFI_EAP_FEATURE default n #Sniffer config SNIFFER_SUPPORT bool "SNIFFER" depends on MT_AP_SUPPORT depends on WIFI_EAP_FEATURE default n #Highpriority frame rate specific config HIGHPRI_RATE_SPECIFIC bool "Highpriority frame rate specific" depends on MT_AP_SUPPORT depends on WIFI_EAP_FEATURE default n config SNIFFER_RADIOTAP_SUPPORT bool "SNIFFER_RADIOTAP" default y config WF_RESET_SUPPORT bool "WIFI RESET" default n #TxRx Statistic config TXRX_STAT_SUPPORT bool "TxRx Stats Support" depends on WIFI_DRIVER && WIFI_EAP_FEATURE default n #Antenna control config ANTENNA_CONTROL_SUPPORT bool "Antenna Control" depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE default n #Mgmt Tx Power config MGMT_TXPWR_CTRL bool "Mgmt TxPower Control" depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE default n #TxD based Mgmt Tx Power config TXD_MGMT_TXPWR_CTRL bool "TxD based Mgmt TxPower Control" depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE default n #Channel Utilization config CHUTIL_SUPPORT bool "Channel Utilization Support" depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE default n #Noise Floor config NF_SUPPORT bool "Noise Floor Support" depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE default n #RA_PHY_RATE config RA_PHY_RATE_SUPPORT bool "RA PHY RATE Support" depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE default n #AMPDU Config config AMPDU_CONF_SUPPORT bool "AMPDU Config retry & agglimitSupport" depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE default n #ACK CTS Timeout config ACK_CTS_TIMEOUT_SUPPORT bool "ACK CTS Timeout cck & ofdm Support" depends on MT_AP_SUPPORT && WIFI_EAP_FEATURE default n #MBSS_DTIM_SUPPORT config MBSS_DTIM_SUPPORT bool "MBSS DTIM SUPPORT" depends on MT_AP_SUPPORT default n config RADIUS_MAC_AUTH_SUPPORT bool "RADIUS MAC Auth Support" depends on ENTERPRISE_AP_SUPPORT depends on CFG80211_SUPPORT default n config ZERO_LOSS_CSA_SUPPORT bool "Zero Loss CSA Support" depends on MT_AP_SUPPORT default n config DYNAMIC_VLAN_SUPPORT bool "Dynamic VLAN Support" depends on MT_AP_SUPPORT depends on ENTERPRISE_AP_SUPPORT default n config CFG80211_SUPPORT bool "CFG80211" depends on MT_AP_SUPPORT default n config IAP_VENDOR1_FEATURE_SUPPORT bool "IAP Vendor1 Feature enable" depends on ENTERPRISE_AP_SUPPORT default n #CUSTOMISED HOSTAPD config CUSTOMISED_HOSTAPD_SUPPORT bool "Customised Hostapd Support" depends on MT_AP_SUPPORT depends on CFG80211_SUPPORT default n #HOSTAPD_MAP_SUPPORT config HOSTAPD_MAP_SUPPORT bool "Hostapd MAP Support" depends on MT_AP_SUPPORT depends on CFG80211_SUPPORT default n #HOSTAPD_WAPP_SUPPORT config HOSTAPD_WAPP_SUPPORT bool "Hostapd WAPP Support" depends on MT_AP_SUPPORT depends on CFG80211_SUPPORT default n #HOSTAPD_WPA3_SUPPORT config HOSTAPD_WPA3_SUPPORT bool "Hostapd WPA3 Support" depends on MT_AP_SUPPORT depends on CFG80211_SUPPORT default n #HOSTAPD_WPA3R3_SUPPORT config HOSTAPD_WPA3R3_SUPPORT bool "Hostapd WPA3R3 Support" depends on HOSTAPD_WPA3_SUPPORT default n #DBDC_ONE_BAND_SUPPORT config DBDC_ONE_BAND_SUPPORT bool "Single Band DBDC Support" depends on MT_AP_SUPPORT default n #APCLI STA config APCLI_STA_SUPPORT bool "APCLI Supplicant Support" depends on APCLI_SUPPORT depends on CFG80211_SUPPORT default n #WDS STA config WDS_STA_SUPPORT bool "WDS STA Support" depends on APCLI_SUPPORT depends on CFG80211_SUPPORT default n #WDS AP config MBSS_AS_WDS_AP_SUPPORT bool "MBSS AS WDS AP Support" depends on MT_AP_SUPPORT depends on MBSS_SUPPORT default n config DSCP_QOS_MAP_SUPPORT bool "Dscp Qos Mapping Support" depends on MT_AP_SUPPORT default n config QOS_R1_SUPPORT bool "MTK QoS R1 support" default n config DSCP_PRI_SUPPORT bool "Dscp Priority Mapping Support" depends on MT_AP_SUPPORT default n config MIN_PHY_RATE_SUPPORT bool "Minimum PHY rate support" depends on MT_AP_SUPPORT default n config FAST_UP_RATE_SUPPORT bool "Fast UP rate support" depends on MT_AP_SUPPORT default n config CON_WPS_SUPPORT bool "Concurrent WPS Support" depends on MT_AP_SUPPORT depends on APCLI_SUPPORT depends on WSC_INCLUDED depends on WSC_V2_SUPPORT # depends on MULTI_INF_SUPPORT default n #config LLTD_SUPPORT # bool "LLTD (Link Layer Topology Discovery Protocol)" # depends on MT_AP_SUPPORT #config COC_SUPPORT # bool "CoC Support" # depends on MT_AP_SUPPORT # default n #config RT2860V2_SNMP # bool "Net-SNMP Support" # depends on MT_AP_SUPPORT config MCAST_RATE_SPECIFIC bool "User specific tx rate of mcast pkt" depends on MT_AP_SUPPORT default y #config EXT_BUILD_CHANNEL_LIST # bool "Extension Channel List" # depends on MT_AP_SUPPORT #config AUTO_CH_SELECT_ENHANCE # bool "Auto Channel Selection Enhancement" # depends on MT_AP_SUPPORT config VOW_SUPPORT bool "MediaAir(VOW) support" depends on MT_AP_SUPPORT default y #config AIRPLAY_SUPPORT # bool "AIRPLAY Support" # depends on MT_AP_SUPPORT # default n config BAND_STEERING bool "Band Steering" depends on MT_AP_SUPPORT default y config LED_CONTROL_SUPPORT bool "LED Control Support" default n config WLAN_HOOK bool "WLAN hook Support" depends on WIFI_DRIVER default n config RADIUS_ACCOUNTING_SUPPORT bool "Radius Accounting Support" depends on MT_AP_SUPPORT default n config GREENAP_SUPPORT bool "GreenAP Support" depends on MT_AP_SUPPORT default y config WIFI_CSI_CN_INFO_SUPPORT bool "CSI CN Info Support" depends on WIFI_DRIVER depends on MT_AP_SUPPORT default n config 6G_AFC_SUPPORT bool "6G Band AFC Support" depends on WIFI_DRIVER depends on MT_AP_SUPPORT default n config DFS_SLAVE_SUPPORT bool "DFS-Slave Support" depends on WIFI_DRIVER depends on MT_AP_SUPPORT default n config VENDOR_FEATURE11_SUPPORT bool "Vendor11 Feature Enable" depends on WIFI_DRIVER depends on MT_AP_SUPPORT default n config PCIE_ASPM_DYM_CTRL_SUPPORT bool "Pcie Aspm Dynamic Control Support" depends on MT_AP_SUPPORT default y config COEX_SUPPORT bool "Coex Support" depends on MT_AP_SUPPORT default n config EASY_SETUP_SUPPORT bool "Whole Home Coverage - Easy Setup" depends on MT_AP_SUPPORT default n config EVENT_NOTIFIER_SUPPORT bool "Whole Home Coverage - Event Notifier" depends on MT_AP_SUPPORT default n config AIR_MONITOR bool "Air Monitor" depends on MT_AP_SUPPORT default n config WNM_SUPPORT bool "802.11v WNM Support" depends on MT_AP_SUPPORT default n config INTERWORKING bool "802.11u Interworking" depends on MT_AP_SUPPORT default n #config ROAMING_ENHANCE_SUPPORT # bool "Roaming Enhance Support" # depends on MT_AP_SUPPORT # depends on APCLI_SUPPORT # default n config LINUX_NET_TXQ_SUPPORT bool "NET TX Queue Support" default n #config WIFI_FWD_SUPPORT # bool "WiFi Forwarding Support" # default n config WPA3_SUPPORT bool "WPA3 Support" depends on MT_AP_SUPPORT default n config OWE_SUPPORT bool "Enhanced Open Support" depends on MT_AP_SUPPORT default n config SINGLE_SKU bool "Single SKU Support" depends on MT_AP_SUPPORT default n config PROFILING_SUPPORT bool "WIFI Profiling Support" default n config 6G_SUPPORT bool "WIFI 6G Support" default n help Supporting 6GHz Wi-Fi config BSSMGR_CROSS_MODULE_SUPPORT bool "WIFI 6G BSS Manager Cross Module Support" depends on 6G_SUPPORT default n help Supporting 6GHz Wi-Fi BSS Manager Cross Module endmenu endif config WIFI_MT_MAC bool default y depends on MT_WIFI if WIFI_RLT_MAC config RLT_MAC bool default y endif if WIFI_RTMP_MAC config RTMP_MAC bool default y endif if WIFI_MT_MAC config MT_MAC bool default y config CHIP_MT7603E bool default n config CHIP_MT7615E bool default n config CHIP_MT7622 bool default n config CHIP_MT7663E bool default n config CHIP_MT7626 bool default n config CHIP_AXE bool default n config CHIP_MT7915 bool default n config CHIP_MT7986 bool default n config CHIP_MT7916 bool default n config CHIP_MT7981 bool default n endif if CHIP_MT7615E || CHIP_MT7622 || CHIP_MT7626 || CHIP_AXE || CHIP_MT7915 || CHIP_MT7986 || CHIP_MT7916 || CHIP_MT7981 config MT_MAC bool default y select RATE_ADAPTION select RATE_ADAPT_AGBS_SUPPORT select DOT11_N_SUPPORT select DOT11_VHT_AC select HDR_TRANS_TX_SUPPORT select HDR_TRANS_RX_SUPPORT endif endif #WIFI_DRIVER# ``` 然后添加Makefile的内容: ```plain obj-$(CONFIG_MT_WIFI_SUPPORT) += mt_wifi_ap/ ``` 上层编译目录模仿之前的添加即可,不再列举。 然后对照着openwrt把选项选中,一定要认真,选项太多了。 ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/81b2eaf99fbb698c54d8c3a5663129dd.webp) 后面太多了不列举了。选好后开始编译。 ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/a418bca190a249c561c154e21cac7371.webp) 好了,编译完成了。 ##### 生成模块 执行命令生成内核镜像: ```plain $ mkimage -f mt798x-kernel.its vmlinuz-dtb.img ``` 执行安装模块命令,等待备用。 ```plain $ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=`pwd`/build-modules/ ``` 后面等我们做完文件系统后,再把目录里面的驱动加到系统里面去。 #### Ubuntu文件系统制作 首先安装以下包 ```plain sudo apt-get install qemu qemu-user-static debootstrap ``` ##### 制作基础文件系统 新建个目录,就叫arm64_ubuntu20吧。然后进入目录,执行: ```plain $ sudo debootstrap --arch arm64 focal . https://mirrors.aliyun.com/ubuntu-ports/ ``` 运行完成后,chroot到目录,再安装一些其它必须包: ```plain $ sudo chroot . # apt-get install systemd systemd-sysv udev wget net-tools iputils-ping isc-dhcp-client libxml2-dev libnl-genl-3-dev libreadline-dev libtinfo-dev sudo vim apt-utils ``` CTRL+D退出。 ##### 准备固件和配置 然后把配置和固件拷贝过来: ```plain $ sudo cp -rf ../../mt798x-workspace/openwrt/build_dir/target-aarch64_cortex-a53_musl/root.orig-mediatek/etc/wireless/ etc/ $ sudo cp -rf ../../mt798x-workspace/openwrt/build_dir/target-aarch64_cortex-a53_musl/root.orig-mediatek/lib/firmware/ lib/ ``` ##### 安装内核及驱动 然后再把我们刚才编译的驱动和内核镜像拷贝过来: ```plain $ sudo cp ../../mt798x-workspace/mt798x-linux/linux-5.4.281/vmlinuz-dtb.img ./ $ sudo cp -rf ../../mt798x-workspace/mt798x-linux/linux-5.4.281/build-modules/lib/modules/ lib/ ``` 这样一个完整的文件系统就做好了。 ```plain $ ls bin boot dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var vmlinuz-dtb.img ``` ##### 修改密码 然后还有个最关键的一步,继续chroot到系统,然后执行: ```plain # passwd root New password: Retype new password: passwd: password updated successfully ``` 密码自己设置。 #### 制作能挂载EMMC的引导固件 现在我们既然使用了spi-nor+emmc的这种方式,传统的spi-nor的固件无法满足我们的要求,那么这时候我们需要重新定制固件。因为FIP分区大小有改变,也无法在Uboot烧写,所以后面烧写第一次是在ram中烧写的,或者去救援模式烧写。后面直接在uboot中更新即可。 ##### 制作固件 在u-boot下新建配置文件mt7981_spim_nor_emmc_rfb_defconfig,然后内容如下: ```plain CONFIG_ARM=y CONFIG_SYS_HAS_NONCACHED_MEMORY=y CONFIG_POSITION_INDEPENDENT=y CONFIG_ARCH_MEDIATEK=y CONFIG_TEXT_BASE=0x41e00000 CONFIG_SYS_MALLOC_F_LEN=0x4000 CONFIG_NR_DRAM_BANKS=1 CONFIG_ENV_SIZE=0x10000 CONFIG_ENV_OFFSET=0x0 CONFIG_DEFAULT_DEVICE_TREE="mt7981-spim-nor-emmc-rfb" CONFIG_SYS_PROMPT="MT7981> " CONFIG_TARGET_MT7981=y CONFIG_DEBUG_UART_BASE=0x11002000 CONFIG_DEBUG_UART_CLOCK=40000000 CONFIG_SYS_LOAD_ADDR=0x46000000 CONFIG_PCI=y CONFIG_DEBUG_UART=y CONFIG_MEDIATEK_BOOTMENU=y CONFIG_MTK_UPGRADE_BL2_VERIFY=y CONFIG_MTK_UPGRADE_FIP_VERIFY=y CONFIG_AUTOBOOT_MENU_SHOW=y CONFIG_AUTOBOOT_MENU_MTK_SHOW=y CONFIG_DEFAULT_FDT_FILE="mt7981-spim-nor-emmc-rfb" CONFIG_LOGLEVEL=7 CONFIG_LOG=y CONFIG_SYS_CBSIZE=512 CONFIG_SYS_PBSIZE=1049 # CONFIG_BOOTM_NETBSD is not set # CONFIG_BOOTM_PLAN9 is not set # CONFIG_BOOTM_RTEMS is not set # CONFIG_BOOTM_VXWORKS is not set # CONFIG_CMD_ELF is not set # CONFIG_CMD_UNLZ4 is not set # CONFIG_CMD_UNZIP is not set # CONFIG_CMD_FLASH is not set CONFIG_CMD_GPIO=y CONFIG_CMD_PWM=y CONFIG_CMD_MTD=y CONFIG_CMD_PCI=y CONFIG_CMD_SF_TEST=y CONFIG_CMD_PING=y CONFIG_MTDIDS_DEFAULT="nor0=nor0" CONFIG_MTDPARTS_DEFAULT="nor0:256k(bl2),64k(u-boot-env),704k(factory),2048k(fip)" CONFIG_ENV_OVERWRITE=y CONFIG_ENV_IS_IN_MTD=y CONFIG_ENV_MTD_NAME="u-boot-env" CONFIG_ENV_SIZE_REDUND=0x10000 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_NET_RANDOM_ETHADDR=y CONFIG_USE_IPADDR=y CONFIG_IPADDR="192.168.1.1" CONFIG_USE_NETMASK=y CONFIG_NETMASK="255.255.255.0" CONFIG_USE_SERVERIP=y CONFIG_SERVERIP="192.168.1.2" CONFIG_PROT_TCP=y CONFIG_REGMAP=y CONFIG_SYSCON=y CONFIG_CLK=y CONFIG_SYS_I2C_MTK=y CONFIG_CMD_GPT=y CONFIG_CMD_GPT_RENAME=y CONFIG_CMD_LSBLK=y CONFIG_MMC=y CONFIG_CMD_MMC=y CONFIG_CMD_EXT4=y CONFIG_CMD_SMC=y CONFIG_CMD_FAT=y CONFIG_CMD_FS_GENERIC=y CONFIG_PARTITION_TYPE_GUID=y CONFIG_MMC_HS200_SUPPORT=y CONFIG_MMC_MTK=y CONFIG_DM_MTD=y CONFIG_DM_SPI_FLASH=y CONFIG_SPI_FLASH_SFDP_SUPPORT=y CONFIG_SPI_FLASH_EON=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_ISSI=y CONFIG_SPI_FLASH_MACRONIX=y CONFIG_SPI_FLASH_SPANSION=y CONFIG_SPI_FLASH_STMICRO=y CONFIG_SPI_FLASH_WINBOND=y CONFIG_SPI_FLASH_XMC=y CONFIG_SPI_FLASH_XTX=y CONFIG_SPI_FLASH_MTD=y CONFIG_PHY_FIXED=y CONFIG_MEDIATEK_ETH=y CONFIG_PCIE_MEDIATEK=y CONFIG_PINCTRL=y CONFIG_PINCONF=y CONFIG_PINCTRL_MT7981=y CONFIG_POWER_DOMAIN=y CONFIG_MTK_POWER_DOMAIN=y CONFIG_DM_PWM=y CONFIG_PWM_MTK=y CONFIG_DM_SERIAL=y CONFIG_MTK_SERIAL=y CONFIG_SPI=y CONFIG_DM_SPI=y CONFIG_MTK_SPIM=y CONFIG_HEXDUMP=y CONFIG_FAT_WRITE=y CONFIG_LMB_MAX_REGIONS=64 ``` 然后新建设备树mt7981-spim-nor-emmc-rfb.dts,内容如下: ```plain // SPDX-License-Identifier: GPL-2.0 /* * Copyright (c) 2022 MediaTek Inc. * Author: Sam Shih */ /dts-v1/; #include "mt7981.dtsi" #include / { #address-cells = <1>; #size-cells = <1>; model = "mt7981-rfb"; compatible = "mediatek,mt7981", "mediatek,mt7981-rfb"; chosen { stdout-path = &uart0; tick-timer = &timer0; }; memory@40000000 { device_type = "memory"; reg = <0x40000000 0x10000000>; }; bl2_verify { bl2_compatible = "spim-nor"; }; }; &uart0 { status = "okay"; }; &uart1 { pinctrl-names = "default"; pinctrl-0 = <&uart1_pins>; status = "disabled"; }; ð { status = "okay"; mediatek,gmac-id = <0>; phy-mode = "2500base-x"; mediatek,switch = "mt7531"; reset-gpios = <&gpio 39 GPIO_ACTIVE_HIGH>; fixed-link { speed = <2500>; full-duplex; }; }; &pinctrl { spic_pins: spi1-pins-func-1 { mux { function = "spi"; groups = "spi1_1"; }; }; spi2_flash_pins: spi2-spi2-pins { mux { function = "spi"; groups = "spi2", "spi2_wp_hold"; }; conf-pu { pins = "SPI2_CS", "SPI2_HOLD", "SPI2_WP"; drive-strength = ; bias-pull-down = ; }; conf-pd { pins = "SPI2_CLK", "SPI2_MOSI", "SPI2_MISO"; drive-strength = ; bias-pull-down = ; }; }; uart1_pins: spi1-pins-func-3 { mux { function = "uart"; groups = "uart1_2"; }; }; /* pin15 as pwm0 */ one_pwm_pins: one-pwm-pins { mux { function = "pwm"; groups = "pwm0_1"; }; }; /* pin15 as pwm0 and pin14 as pwm1 */ two_pwm_pins: two-pwm-pins { mux { function = "pwm"; groups = "pwm0_1", "pwm1_0"; }; }; /* pin15 as pwm0, pin14 as pwm1, pin7 as pwm2 */ three_pwm_pins: three-pwm-pins { mux { function = "pwm"; groups = "pwm0_1", "pwm1_0", "pwm2"; }; }; mmc0_pins_default: mmc0default { mux { function = "flash"; groups = "emmc_45"; }; conf-cmd-dat { pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO", "SPI0_CS", "SPI0_HOLD", "SPI0_WP", "SPI1_CLK", "SPI1_MOSI", "SPI1_MISO"; input-enable; drive-strength = ; bias-pull-up = ; }; conf-clk { pins = "SPI1_CS"; drive-strength = ; bias-pull-down = ; }; conf-rst { pins = "PWM0"; drive-strength = ; bias-pull-up = ; }; }; }; &spi2 { #address-cells = <1>; #size-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&spi2_flash_pins>; status = "okay"; must_tx; enhance_timing; dma_ext; ipm_design; support_quad; tick_dly = <2>; sample_sel = <0>; spi_nor@0 { compatible = "jedec,spi-nor"; reg = <0>; spi-max-frequency = <52000000>; }; }; &pwm { pinctrl-names = "default"; pinctrl-0 = <&two_pwm_pins>; status = "okay"; }; &watchdog { status = "disabled"; }; &mmc0 { pinctrl-names = "default"; pinctrl-0 = <&mmc0_pins_default>; bus-width = <8>; max-frequency = <52000000>; cap-mmc-highspeed; cap-mmc-hw-reset; vmmc-supply = <®_3p3v>; non-removable; status = "okay"; }; ``` 然后atf的配置,我是针对gr100的,配置如下: ```plain # _PLAT_MT7622 is not set # _PLAT_MT7629 is not set _PLAT_MT7981=y # _PLAT_MT7986 is not set # _PLAT_MT7988 is not set PLAT="mt7981" _SUPPORTS_DDR4=y # _DRAM_DDR3 is not set _DRAM_DDR4=y DRAM_USE_DDR4=1 _SUPPORTS_DDR3_256MB=y _SUPPORTS_DDR3_512MB=y _SUPPORTS_DDR4_512MB=y _SUPPORTS_DDR4_1GB=y _SUPPORTS_DDR3_FREQ=y _SUPPORTS_DDR3_1866=y _SUPPORTS_DDR3_2133=y _DEFAULT_DDR3_2133=y _SUPPORTS_DRAM_DEBUG_LOG=y # # Advanced DRAM configurations # _DRAM_SIZE_AUTO=y # _DRAM_SIZE_512MB is not set # _DRAM_SIZE_1GB is not set _MT7981_BOARD_BGA=y BOARD_BGA=1 # _DRAM_DEBUG_LOG is not set # end of Advanced DRAM configurations _SUPPORTS_BOOT_DEVICE_SPIM_NAND=y _SUPPORTS_BOOT_DEVICE_EMMC_SD=y _DEFAULT_BOOT_DEVICE_SPIM_NAND=y _BOOT_DEVICE_SPI_NOR=y # _BOOT_DEVICE_SNFI_NAND is not set # _BOOT_DEVICE_SPIM_NAND is not set # _BOOT_DEVICE_EMMC is not set # _BOOT_DEVICE_SD is not set # _BOOT_DEVICE_RAM is not set # # Advanced boot device configuration # _BROM_NAND_HEADER_HSM=y _DEFAULT_NAND_NMBM=y # _ENABLE_OVERRIDE_FIP_BASE is not set # _ENABLE_OVERRIDE_FIP_SIZE is not set # end of Advanced boot device configuration BOOT_DEVICE="nor" # # Platform configurations # _SUPPORTS_EMERG_MEM_DUMP=y # _ENABLE_EMERG_MEM_DUMP is not set # _ENABLE_JTAG is not set # end of Platform configurations _BUILD_FIP=y BL33="../uboot-mtk-20230718-09eda825/u-boot.bin" # # Advanced build configurations # # _ENABLE_BL2_COMPRESS is not set # _ENABLE_FIP_COMPRESS is not set # _USE_MKIMAGE is not set # end of Advanced build configurations _SUPPORTS_AR_V2=y # _ENABLE_SBC is not set CROSS_COMPILE="/usr/bin/aarch64-linux-gnu-" # _LOG_LEVEL_NONE is not set # _LOG_LEVEL_ERROR is not set # _LOG_LEVEL_NOTICE is not set _LOG_LEVEL_WARNING=y # _LOG_LEVEL_INFO is not set # _LOG_LEVEL_VERBOSE is not set LOG_LEVEL=30 ``` 然后就可以编译出支持emmc的bl2.img和fip.bin了。 ##### 修改设备树 因为修改了snor的分区和大小,所以内核设备树这块也要相应的进行修改。 ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/9bcf78d1e63a740f63e29362b2b8758a.webp) 修改后编译出来ram镜像。 ##### 烧写固件 启动刚才编译的ram固件,然后会发现分区大小已经改过来了: ```plain $ cat /proc/mtd dev: size erasesize name mtd0: 00040000 00010000 "BL2" mtd1: 00010000 00010000 "u-boot-env" mtd2: 000b0000 00010000 "Factory" mtd3: 00200000 00010000 "FIP" ``` 所以这时候直接烧写刚才编译好的固件就可以。 ```plain $ wget http://192.168.100.166/bl2.img $ wget http://192.168.100.166/fip.bin $ flash_erase /dev/mtd0 0 0 $ flash_erase /dev/mtd3 0 0 $ flashcp -v bl2.img /dev/mtd0 $ flashcp -v fip.bin /dev/mtd3 ``` 重启,然后测试下uboot: ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/e52cda7631f33e105ff3e4b87ff1bbaa.webp) #### 烧写到设备 还记得上一节我们演示了如何加载FDT文件启动ram系统吧,现在这就派上用场了。 ##### 系统打包 这个没啥,就是把文件系统打成一个压缩包。 ```plain ``` ##### 加载ram启动 ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/9989b95e9850170a221b39788af2ffec.webp) 启动到这里就可以了。 ##### EMMC分区 其实分一个区就可以了。我之前喜欢用sfdisk分区。但是一个分区没那么个必要,直接fdisk手动分了。当然如果里面有其它分区的话,记得删除掉。 ###### 分区 ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/332aa16502c584cbf670dafe8115e773.webp) ###### 格式化 ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/e9a8de4f06be030e0d5a941ea4358756.webp) ###### 烧写系统 ```plain $ mount /dev/mmcblk0p1 /mnt/ $ cd /mnt $ wget http://192.168.100.166/arm64_ubuntu20.tar.gz $ tar zxvf arm64_ubuntu20.tar.gz -C ./ > /dev/null && sync ``` 等待命令执行结束。 #### 启动Ubuntu ##### 启动系统 因为Uboot还没有集成启动Ubuntu的选项,这时候我们手动输入命令启动。首先进入Uboot命令行,然后依此输入以下内容: ```plain > setenv bootargs console=ttyS0,115200n1 loglevel=8 earlycon=uart8250,mmio32,0x11002000 root=/dev/mmcblk0p1 noinitrd rw rootfstype=ext4 rootdelay=5 > ext4load mmc 0:1 46000000 vmlinuz-dtb.img > bootm 46000000#gr100 ``` 然后系统就跑起来了。 ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/66ffbe23533292c241085aba7fbd060e.webp) ##### 测试wifi 因为我有些工具还没有安装,所以wifi驱动没有自动加载。 比如可以装一个pciutils: ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/5e406fb57c44924b95e68d7b4c70c9c7.webp) 手动加载测试一下: ```plain # modprobe conninfra # modprobe mtk_warp # modprobe mtk_warp_proxy # modprobe mt_wifi ``` 然后ip a可以看到ra0已经出现了。 ```plain # ip link set ra0 up # ip link set rax0 up ``` 然后可以看到WIFI起来了。 ![](https://oss.xyyzone.com/jishuzhan/article/1965258527243026433/9f2f3aa39becd7a060bd994ecae44ddb.webp) 截止到此。我们在MT7981上成功的运行起来了Ubuntu20。

相关推荐
岁月如歌2298 小时前
02. MT7981设备引导程序初探
嵌入式
Hello阿尔法8 小时前
基于 NFS 的文件共享实现
linux·嵌入式
爱的si念2 天前
嵌入式ARM64 基于RK3588原生SDK添加用户配置选项./build lunch & debian
linux·debian·嵌入式
大聪明-PLUS2 天前
像 Docker 一样创建虚拟网络
linux·嵌入式·arm·smarc
Zero_Era2 天前
LKT4202UGM重新定义物联网设备安全标准
物联网·安全·嵌入式
我是海飞2 天前
外置flash提示音打包脚本
运维·服务器·音视频·嵌入式
小白嘎嘎2 天前
CAN总线学习
单片机·嵌入式硬件·嵌入式
夜月yeyue2 天前
嵌入式 Linux 启动流程详解 (以 ARM + U-Boot 为例)
linux·单片机·udp·嵌入式·uboot·bootloard
闻道且行之3 天前
嵌入式|Linux中打开视频流的两种方式V4l2和opencv
linux·笔记·opencv·嵌入式