The device tree asks ath11k for the Fairphone_Gen_6 board data entry. Upstream linux-firmware's WCN6750 board-2.bin has no Fairphone entry, so the driver silently falls back to the generic board-id 255 data; the FP6 Plus does not associate on it (user report 2026-10-14), the FP6 happens to. The stock modem partition carries the device's own calibration as image/qca6750/bdwlan.elf. New manifest directive ath11k-bdf: copy that ELF and wrap it into a container under /lib/firmware/updates (searched first by the loader) that is upstream's board-2.bin with every entry kept plus one BOARD entry under the requested name. Verified structurally (ELF magic, size, the container magic), no hash pin: calibration data is OEM data and the WLAN firmware checks what it is given. If the base already carries the name the override is not built and a stale one is removed. --refresh re-derives it. The fragment re-probes ath11k as the fallback for a driver that probed before extraction (WPSS restart, the association comes back via NetworkManager). zstd joins the dependencies to read the compressed base. On the dev phone the built container is byte-identical to the one hand-made from the stock image by the reporter (sha256 186202ee...), built in 1.2 s.
17 lines
1.3 KiB
Text
17 lines
1.3 KiB
Text
# WCN6750 WLAN board data (calibration, Qualcomm/Fairphone) - taken from the
|
|
# stock modem partition on-device instead of being shipped (fp6 repo
|
|
# journal/base/ 2026-10-14, journal/blobs/). The device tree asks ath11k for
|
|
# the Fairphone_Gen_6 entry; upstream linux-firmware's board-2.bin has none,
|
|
# the driver silently falls back to generic data, and the FP6 Plus does not
|
|
# associate on that (user report 2026-10-14; the FP6 happens to work either
|
|
# way). The container built here is upstream's file with every entry kept
|
|
# plus the device's own bdwlan.elf under the requested name; it lives in
|
|
# /lib/firmware/updates, which the loader searches first. Active slot first,
|
|
# the other slot as fallback; no hash pin - calibration data is OEM data and
|
|
# the WLAN firmware verifies what it is given.
|
|
ath11k-bdf modem_a,modem_b image/qca6750/bdwlan.elf bus=ahb,qmi-chip-id=1,qmi-board-id=255,variant=Fairphone_Gen_6 /usr/lib/firmware/ath11k/WCN6750/hw1.0/board-2.bin.zst /usr/lib/firmware/updates/ath11k/WCN6750/hw1.0/board-2.bin
|
|
# Fallback for a driver that probed before extraction (the service runs
|
|
# pre-coldplug, so this normally no-ops): re-probing ath11k restarts the
|
|
# WPSS remoteproc and the firmware reads the new container; the association
|
|
# comes back through NetworkManager.
|
|
rebind platform 17110040.wifi
|