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 about 16 hours 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