The QCA Software Development Kit (QSDK) project allows users to build an OpenWrt based platform containing additional enhancements for Qualcomm Atheros chipsets that have not yet made it into the public OpenWrt repository. OpenWrt is an open source embedded Linux distribution optimized for small footprint Wi-Fi routers and similar devices. QCA’s long-term objective is to push generically useful enhancements from these QSDK patches directly to OpenWrt.
QSDK is based upon the OpenWrt build framework, configuration methods, package management, and other tools. Documentation, original sources and an overview of OpenWrt can be found on its web site.
A Gitweb interface is available to browse the CodeLinaro source tree that contains QSDK patches that can be applied to OpenWrt for QCA hardware.
QSDK releases are based upon the source released from OpenWrt. QSDK is based upon the OpenWrt 19.07 and 23.05. Newer patches from OpenWrt trunk may also have been merged into the QSDK release. Ideally, new functionality or fixes found only in the QSDK patches will be merged back to OpenWrt trunk so that they can be made available for subsequent QSDK releases, based on future OpenWrt stable releases.
Releases are available for download using Repo and Git.
The general form is:
$ repo init -u https:://codelinaro.org/clo/qsdk/releases/manifest/qstak -b release -m [manifest]
$ repo sync
Fixes are sometimes available in patch format only.
The recommended way of checking out the QSDK source code is to identify a particular AU TAG from CLO: https://git.codelinaro.org/clo/qsdk/releases/manifest/qstak
$ repo init -u https://git.codelinaro.org/clo/qsdk/releases/manifest/qstak -b release -m AU_LINUX_QSDK_<your version>.xml --repo-url=https://git.codelinaro.org/clo/tools/repo --repo-branch=qc-stable
$ repo sync
There are multiple manifest versions are available depending on what release/SoC you want to work on:
OpenWrt Version |
Kernel Version |
SoC's | Latest Available Release Branch Example Version | Notes |
---|---|---|---|---|
19.07 | 5.4 | ipq807x, ipq95xx |
¶ AU_LINUX_QSDK_NHSS.QSDK.12.2.5_TARGET_ALL.12.2.5.751.857.xml |
ATH11K Supported |
23.05 | 6.1 | ipq95xx, ipq53xx |
¶ AU_LINUX_QSDK_NHSS.QSDK.12.4.5.R2_TARGET_ALL.12.4.502.099.019.xml |
ATH11k & ATH12K Supported |
The following example uses the Open profile
$ source qca/configs/qsdk/setup-environment
Select ipq807x or ipq95xx as your required target
Select 32bit or 64bit → Choose profile as open → Debug build - no
$ make -j8 V=e
The following example uses the Open profile
$ source qca/configs/qsdk/setup-environment
Select ipq95xx or ipq53xx your required target
Select 32bit or 64bit → Choose profile as open → Debug build - no
$ make -j8 V=e
NOR/eMMC Boot:
tftpb openwrt-ipq807x-generic-ipq8074-hkxx-fit-uImage.itb && flash 0:HLOS
tftpb openwrt-ipq807x-generic-squashfs-root.img && flash rootfs
reset
bootipq
NAND/NORPLUSNAND Boot:
tftpb openwrt-ipq807x-generic-ubi-root.img && flash rootfs
reset
bootipq
NOR/eMMC Boot:
tftpb openwrt-ipq95xx-generic-ipq9574-alxx-fit-uImage.itb && flash 0:HLOS
tftpb openwrt-ipq95xx-generic-squashfs-root.img && flash rootfs
reset
bootipq
NAND/NORPLUSNAND Boot:
tftpb openwrt-ipq95xx-generic-ipq9574-alxx-fit-uImage.itb && flash kernel
tftpb openwrt-ipq95xx-generic-squashfs-root.img && flash ubi_rootfs
reset
bootipq
// Please change the above filename while flashing for ipq53xx board, please use ipq53xx and ipq5332 instead of ipq95xx and ipq9574
Generic Flashing commands:
tftpb <filename> //Replace <filename> accordingly. e.g. "tftpb openwrt-ipq-ipq807x-qcom-ipq807x-hkxx-fit-uImage.itb"
flash <partition name> //Replace <partition name> accordingly, refer output of smem command. e.g. "flash 0:HLOS"
Chipset | github URL |
IPQ8074, IPQ9574 | https://github.com/quic/upstream-wifi-fw/tree/main/ath11k-firmware |
IPQ5322, QCN9274 | https://github.com/quic/upstream-wifi-fw/tree/main/ath12k-firmware |
What are the major changes between OpenWrt AA and QSDK?
The following directories include patches and enhancements from QCA:
The source code available for download from Code Aurora may be covered by one or more different licenses. The files in Code Aurora may contain changes and additions on top of the code from the original source. These changes and additions are covered under the same license as the original source. In many cases, the license is explicitly listed at the beginning of the file. A list of licenses is included for reference purposes only.