WCN3990 wifi: device-matched wlanmdsp and SOM-tuned board data - #126
Merged
Conversation
The generic linux-firmware wlanmdsp.mbn (WLAN.HL.2.0-01387-QCAHLSWMTPLZ-1, 2018-07-19) crashes the WLAN Q6/DSP on 5 GHz DFS channels with 'halphy_caldb.c:3021: Assertion 0 failed', producing the ath10k 'failed to synchronize setup for vdev 0 restart 0: -110' / vdev-start failure loop. 2.4 GHz is unaffected. wlanmdsp.mbn is the vendor-signed WLAN firmware image sideloaded to the modem DSP via tqftpserv; per the ath10k list it is signed for a specific SoC/device and the generic linux-firmware copy is not calibration-matched to this board's RF, so its 5 GHz PHY cal DB asserts. Board data is not the cause: the board-2.bin entry ath10k selects (bus=snoc,qmi-board-id=ff,qmi-chip-id=30214) is already byte-identical to the device's /firmware/image/bdwlan.bin. Replace the embedded wlanmdsp.mbn with the device's own downstream image (WLAN.HL.2.0.c10-00459-QCAHLSWMTPLZ-1, from /firmware/image/wlanmdsp.mbn). firmware-5.bin and board-2.bin are unchanged (same WLAN.HL.2.0 interface descriptor). No config change: the EXTRA_FIRMWARE path is identical, only the blob contents differ. This blob also feeds the rootfs /lib/firmware copy via the Dockerfile, so both the built-in and userspace copies match.
5 GHz DFS vdev start still crashed the WLAN DSP (halphy_caldb.c:3026
assert) after the wlanmdsp swap. Root cause: wrong board/cal data.
Mainline was serving the generic default board-2.bin entry
(bus=snoc,qmi-board-id=ff,qmi-chip-id=30214 == generic bdwlan.bin),
but AGNOS does NOT use bdwlan.bin: comma ships RF-tuned board files
in /usr/comma/wlan/ (bdwlan.b00, bdwlan.b01, agnos-builder PRs #199
'Custom bdwlan per SOM type' and #377 'B01 wlan config') and patches
cnss_daemon to select /usr/comma/wlan/bdwlan.b%02x by the SOM id read
from /sys/.../vendor:gpio-som-id/som_id (4 GPIO straps, tlmm 105-108,
bit0 first; driver: agnos-kernel-sdm845 gpio_som_id.c). The legacy
mici DT has no wlan board-id; QMI board_id is 0xff on both stacks.
mici SOM id determined as 1 -> bdwlan.b01: tlmm gpio105 (bit0) reads 1
against a pull-down (hard-strapped high) while gpio106-108 read 0;
only b00/b01 exist, so id=1 is the only consistent hit. bdwlan.b01
differs from generic bdwlan.bin in 298 bytes (RF/cal tuning).
Implementation:
- append two variant-keyed entries to board-2.bin (upstream entries
untouched):
bus=snoc,...,qmi-chip-id=30214,variant=comma-mici -> bdwlan.b01
bus=snoc,...,qmi-chip-id=30214,variant=comma-tizi -> bdwlan.b00
- set qcom,calibration-variant in each board's &wifi DT node; 6.18
ath10k_core_check_dt picks it up and tries the variant name first.
tizi->b00 mapping is inferred from PR ordering (b00 predates b01);
tizi was unreachable to verify its SOM id. mici is verified as above.
Watch on flash-test dmesg: 'board_file api 2' with non-zero crc32,
no halphy_caldb assert, vdev 0 starts on freq 5500.
greatgitsby
marked this pull request as ready for review
July 4, 2026 01:40
vamOS System ProfileChanges vs master
Directory size changes (>1MB)
Top 10 Directories
Category Breakdown
Top 10 Packages by Size
|
| File | Size |
|---|---|
| /usr/lib/llvm/21/lib/libLLVM.so.21.1 | 124.3MB |
| /usr/lib/llvm/21/lib/libMLIR.so.21.1 | 89.7MB |
| /usr/lib/llvm/21/bin/mlir-transform-opt | 82.9MB |
| /usr/lib/llvm/21/lib/libclang-cpp.so.21.1 | 56MB |
| /usr/lib/llvm/21/bin/mlir-translate | 53.2MB |
| /usr/bin/uv | 52.6MB |
| /usr/lib/llvm/21/bin/llvm-exegesis | 52MB |
| /usr/lib/llvm/21/bin/llvm-bolt-binary-analysis | 50.6MB |
| /usr/lib/gcc/aarch64-linux-gnu/14.2/gnat1 | 40.1MB |
| /usr/bin/gdb | 39.1MB |
| /usr/lib/libgallium-26.1.3.so | 37.7MB |
| /usr/lib/gcc/aarch64-linux-gnu/14.2/cc1plus | 37.3MB |
| /usr/lib/libllvm-qcom.so | 35.2MB |
| /usr/lib/gcc/aarch64-linux-gnu/14.2/cc1 | 35.2MB |
| /usr/lib/libRusticlOpenCL.so.1.0.0 | 34.3MB |
| /usr/lib/gcc/aarch64-linux-gnu/14.2/lto1 | 33.9MB |
| /usr/bin/lto-dump | 33.9MB |
| /usr/local/venv/bin/ruff | 31.8MB |
| /usr/share/icu/78.3/icudt78l.dat | 31.5MB |
| /usr/lib/llvm/21/lib/libclang.so.21.1.7 | 30.2MB |
| /usr/lib/llvm/21/bin/c-index-test | 28.6MB |
| /usr/local/venv/lib/python3.12/site-packages/gcc_arm_none_eabi/toolchain/libexec/gcc/arm-none-eabi/13.2.1/cc1 | 28.2MB |
| /usr/lib/libz3.so | 27.9MB |
| /usr/bin/run | 26.7MB |
| /usr/local/venv/lib/python3.12/site-packages/numpy.libs/libscipy_openblas64_-71e1b124.so | 23.6MB |
| /usr/comma/updater | 23.5MB |
| /usr/comma/setup | 23.5MB |
| /usr/comma/reset | 23.5MB |
| /usr/local/uv/python/cpython-3.12.13-linux-aarch64-gnu/bin/python3.12 | 22.2MB |
| /usr/local/uv/python/cpython-3.12.13-linux-aarch64-gnu/lib/libpython3.12.so.1.0 | 22.1MB |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fixes the 5GHz crashing seen during comma hack, working on home network