qsdk提供两种软件,私有的和开源的。私有的使用不开源的wifi驱动。开源的(open)使用ath11k驱动。各个路由器厂商使用私有的sdk。openwrt一般使用开源的wifi驱动。
下载的qsdk 12.1 r3,手册里面没有提,以为是不支持open (ath11k)的,以为是ath11.4才支持。编译ath11.4的时候,发现版本太老了,在新的发行版Fedora35上,有数不清的编译错误。gcc版本还是5.x。后面通过查看ath11.4的manifest,发现ath11k是位于qca/feeds/wlan-open。而12.1 r3也有这个目录。
ath11.4编译open的.config生成方法:
512M 32位
$ cp qca/configs/qsdk/ipq_512open.config .config
$ mv prebuilt/ipq50xx/ipq_512open/* prebuilt/ipq50xx/
$ sed -i "s/TARGET_ipq_ipq807x/TARGET_ipq_ipq50xx/g" .config
32位
$ cp qca/configs/qsdk/ipq_open.config .config
$ mv prebuilt/ipq50xx/ipq_open/* prebuilt/ipq50xx/
$ sed -i "s/TARGET_ipq_ipq806x/TARGET_ipq_ipq50xx/g" .config
64位
$ cp qca/configs/qsdk/ipq_open.config .config
$ mv prebuilt/ipq50xx_64/ipq_open/* prebuilt/ipq50xx_64/
$ sed -i "s/TARGET_ipq_ipq806x/TARGET_ipq_ipq50xx_64/g" .config
然后:
make defconfig
sed '/CONFIG_FEED_ath10k_firmware=y/d' -i .config
sed '/ath10k-firmware-qca4019=y/d' -i .config
sed '/ath10k-firmware-qca9887=y/d' -i .config
sed '/ath10k-firmware-qca9888=y/d' -i .config
sed '/ath10k-firmware-qca988x=y/d' -i .config
sed '/ath10k-firmware-qca9984=y/d' -i .config
sed '/rdk-v-wifi-ath10k=y/d' -i .config
make V=s
open配置文件主要有:
CONFIG_TARGET_ipq=y
CONFIG_TARGET_ipq_ipq50xx=y
CONFIG_TARGET_ipq_ipq50xx_QSDK_Open=y
而QSDK的配置文件有:
CONFIG_TARGET_ipq50xx=y
CONFIG_TARGET_ipq50xx_ipq50xx_32=y
CONFIG_TARGET_ipq50xx_ipq50xx_32_QSDK_256=y
在ath11.4的profile中:
target/linux/ipq/profiles/qsdk.mk
define Profile/QSDK_Open
NAME:=Qualcomm-Atheros SDK Open Profile
PACKAGES:=$(OPENWRT_STANDARD) $(SWITCH_SSDK_NOHNAT_PKGS) $(QCA_EDMA) \
$(WIFI_OPEN_PKGS) $(STORAGE) $(USB_ETHERNET) $(UTILS) $(NETWORKING) \
$(TEST_TOOLS) $(COREBSP_UTILS) $(KPI) $(SHORTCUT_FE) $(EXTRA_NETWORKING) \
$(USB_DIAG) $(FTM) $(CNSS_DIAG) qca-cnss-daemon qca-wifi-hk-fw-hw1-10.4-asic \
qrtr $(QMI_SAMPLE_APP) $(FAILSAFE) ath11k-fwtest ath11k-qdss $(MHI_QRTR) \
-lk-ipq807x -lk-ipq806x -lk-ipq6018 -lk-ipq40xx cfr_tools
endef
define Profile/QSDK_Open/Description
QSDK Open package set configuration.
Enables wifi open source packages
endef
$(eval $(call Profile,QSDK_Open))
在qsdk 12.1的target/linux目录下没有搜索到QSDK_Open,以为不支持open。实际上打开:
target/linux/ipq50xx/profiles/qsdk.mk它的内容是:
include $(TOPDIR)/qsdk-package/profiles/qsdk.mk
打开qsdk-package/profiles/qsdk.mk:
define Profile/QSDK_Open
NAME:=Qualcomm Technologies, Inc SDK Open Profile
PACKAGES:=$(OPENWRT_STANDARD) $(STORAGE) $(TEST_TOOLS) $(AUDIO) $(VIDEO) \
$(COREBSP_UTILS) -qca-thermald $(FAILSAFE) $(USB_DIAG) $(SWITCH_SSDK_NOHNAT_PKGS) \
$(FTM) $(KPI) $(UTILS) $(NETWORKING) $(EXTRA_NETWORKING) \
$(WIFI_OPEN_PKGS) $(USB_ETHERNET) $(NSS_COMMON) $(NSS_STANDARD) $(NSS_MESH) \
$(QCA_ECM_PREMIUM) $(MAP_PKGS) $(IGMPSNOOPING_RSTP) $(IPSEC) $(QOS) -lacpd \
qca-cnss-daemon qca-wifi-hk-fw-hw1-10.4-asic $(CNSS_DIAG) athdiag $(EMESH_SP) \
qrtr $(QMI_SAMPLE_APP) $(NSS_SFE) ath11k-fwtest ath11k-qdss libtirpc cfr_tools kmod-qca-ovsmgr -qca-mcs-apps
endef
# $(HW_CRYPTO) $(QCA_RFS) \
# $(AQ_PHY)
define Profile/QSDK_Open/Description
QSDK Open package set configuration.
Enables wifi open source packages
endef
$(eval $(call Profile,QSDK_Open))
因此12.1是支持open的。在qca/configs/qsdk/目录下,也有open的配置:
ipq_512open.config
ipq_open.config
12.1 32位open配置生成方法:
$ cp qca/configs/qsdk/ipq_open.config .config
$ sed -i 's/TARGET_ipq807x_generic/TARGET_ipq50xx_ipq50xx_32/g' .config
$ sed -i 's/TARGET_ipq807x/TARGET_ipq50xx/g' .config
$ make defconfig
编译:
$ make -j12
编译过程私有的差不多,也是编译出一个openwrt。应该只有少量package的编译差异。
参考:
ipq5018路由器支持. https://insidelinuxdev.net/article/a0d9qx.html