Forums » Software Development »
DCSX-PCEAX-M2 (QCA2066) bring-up on BSP 1.2 and the QLI 2.0 prelim: two fixes needed out-of-box
Added by David Cuccia 21 days ago
Hi Greg,
Informational writeup: I've got the Silex SX-PCEAX-M2 working on two kits — a rev4 SOM on BSP 1.2 (kernel 6.6.90-qli-1.5) and a rev1 SOM on your QLI 2.0 prelim (6.18.30). The Wifi wiki flow needed the same two fixes on both, which you may want to fold into the BSP since the wiki recommends this specific module.
Out-of-box symptom (both kernels): card enumerates fine — 0000:81:00.0 QCNFA765 [17cb:1103] , subsystem 17cb:3374 , qca2066 hw2.1 — but ath11k_pci fails to probe:
Direct firmware load for ath11k/QCA2066/hw2.1/amss.bin failed with error -2 → probe of 0000:81:00.0 failed with error -110
Fix 1 — firmware alias. The driver requests ath11k/QCA2066/hw2.1/* but both images ship only ath11k/WCN6855/ . Same silicon family, identical blobs; a QCA2066/hw2.1 → WCN6855/hw2.1 symlink (or shipping both dirs as linux-firmware does) fixes the probe.
Fix 2 — board data (the subtle one). After fix 1 the firmware loads ( WLAN.HSP.1.1-04685 ) and the card scans perfectly, but every authentication times out against every AP and band ( send auth ... (try 3/3) ... timed out ) and iw reg set is refused ( Failed to set the requested Country regulatory setting ). Root cause: the module reports board_id 0xff (unprovisioned OTP), while board-2.bin keys this exact card ( subsystem-device=3374, qmi-chip-id=18 ) to qmi-board-id=266 — no calibration match, so RX works but TX is effectively dead. Extracting that entry with ath11k-bdencoder and installing it as board.bin (ath11k's unconditional fallback) fixes TX immediately. Suggestion: ship a board.bin for the SX-PCEAX-M2 in the BSP.
Results after the fixes: 5 GHz VHT 2×2 link (360/243 Mbit/s PHY), iperf3 229/214 Mbit/s with zero retransmits, Bluetooth hci0 working, persistent across reboots. Identical behavior on QLI 2.0 (second unit ran single-antenna at 93 Mbit/s, as expected). Only 2.0-specific note: ~27 correctable PCIe Data-Link-Layer timeouts on the ath11k device during the first ~2 minutes after probe, then quiet, link stable at Gen3 x1 — informational, on a rev1 dev board.
Smaller notes: the default regdomain is country 00 (contributes to the failure; a persisted country code would help)
Since /usr is read-only under OSTree, I did all of the above in /etc via firmware_class.path=/etc/firmware plus a deferred ath11k_pci load unit — happy to share the script.
Thanks,
David
Replies (7)
GG RE: SX-PCEAX-M2 (QCA2066) bring-up on BSP 1.2 and the QLI 2.0 prelim: two fixes needed out-of-box - Added by Gregory Gluszek 13 days ago
Hi David,
Thank you for pointing this out and sorry for the delayed response.
Can you provide more details on Fix 2? Is the implication that without Fix 2 the Wi-Fi card was not able to connect to Wi-Fi at all?
Thanks,
Greg
DC RE: SX-PCEAX-M2 (QCA2066) bring-up on BSP 1.2 and the QLI 2.0 prelim: two fixes needed out-of-box - Added by David Cuccia 9 days ago
Hi Greg,
Yes — without Fix 2 the card cannot join any network at all. It's a subtle failure because it looks almost healthy:
• Works: driver probes, firmware loads ( WLAN.HSP.1.1-04685 ), wlan0 appears, and scanning is perfect — every nearby SSID on 2.4/5/6 GHz shows up with plausible signal levels. So "is Wi-Fi working?" checks all pass.
• Fails: every association attempt to every AP times out at the very first step: wlan0: send auth to <bssid> (try 1/3) … (try 3/3) … authentication with <bssid> timed out , and wpa_supplicant cycles CTRL-EVENT-SSID-TEMP-DISABLED reason=CONN_FAILED . NetworkManager surfaces this as the misleading "The Wi-Fi network could not be found." Also iw reg set US is rejected by the firmware ( Failed to set the requested Country regulatory setting ).
That pattern — RX fine, TX dead — is what you get when the radio is running without board-specific calibration data (the BDF). ath11k picks the BDF from board-2.bin by matching the card's identifiers; this card advertises board_id 0xff (unprovisioned OTP on the Silex module) while board-2.bin only carries an entry for subsystem-vendor=17cb,subsystem-device=3374,qmi-chip-id=18,qmi-board-id=266 . No board-id=255 match exists for that subsystem, so the firmware runs uncalibrated. Installing the …board-id=266 entry as a standalone board.bin (ath11k's unconditional fallback) made authentication succeed within seconds — same fix, same result, on both the 6.6 and 6.18 kernels.
Reproduced on two separate SX-PCEAX-M2 units, so it looks like a property of the module batch rather than a one-off. Happy to send the extracted board.bin (60 KB) or the exact ath11k-bdencoder commands if that helps you package it.
Thanks,
David
GG RE: SX-PCEAX-M2 (QCA2066) bring-up on BSP 1.2 and the QLI 2.0 prelim: two fixes needed out-of-box - Added by Gregory Gluszek 8 days ago
Hi David,
Thank you for the details.
I have seen the following on my end:
For the CL BSP 1.X images, making the QCA2066/hw2.1 → WCN6855/hw2.1 symbolic link is the only change needed for the SX-PCEAX-M2 Wi-Fi to work (e.g. connect to Wi-Fi networks and wget files).
For the QLI 2.X WIP image, the WCN6855 is not present on the file system image, but if I copy the fw from the CL BSP 1.X image over, the symbolic link alone would not result in a working system. This was rectified by including a different fw in the Yocto build (requiring no symbolic link or customized .bin file). I have uploaded a pre-built image here if are able to check that everything works on your end and I'm not overlooking something on mine.
Additionally, I have posted instructions for building the CL BSP 2.0 WIP (QLI 2.0 based) here if you want to be able to customize and rebuild that on your end. Note that currently the MIPI cameras, DSI out display, USB-C DP and audio are the major interfaces still not work with this image. Additionally, there is a panic that occurs with swiotlb for some USB transfers (e.g. USB connected to the USB 2.0 ports or with the USB BT connection to the SX-PCEAX-M2).
Thanks,
Greg
DC RE: SX-PCEAX-M2 (QCA2066) bring-up on BSP 1.2 and the QLI 2.0 prelim: two fixes needed out-of-box - Added by David Cuccia 8 days ago
Hi Greg,
Thanks — that's a useful data point, and it points at a variance worth knowing about: on your unit the symlink alone works, but both of our SX-PCEAX-M2 units report board_id 0xff (visible in dmesg at probe: chip_id 0x12 chip_family 0xb board_id 0xff ), and with that value board-2.bin has no matching calibration entry, so TX is dead until the board.bin fallback is present. Could you check what your module reports for board_id ? If yours is provisioned (non-0xff) it would confirm this is a module lot difference — in which case shipping the board-id=266 BDF as board.bin in the BSP is cheap insurance so field units from either lot work out of the box.
On QLI 2.0: understood on MIPI camera/DSI/USB-C DP/audio and the swiotlb USB panic — we'll keep 2.0 as a GPU-evaluation track only and stay on BSP 1.2 for the product integration testing. Thanks for the CL BSP 2.0 WIP build instructions and the new prebuilt; we'll try the image for the Wi-Fi/board_id check when we next cycle kit 1.
FYI, we've reproduced BSP 1.2 from source on our own Yocto CI (same 2134-package manifest, CL_VERSION 1.2 ) following your wiki — the fork-and-build route you recommended is working well for us.
Thanks,
David
GG RE: SX-PCEAX-M2 (QCA2066) bring-up on BSP 1.2 and the QLI 2.0 prelim: two fixes needed out-of-box - Added by Gregory Gluszek 7 days ago
Hi David,
My board_id reports as 0xff.
root@qcs6490-mitysom-devkit:~# dmesg | grep board_id [ 5.811286] ath11k_pci 0000:81:00.0: chip_id 0x12 chip_family 0xb board_id 0xff soc_id 0x400c1211
With this setup I have no issue connecting to Wi-Fi, running iperf as well as running wget to download a known file and corresponding md5sum to verify no issues occurred during the download itself.
Please let me know if you observe different behavior after a fresh program with the pre-built image here
Thanks,
Greg
DC RE: SX-PCEAX-M2 (QCA2066) bring-up on BSP 1.2 and the QLI 2.0 prelim: two fixes needed out-of-box - Added by David Cuccia 6 days ago
Hi Greg,
Thanks for checking — so both our modules and yours read board_id 0xff ; our lot-variance idea was wrong. To pin down the difference I ran a controlled A/B on a freshly programmed BSP 1.2-based image (same NM profile, wpa-psk , regdomain US), bind-mounting three different ath11k/QCA2066/hw2.1/ contents and reloading ath11k_pci :

So the symlink works only because WCN6855/hw2.1/ ships a generic board.bin fallback ( board-2.bin has no entry for this card at board-id 255), and on our two units that generic BDF gives RX-only behaviour. Ours were −52/−56 dBm from the AP, so it isn't range on our side.
Two things that could explain why yours passes:- your module may carry a different OTP calibration such that the generic BDF is "good enough" — could you check sha256sum /lib/firmware/ath11k/WCN6855/hw2.1/board.bin on your image and whether dmesg | grep -i "board data\|board.bin" shows a fetch from board-2.bin or the fallback?
- If you have a minute, iw dev wlan0 link and iw dev wlan0 station dump | grep -E "signal|tx (bitrate|retries|failed)" while connected would show whether TX retries are elevated even when the association succeeds.
Either way, shipping the board-id-266 BDF as QCA2066/hw2.1/board.bin in the BSP costs 60 KB and made both of our units work out of the box; we now build it into our own image. Happy to send the exact file.
Thanks,
David
GG RE: SX-PCEAX-M2 (QCA2066) bring-up on BSP 1.2 and the QLI 2.0 prelim: two fixes needed out-of-box - Added by Gregory Gluszek about 5 hours ago
Hi David,
With /etc/buildinfo reporting CL_VERSION = 1.2 I get the following (note the only modifications made to get Wi-Fi functional after flashing the CL CSP 1.2 image is ln -sf WCN6855 QCA2066):
dmesg | grep -i "board data\|board.bin" returns nothing. Is this different on your system?
root@qcs6490-mitysom-devkit:~# sha256sum /lib/firmware/ath11k/WCN6855/hw2.1/board.bin 923e962ba7fe9e2ab1939721b959daada8df6ded4b5d52bdc5edc9000a06fa90 /lib/firmware/ath11k/WCN6855/hw2.1/board.bin
root@qcs6490-mitysom-devkit:~# iw dev wlan0 link
Connected to 86:2a:a8:44:bd:73 (on wlan0)
SSID: CL Guest
freq: 2437
RX: 543846754 bytes (463790 packets)
TX: 401839434 bytes (310079 packets)
signal: -47 dBm
rx bitrate: 144.4 MBit/s MCS 15 short GI
tx bitrate: 144.4 MBit/s MCS 15 short GI
bss flags: short-preamble short-slot-time
dtim period: 1
beacon int: 100
root@qcs6490-mitysom-devkit:~# iw dev wlan0 station dump
Station 86:2a:a8:44:bd:73 (on wlan0)
inactive time: 1348 ms
rx bytes: 546657113
rx packets: 496340
tx bytes: 508766391
tx packets: 379804
tx retries: 0
tx failed: 0
beacon loss: 0
beacon rx: 1238
rx drop misc: 0
signal: -43 [-44, -49] dBm
signal avg: 116 dBm
beacon signal avg: -42 dBm
tx bitrate: 144.4 MBit/s MCS 15 short GI
tx duration: 0 us
rx bitrate: 144.4 MBit/s MCS 15 short GI
rx duration: 36801294 us
last ack signal:116 dBm
avg ack signal: -112 dBm
authorized: yes
authenticated: yes
associated: yes
preamble: long
WMM/WME: yes
MFP: yes
TDLS peer: no
DTIM period: 1
beacon interval:100
short preamble: yes
short slot time:yes
connected time: 1141 seconds
associated at [boottime]: 176.482s
associated at: 1790885638570 ms
current time: 1790886779407 ms
What do you see on your hardware with CL BSP 1.2 Image?
With /etc/buildinfo reporting CL_VERSION = 2.0.0-WIP I get the following (no fs mods required to get the Wi-Fi working after a fresh QDL program):
root@qcs6490-mitysom-devkit:~# sha256sum /lib/firmware/ath11k/QCA2066/hw2.1/board-2.bin 60ee3a07848d9801737b93412f361cbdcb45a05b54990bc0a66f5ca4f3d7c47b /lib/firmware/ath11k/QCA2066/hw2.1/board-2.bin
root@qcs6490-mitysom-devkit:~# iw dev wlp129s0 link
Connected to fa:92:bf:58:cb:77 (on wlp129s0)
SSID: CL Guest
freq: 5805.0
RX: 7633297 bytes (87816 packets)
TX: 285573039 bytes (186241 packets)
signal: -76 dBm
rx bitrate: 52.0 MBit/s VHT-MCS 5 VHT-NSS 1
tx bitrate: 162.0 MBit/s VHT-MCS 4 40MHz VHT-NSS 2
bss flags: short-slot-time
dtim period: 3
beacon int: 100
root@qcs6490-mitysom-devkit:~# iw dev wlp129s0 station dump
Station fa:92:bf:58:cb:77 (on wlp129s0)
authorized: yes
authenticated: yes
associated: yes
preamble: long
WMM/WME: yes
MFP: yes
TDLS peer: no
inactive time: 34916 ms
rx bytes: 7642645
rx packets: 87866
tx bytes: 285573039
tx packets: 186241
tx retries: 0
tx failed: 0
beacon loss: 0
beacon rx: 404
rx drop misc: 0
signal: -76 [-76, -94] dBm
signal avg: -77 dBm
beacon signal avg: -75 dBm
tx bitrate: 162.0 MBit/s VHT-MCS 4 40MHz VHT-NSS 2
tx duration: 0 us
rx bitrate: 52.0 MBit/s VHT-MCS 5 VHT-NSS 1
rx duration: 893562 us
last ack signal:-79 dBm
avg ack signal: -78 dBm
DTIM period: 3
beacon interval:100
short slot time:yes
connected time: 211 seconds
associated at [boottime]: 110.553s
associated at: 1790887622317 ms
current time: 1790887833387 ms
What do you see with the CL BSP 2.0.0 WIP Image?
Thanks,
Greg