Project

General

Profile

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:
  1. 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?
  2. 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

    (1-7/7)