QSDK
QCA Software Development Kit (QSDK)
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 Code Aurora source tree that contains QSDK patches that can be applied to OpenWrt for QCA hardware.
Releases
QSDK releases are based upon the source released from OpenWrt. QSDK is based upon the OpenWrt CC 15.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.
Branch Releases
Releases are available for download using Repo and Git.
The general form is:
$ repo init -u git://codeaurora.org/quic/qsdk/releases/manifest/qstak -b release -m [manifest]
$ repo sync
Patch Releases
Fixes are sometimes available in patch format only.
CAF Download Steps:
The recommended way of checking out the QSDK source code is to identify a particular AU TAG from CAF: https://source.codeaurora.org/quic/qsdk/releases/manifest/qstak
$ repo init -u git://codeaurora.org/quic/qsdk/releases/manifest/qstak -b release -m caf_AU_LINUX_QSDK_<your version>.xml --repo-url=git://codeaurora.org/tools/repo.git --repo-branch=caf-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 |
---|---|---|---|---|
15.05 | 3.14 | ipq806x, ipq40xx | caf_AU_LINUX_QSDK_NHSS.QSDK.6.1.0.R1_TARGET_ALL.0.1.2028.020.xml | with uClibc |
15.05 | 4.4 | ipq806x, ipq40xx | caf_AU_LINUX_QSDK_NHSS.QSDK.6.1.1.R1_TARGET_ALL.3.0.308.00.1591.020.xml | with uClibc |
15.05 | 4.4 | ipq806x, ipq40xx, ipq807x, ipq807x_64 | caf_AU_LINUX_QSDK_NHSS.QSDK.11.0_TARGET_ALL.11.0.3821.3949.xml | with Musl Wi-Fi not available |
Build Steps:
The following example uses the Open profile
$ cp qca/configs/qsdk/ipq_open.config .config
$ make package/symlinks
$ make defconfig
$ make V=s
Please use below commands for ipq807x based builds:
$ cp qca/configs/qsdk/ipq_open.config .config
$ echo CONFIG_TARGET_ipq_ipq807x_64=y >> .config
$ echo CONFIG_TARGET_ipq_ipq807x_64_QSDK_Open=y >> .config
$ make package/symlinks
$ make defconfig
$ make V=s
APSS Image Flashing Instructions for IPQ806X and IPQ40XX
For IPQ806X:
NOR Boot:
set lof 'tftpb openwrt-ipq-ipq806x-squashfs-root.img && sf erase 0x710000 +$filesize && sf write $fileaddr 0x710000 $filesize'
set lok 'tftpb openwrt-ipq-ipq806x-qcom-ipq8064-${board}-fit-uImage.itb && sf erase 0x310000 +$fileaddr && sf write $fileaddr 0x310000 $filesize'
set lqsdk 'sf probe && run lok && run lof'
set fdt_high '0xffffffff'
saveenv
run lqsdk
NAND Boot:
tftpb openwrt-ipq-ipq806x-qcom-ipq8064-${board}-ubi-root.img
nand erase $ROOTFS_START 0x4000000
nand write 0x42000000 $ROOTFS_START $filesize
// where ROOTFS_START is the hex value from the smem command output above; in the example above 0x1340000
For IPQ40XX:
NOR Boot:
set lof 'tftpb openwrt-ipq806x-squashfs-root.img && sf erase 0x580000 +$filesize && sf write $fileaddr 0x580000 $filesize'
set lok 'tftpb openwrt-ipq806x-qcom-ipq40xx -ap.dkxx-fit-uImage.itb && sf erase 0x180000 +$filesize && sf write $fileaddr 0x00180000 $filesize'
set lqsdk 'sf probe && run lok && run lof'
set fdt_high '0xffffffff'
saveenv
run lqsdk
NAND Boot:
tftpb openwrt-ipq806x-ipq40xx-ubi-root.img
nand erase $ROOTFS_START 0x4100000
nand write $fileaddr $ROOTFS_START $filesize
// where ROOTFS_START is the hex value from the smem command output above; in the example above 0xb80000
For IPQ807X/IPQ807X_64:
NOR/NAND/eMMC Boot:
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"
FAQ
What are the major changes between OpenWrt AA and QSDK?
The following directories include patches and enhancements from QCA:
- arch/mips/ath79/* – updated QCA base platform device support – GPLv2
- sound/soc/ath79/* – new ALSA-compliant QCA soundcard driver – ISC
- drivers/net/ethernet/atheros/ag71xx/* – updated QCA Ethernet switch driver – GPLv2
- net/core/* – performance enhancement updates to Linux sk_buff management – GPL v2
- drivers/spi – added modes to QCA spi driver – GPLv2
- drivers/mtd/nand/ – new QCA NAND flash controller driver – ISC
Licenses
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.