{"id":3120,"date":"2026-07-21T16:32:05","date_gmt":"2026-07-21T14:32:05","guid":{"rendered":"https:\/\/wodatherm.com\/?p=3120"},"modified":"2026-07-21T16:32:06","modified_gmt":"2026-07-21T14:32:06","slug":"do-you-need-original-qca-linux-dbdc-driver-for-sparklan-wnfq-268axi","status":"publish","type":"post","link":"https:\/\/wodatherm.com\/en\/do-you-need-original-qca-linux-dbdc-driver-for-sparklan-wnfq-268axi\/","title":{"rendered":"Do you need original QCA Linux DBDC driver for Sparklan WNFQ or WPEQ 268AXI WiFi6 module? Or is better to use open source Ath11k driver ?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Let us share our experience with Qualcomm Atheros WCN6856 based Wi-Fi 6 Triband modules from Sparklan. These WiFi6 modules are very popular. Many professional customers are requesting testing samples and want to use them for their projects.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Open Source Linux ath11k driver is available, works but has limitations. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the customer needs DBS, they will need to apply the ath11k patch. However, after applying the patch, DFS will not be available, and many functions will not work with ath11k. In many cases, we have already suggested using the official QCA driver. Unfortunately original QCA driver is for older Linux kernel only &#8211; WNFQ-269AX(BT)&nbsp;Qualcomm official driver supports Linux Kernel version 5.4 &amp; 5.10 &amp; 5.15.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&#8220;For DFS and support for more client connections (+60) , they will need to use the official QCA driver.&#8221;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sparklan can provide the original driver but every customer has to sign the NDA . If you are interested in , then please <a href=\"mailto: info@524wifi.com\">contact us<\/a> and provide your project description and company details. We will send the NDA for you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Here is the latest driver for 268AXI module : <\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Change&nbsp;<a href=\"https:\/\/fetca60502j-my.sharepoint.com\/:u:\/g\/personal\/elvis_hung_sparklan_com\/IQB-bwL5GYmeSp5KsTeefg3_AXSiCZuwKIciGJYSVNbZPqQ?e=dI9Xn9\">WPEQ-268AXI.tar.xz<\/a>&nbsp;Firmware BDF<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SOP&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#rm -r \/lib\/firmware\/ath11k\/WCN6855<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#cp&nbsp;<a href=\"https:\/\/fetca60502j-my.sharepoint.com\/:u:\/g\/personal\/elvis_hung_sparklan_com\/IQB-bwL5GYmeSp5KsTeefg3_AXSiCZuwKIciGJYSVNbZPqQ?e=dI9Xn9\">WPEQ-268AXI.tar.xz<\/a>&nbsp;\/lib\/firmware\/ath11k<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#cd \/lib\/firmware\/ath11k<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#tar xvf&nbsp;<a href=\"https:\/\/fetca60502j-my.sharepoint.com\/:u:\/g\/personal\/elvis_hung_sparklan_com\/IQB-bwL5GYmeSp5KsTeefg3_AXSiCZuwKIciGJYSVNbZPqQ?e=dI9Xn9\">WPEQ-268AXI.tar.xz<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Please follow the steps higher to replace the firmware BDF.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.524wifi.com\/index.php\/catalogsearch\/result\/?q=268ax\"><img fetchpriority=\"high\" decoding=\"async\" width=\"600\" height=\"423\" src=\"https:\/\/wodatherm.com\/wp-content\/uploads\/2024\/06\/image-4.jpeg\" alt=\"\" class=\"wp-image-3122\" srcset=\"https:\/\/wodatherm.com\/wp-content\/uploads\/2024\/06\/image-4.jpeg 600w, https:\/\/wodatherm.com\/wp-content\/uploads\/2024\/06\/image-4-300x212.jpeg 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Here is an older  success story from our customer, maybe thsi can help to many other to develop relaibel working x86 Linux based device with WCN6856 based Wi-Fi 6 Triband modules :<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I think we will have to stick with the open source ath11k driver for now since we already are committed to 6.1.x.<br><br>I have since migrated this project to Debian 12, also on 6.1.x. I can confirm the exact kernel version. However I was able to install ath11k on Debian 12 core (no X since this will run headless) along with the open source firmware and I do have hostapd working now. I am yet to activate dnsmasq, a bridge that includes the lan interface, etc. So far it seems that what I am stuck on is 2.4GHz + 5GHz DBDC. I\u2019ve experimented with hostapd.conf quite a bit and I cannot seem to figure out how to do this. Typically with DBDC I have seen two wifi interfaces enumerate in linux. I only see one (named&nbsp;wlp1s0) in my case. Performing&nbsp;sudo iw list&nbsp;does show all of the correct frequencies in the supported list (including 6GHz which is not necessary for my application).<br><br>Strangely, after a reboot, the only way that I can correctly set the regulatory region (sudo iw reg set US&nbsp;in my case here) is after I perform a manual&nbsp;sudo iwlist scan. This could be an issue because I will want the appliance to reboot with hostapd activated automatically (presumably by systemd?)<br><br>I would be happy to share my hostapd.conf and anything else from my configurations to get this working. I feel that I am quite close to success and with just a few more configuration file adjustments plus the correct systemd service definition this project will be complete.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The hostapd.conf and dnsmasq.conf are attached. These are working well except:<br><br>No SDBC. I don\u2019t seem to see in a scan anything except the 5GHz radio.<br><br>Trying after boot:<br><br><strong>armbian@nanopi-r5c:\/$<\/strong>&nbsp;sudo hostapd \/etc\/hostapd.conf<br>wlp1s0: interface state UNINITIALIZED-&gt;COUNTRY_UPDATE<br>Frequency 5180 (primary) not allowed for AP mode, flags: 0x100853 NO-IR<br>Primary frequency not allowed<br>wlp1s0: IEEE 802.11 Configured channel (36) or frequency (5180) (secondary_channel=1) not found from the channel list of the current mode (2) IEEE 802.11a<br>wlp1s0: IEEE 802.11 Hardware does not support configured channel<br>Could not select hw_mode and channel. (-3)<br>wlp1s0: interface state COUNTRY_UPDATE-&gt;DISABLED<br>wlp1s0: AP-DISABLED&nbsp;<br>wlp1s0: interface state DISABLED-&gt;DISABLED<br>wlp1s0: AP-DISABLED&nbsp;<br>wlp1s0: CTRL-EVENT-TERMINATING&nbsp;<br>hostapd_free_hapd_data: Interface wlp1s0 wasn&#8217;t started<br>nl80211: deinit ifname=wlp1s0 disabled_11b_rates=0<br><br>Produces hostapd failure every time. However if I instead first:<br><br><strong>armbian@nanopi-r5c:\/$&nbsp;<\/strong>sudo ip link set wlp1s0 up<br><strong>armbian@nanopi-r5c:\/$&nbsp;<\/strong>sudo iwlist scan<br><strong>armbian@nanopi-r5c:\/$&nbsp;<\/strong>sudo iw reg set US<br><strong>armbian@nanopi-r5c:\/$&nbsp;<\/strong>sudo hostapd \/etc\/hostapd.conf<br>wlp1s0: interface state UNINITIALIZED-&gt;COUNTRY_UPDATE<br>wlp1s0: interface state COUNTRY_UPDATE-&gt;HT_SCAN<br>wlp1s0: interface state HT_SCAN-&gt;ENABLED<br>wlp1s0: AP-ENABLED<br><br><br>Doing these steps produces a perfectly running ap bridged with one of the two ethernet NICs and with a working DHCP server. It seems stuck in 5GHz and at lower speed classes. But otherwise it\u2019s working. These extra steps are quite tricky to run without a bunch of shell scripts called by systemd which is not as reliable as I would prefer.<br><br>sudo iw reg set US<br><br>Does nothing unless I first:&nbsp;sudo iwlist scan<br><br>NetworkManager (NM) is disabled and I am using systemd-networkd. This is a headless micro-server and NM just got in the way of everything.<br><br>I feel like I am very close to having this working perfectly!<br><br>More system information follows. Thanks.<br><br><strong>armbian@nanopi-r5c:\/$&nbsp;<\/strong>uname -a<br>Linux nanopi-r5c 6.6.31-current-rockchip64 #1 SMP PREEMPT Fri May 17 10:02:40 UTC 2024 aarch64 GNU\/Linux<br><br><strong>armbian@nanopi-r5c:\/$<\/strong>&nbsp;inxi -b<br>System:<br>&nbsp;&nbsp;Host: nanopi-r5c Kernel: 6.6.31-current-rockchip64 arch: aarch64 bits: 64 Console: pty pts\/0<br>&nbsp;&nbsp; &nbsp;Distro: Armbian GNU\/Linux 12 (bookworm)<br>Machine:<br>&nbsp;&nbsp;Type: ARM System: FriendlyElec NanoPi R5C details: N\/A serial: 43d60e96d20b8351<br>CPU:<br>&nbsp;&nbsp;Info: quad core Model N\/A [MCP] speed (MHz): avg: 1800 min\/max: 408\/1992<br>Graphics:<br>&nbsp;&nbsp;Device-1: display-subsystem driver: rockchip_drm v: N\/A<br>&nbsp;&nbsp;Device-2: rk3568-mali driver: panfrost v: kernel<br>&nbsp;&nbsp;Device-3: rk3568-dw-hdmi driver: dwhdmi_rockchip v: N\/A<br>&nbsp;&nbsp;Display: server: No display server data found. Headless machine? tty: 167&#215;44<br>&nbsp;&nbsp; &nbsp;resolution: 3840&#215;2160<br>&nbsp;&nbsp;API: N\/A Message: No display API data available in console. Headless machine?<br>Network:<br>&nbsp;&nbsp;Device-1: Qualcomm QCNFA765 Wireless Network Adapter driver: ath11k_pci<br>&nbsp;&nbsp;Device-2: Realtek RTL8125 2.5GbE driver: r8169<br>&nbsp;&nbsp;Device-3: Realtek RTL8125 2.5GbE driver: r8169<br>Drives:<br>&nbsp;&nbsp;Local Storage: total: 58.63 GiB used: 7.9 GiB (13.5%)<br>Info:<br>&nbsp;&nbsp;Processes: 206 Uptime: 14m Memory: 3.65 GiB used: 416 MiB (11.1%) Init: systemd<br>&nbsp;&nbsp;target: graphical (5) Shell: Bash inxi: 3.3.26<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Here is the solution for this customer.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1. Kernel config \u2014&gt; enable \u201cCONFIG_ATH_REG_DYNAMIC_USER_REG_HINTS&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2. iw reg get \u2014&gt; phy#0 (self-managed) country ?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3. iw reg set US<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4. iw list \u2014&gt; Check 5G Frequencies \u201cNO-IR\u201d disappears<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, I must remind you again that they will need to apply the ath11k patch for DBS.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.524wifi.com\/index.php\/catalogsearch\/result\/?q=268ax\"><img decoding=\"async\" width=\"682\" height=\"490\" src=\"https:\/\/wodatherm.com\/wp-content\/uploads\/2024\/06\/image-5.jpeg\" alt=\"\" class=\"wp-image-3123\" srcset=\"https:\/\/wodatherm.com\/wp-content\/uploads\/2024\/06\/image-5.jpeg 682w, https:\/\/wodatherm.com\/wp-content\/uploads\/2024\/06\/image-5-600x431.jpeg 600w, https:\/\/wodatherm.com\/wp-content\/uploads\/2024\/06\/image-5-300x216.jpeg 300w\" sizes=\"(max-width: 682px) 100vw, 682px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Result &#8211; Super helpful and I can report I have success, I have an AP, I have rather good performance for a software AP, and I\u2019m going to send this to testing.<\/strong><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In case anyone else was wondering: on current Debian the wifi needed a new file \/usr\/lib\/firmware\/ath11k\/WCN6855\/hw2.0\/board-2.bin which was extracted from either Debian unstable or https:\/\/git.kernel .org\/pub\/scm\/linux\/kernel\/git\/firmware\/linux-firmware.git\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Let us share our experience with Qualcomm Atheros WCN6856 based Wi-Fi 6 Triband modules from Sparklan. These WiFi6 modules are very popular. Many professional customers are requesting testing samples and want to use them for their projects. Open Source Linux ath11k driver is available, works but has limitations. If the customer needs DBS, they will [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":3121,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[55],"tags":[1694,1691,1014,869,1009,312,1695,1698,307],"class_list":["post-3120","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-instalation-support","tag-268ax","tag-1691","tag-driver","tag-linux","tag-qca","tag-qualcomm","tag-sparklan","tag-wcn","tag-wifi-6"],"acf":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/wodatherm.com\/en\/wp-json\/wp\/v2\/posts\/3120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wodatherm.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wodatherm.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wodatherm.com\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/wodatherm.com\/en\/wp-json\/wp\/v2\/comments?post=3120"}],"version-history":[{"count":1,"href":"https:\/\/wodatherm.com\/en\/wp-json\/wp\/v2\/posts\/3120\/revisions"}],"predecessor-version":[{"id":57094,"href":"https:\/\/wodatherm.com\/en\/wp-json\/wp\/v2\/posts\/3120\/revisions\/57094"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wodatherm.com\/en\/wp-json\/wp\/v2\/media\/3121"}],"wp:attachment":[{"href":"https:\/\/wodatherm.com\/en\/wp-json\/wp\/v2\/media?parent=3120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wodatherm.com\/en\/wp-json\/wp\/v2\/categories?post=3120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wodatherm.com\/en\/wp-json\/wp\/v2\/tags?post=3120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}