Skip to content

Building

Julius Bairaktaris edited this page Oct 17, 2026 · 1 revision

Building

The same image as the releases

The builder holds the exact configuration of the prebuilt images: a shared config, one config per board group, overlay files and a few feed patches. To build it on GitHub, fork the builder and run its Build workflow. To build locally:

git clone --branch ppe-nss https://github.com/JuliusBairaktaris/openwrt-ppe-nss openwrt
git clone https://github.com/JuliusBairaktaris/Qualcommax_NSS_Builder builder
cd openwrt
cp feeds.conf.default feeds.conf
echo "src-git nss https://github.com/JuliusBairaktaris/nss-packages.git;edma-nss" >> feeds.conf
sed -i 's|^src-git luci .*|src-git luci https://github.com/JuliusBairaktaris/luci.git;luci-app-ppe-qos|' feeds.conf
./scripts/feeds update -a && ./scripts/feeds install -a
patch -d feeds/packages -p1 < ../builder/patches/feeds/ppe-nss/packages/0001-*.patch
cat ../builder/devices/common/config ../builder/devices/xiaomi_ax3600/config > .config
make defconfig
make -j"$(nproc)"

Replace xiaomi_ax3600 with the group of your board (see Hardware Support). For the mesh images, also append ../builder/devices/common/config.mesh to the .config.

The extra feeds and the patch add:

  • nss-firmware, from the nss feed;
  • luci-app-ppe-qos, from the luci fork;
  • hw_ppe.qos, by pointing sqm-scripts at its fork.

The overlay files under devices/*/files* (first-boot defaults, the AX3600 wireless config) are copied into the image by the builder's scripts/prepare-build.sh. Copy them into files/ yourself if you want them.

A minimal config

For your own config on top of stock qualcommax, the NSS Wi-Fi offload needs only:

CONFIG_PACKAGE_kmod-nss-wifi-drv=y
CONFIG_ATH11K_NSS_WIFI=y
CONFIG_NSS_FIRMWARE_VERSION_12_5=y

Or, for mesh:

CONFIG_PACKAGE_kmod-nss-wifi-drv=y
CONFIG_ATH11K_NSS_WIFI=y
CONFIG_NSS_FIRMWARE_VERSION_11_4=y
CONFIG_PACKAGE_wpad-mesh-openssl=y

The seeds/ directory of the tree holds both as qualcommax-nss-wifi.seed and qualcommax-nss-wifi-mesh.seed:

cat seeds/qualcommax-nss-wifi.seed >> .config
make defconfig

The wired offload is part of the target and needs no build option. Turn on hardware flow offloading at runtime (see Wired Offload).

For SQM and queue classes, add sqm-scripts, luci-app-sqm, ppe-qos and luci-app-ppe-qos, with the luci feed and sqm-scripts patch above. ppe-qos pulls in the tc packages it needs.

Updating a checkout

ppe-nss is rebased often, so git pull does not work on it. Use:

git fetch origin
git reset --hard origin/ppe-nss
./scripts/feeds update -a && ./scripts/feeds install -a
make defconfig

After switching branches or after a large rebase, remove tmp/ before make defconfig. Stale package metadata there can cause Kconfig errors such as a recursive dependency between kmod-ath11k and ATH11K_NSS_WIFI.

Installing kmods afterwards

The images use their own kernel, so kernel modules from the official OpenWrt package feeds do not load on them. Build every kmod you need into the image.

Clone this wiki locally