WiFi: WCN3990 WLAN core never registers WLFW (chip alive, BT works) #14
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
BT is now working (see below); WiFi is not. The WCN3990 chip is alive but its WLAN core never boots —
ath10k_snocbinds, sets up regulators, and then waits silently forever for a WLFW QMI service that never appears.Evidence
ath10k_snoc 18800000.wifibinds. Entire dmesg from it is two lines: No firmware load, no QMI, no error, no timeout. It's event-driven, waiting for the WLFW server.qrtr-lookup: no WLFW service (0x27) — only the adsp/cdsp/slpi nodes. So the WLAN core isn't on the qrtr bus → its ROM isn't booting.wlan0.What's ruled out
vddio/vddxo/vddrf/vddch0= l1a/l7a/l2c/l11c) are the same four rails as WiFi'scx-mx/xo/rfa/ch0, so BT working proves the WiFi rails are powered. The missingvdd-3.3-ch1(dummy) is not it — mtp and nabu run without it too.&wifiis byte-identical to sm8150-xiaomi-nabu (working) — same 4 supplies.wlan_mem(@0x8c200000, 0x180000) is the default size, no overlap with neighbours.rf_clk2confirmed enabled at 38.4 MHz, consumer18800000.wifi./lib/firmware/ath10k/WCN3990/hw1.0/{board-2.bin,firmware-5.bin}(real files, rootfs, available early). But WLFW comes from the chip ROM, not these, so they're not why it's silent.So: WLAN-core-specific bring-up
Everything shared with BT works; only the WLAN subsystem fails to come up. Suspects: an SCM/MSA memory-assign step failing silently, a WLAN-specific reset/enable, or the qrtr transport to the WLAN core not being established.
Next steps
CONFIG_DYNAMIC_DEBUG=y(not in the current build) and enablefile *ath10k_qmi* +p/file *ath10k_snoc* +pto see exactly where the QMI wait stalls — this is the key missing visibility.spmird(the display-rail method) rather than trusting the regulator votes.The chip is healthy and BT proves the power domain — this is a focused ath10k_snoc/QMI bring-up, not a power or DT-structure problem.
2026-08-22: WLAN firmware now boots and takes its BDF. Full chain identified.
Went from "ath10k silent forever" to "WLAN firmware running, BDF downloaded". Correction to an earlier claim in this issue: WiFi IS gated on the modem. The original assessment was right; my later "not gated on the modem" note was wrong. Proof:
sm8150-xiaomi-nabuis a WiFi-only tablet with no cellular and it still enables&remoteproc_mpss— purely for WiFi. On WCN3990 the WLAN firmware runs on the modem DSP (hencewlanmdsp.mbn) and provides the WLFW QMI service.The chain (all five links were missing)
&remoteproc_mpss { status = "okay"; firmware-name = "qcom/sm8150/samsung/gts6l/modem.mdt"; }. Firmware =modem.mdt+ 30modem.bXX, copied out of themodempartition (/dev/disk/by-partlabel/modem→image/).rmtfs_memDT region — our bug. It was deleted with the MTP-layout carveouts and never restored, so the modem had no EFS/NV access: it booted, then diedfatal error without message, crash-looping. Re-added at0x9e400000(2 MiB, free space abovecont_splash_mem),qcom,client-id = <1>,qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>. Creates/dev/qcom_rmtfs_mem1; verified in use:[RMTFS] alloc 0, 2097152 => 0x9e400000.linux-msmsources on-device (pluslibqrtrfromlinux-msm/qrtrvia meson).modem_pr/mcfg— the modem fetches/readonly/firmware/image/modem_pr/mcfg/...over tqftpserv, which maps to/lib/firmware/. Copied (not symlinked —/firmwaremounts at t≈16 s, far too late)/mnt/modem/image/modem_pr→/lib/firmware/modem_pr.board-2.bin, matched its genericqmi-board-id=ffentry (our chip reportsboard_id 0xff, i.e. unprovisioned) and the firmware crash-looped. Samsung's own BDF is/firmware/vendor/firmware/wlan/qca_cld/bdwlan.bin(26328 B) → installed as/lib/firmware/ath10k/WCN3990/hw1.0/board.bin, and upstreamboard-2.binmoved aside so the fallback is taken.Current state
So: modem stable (0 crashes), WLFW up, MSA regions negotiated, BDF accepted. It now times out waiting for firmware-ready.
Next fix — confirmed under-volt on the WiFi RF rail
Samsung's downstream specifies
qcom,vdd-3.3-ch0-config = <3104000 3312000>, but ourvreg_l11c_3p3isregulator-min-microvolt = <3000000>and measured live at 3000000 µV — below the required minimum. Our other three rails match downstream exactly (cx-mx 752000, xo 1800000, rfa 1304000). Raisevreg_l11c_3p3min to3104000. This is the prime suspect for the-110.Also try, if that isn't enough: the other BDF variants (
bdwlan.bin1,bdwlan.bin2— board revisions), and settingqcom,ath10k-calibration-variant(log saysDT bdf variant name not set.).Gotchas for whoever continues
failed to assign msa map permissions: -22.carrier=1, butNETDEV WATCHDOG: transmit queue timed out; no ssh, no ACM). Recovery needed a power cycle, and TWRP could not repair the rootfs (itse2fsckrejects our fs:unsupported feature(s): FEATURE_C12 FEATURE_R16=orphan_file). Recovered instead by booting withsystemd.mask=on the four units via kernel cmdline, then deleting the symlinks frommulti-user.target.wants/. Start them manually until the boot-time hang is understood.vdd-3.3-ch1 not found, using dummy regulatorwarning is a red herring — Samsung's downstream uses the same four supplies and no ch1.Kernel commits so far:
91cee1ce(TDM framing, audio), modem + rmtfs_mem DT changes still uncommitted locally.Resolved — WiFi works
WLFW now registers,
ath10k_snocloads firmware, and the station scans and associates.What it took
The WLAN core needs the modem up with rmtfs/pd-mapper/tqftpserv already running, and the unit ordering that guarantees this was not enabled:
With
gts6l-modemdisabled,pd-mappernever ran at all, and the DT'sremoteproc_mpssauto-booted the modem long before any daemon existed. Enablinggts6l-modemfixes the whole chain — journal now shows pd-mapper, rmtfs and tqftpserv all starting before it:Two red herrings, recorded so they are not chased again
board_id 0xfflooks alarming but is present on every boot in the log, including boots where WiFi worked and associated. It is normal for this WCN3990 and is not a fault.chan info: invalid frequency 0 (idx 41 out of bounds)appears on only 3 of 37 boots, so it is intermittent noise rather than the blocker it appeared to be.Also worth knowing:
iwis not installed on the rootfs.iw dev wlan0 scan | grep -c ^BSStherefore returns 0 and looks exactly like "scan found nothing". Usenmcli device wifi list. This cost real debugging time.Follow-up
WiFi's availability is gated on modem stability — see #16, where the modem asserts on ~half of boots and the SSR recovery takes the AP down. WiFi itself is working; keeping it up depends on that.
Closing.