watchthelight labs

Channel width is always reported as 20 MHz (scan results and the current network) #1

closedarea:wifikind:bugseverity:lowfound-by:featuretest
watchthelight 2026-10-18

System Information lists every network from the scan, and the current one, as "(5GHz, 20MHz)": channels 157, 44 and 100 all read 20 MHz. The link itself is wider: 190 Mbit/s each way through networkQuality and about 410 Mbit/s local UDP Tx (N-165), which 20 MHz with two streams could not carry.

So the native front end fills the BSS channel width with a fixed value. Real width (and rate) reporting is already on the speed list as the next step after the Tx work.

Also seen: System Information says "Network Service Inactive" for Wi-Fi while en1 is active with a lease and the default route.

MtkWlanNative 0.4.11, MtkWlan 0.11.3. Tested on Lenovo Legion 5 15IAX10, MT7925, macOS 26.7.1 (25G241). Evidence: project-legion evidence/native/featuretest-2026-10-18/A/net.phy.txt, net.service.txt.

watchthelight 2026-10-22

Upstream scout, 2026-10-22: f0xeri/qwz-macos, an independent native front end on 25G241 (Qualcomm WCN7850), reports the width of the current network correctly. getCHANNEL in QwzAirportInterface.cpp with CurrentLink.hpp sets the 40/80/160 MHz and extension-above flags (APPLE80211_C_FLAG_*, which come from Apple's public headers). That covers the current-network half of this issue.

The scan-result half stays open: their scan results still use a fixed 20 MHz chanspec, the same as laobamac's itlwm. The project is GPL-2.0, so we read it as a reference only.

Write-up: https://github.com/watchthelight-labs/research/blob/main/scout/mt7925-wifi-native/2026-10-22.md

watchthelight 2026-10-23

0.4.13 with MtkWlan 0.12.1 fills in the Wi-Fi details. On the author's Legion 5 (VHT80 access point, channel 100) wdutil info now shows PHY Mode 11ac, Channel 5g100/80, MCS Index 9, NSS 2, Guard Interval 400 and Tx Rate 866 Mbps, where 0.4.11 showed 20 MHz and 54 Mbps.

The current network is fixed; scan results still list every network at 20 MHz, because the scan-result header does not carry the width from the beacon yet. That stays open in this issue. The rate is the negotiated maximum for now: the firmware sent no TX status records on this link, so it does not follow rate control yet. 802.11ax is also not there yet (the driver does not associate HE).

Releases: MtkWlanNative 0.4.13, MtkWlan 0.12.1 (the bundle there has both).

watchthelight 2026-10-31

Fixed in 0.4.15. Each scan result's chanspec is now built from the HT and VHT Operation elements, in the layout IO80211Family decodes. On the Legion 5 (25G332) a CoreWLAN scan lists 8 of 8 networks at 5 GHz/80 MHz, and the current network shows 5g108/80. 160 MHz is reported as 80, the width the core joins at. The current network already had its real width since 0.4.13.

Reply on GitHub