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 VersionNotes
 15.05 3.14ipq806x,
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.10.0_TARGET_ALL.10.0.3440.3730.xml
with Musl

Wi-Fi not available


Latest available release Branch  example version
Latest available release Branch  example version
 caf_AU_LINUX_QSDK_NHSS.QSDK.6.1.0.R1_TARGET_ALL.0.1.2028.020.xml


Build Steps:

The following example uses the upstream profile

$ cp qca/configs/qsdk/ipq_upstream.config .config

$ make package/symlinks

$ make defconfig

$ make V=s

Please use below commands for ipq807x based builds:

$ cp qca/configs/qsdk/ipq_upstream .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

Note: Please add CONFIG_USB_CONFIGFS_F_DIAG=y to target/linux/ipq/ipq807x/config-default in case of target/linux/compile prompts for it.

$ cp qca/configs/qsdk/ipq806x_open.config .config

$ make package/symlinks

$ make defconfig

$ make V=s

$ cp qca/configs/qsdk/ipq806x_open.config .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.

Tags:
Created by Rene Cunningham on 2013/08/20 03:50
   
This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 7.4.3 - Documentation