Skip to content

Report the highest-band link and MLO state in network band and status - #9809

Open
SDCVO wants to merge 1 commit into
omacom:quattrofrom
SDCVO:fix/mlo-band-reporting
Open

Report the highest-band link and MLO state in network band and status#9809
SDCVO wants to merge 1 commit into
omacom:quattrofrom
SDCVO:fix/mlo-band-reporting

Conversation

@SDCVO

@SDCVO SDCVO commented Sep 2, 2026

Copy link
Copy Markdown

Problem

On a Wi-Fi 7 MLO (Multi-Link Operation) connection, the AP exposes one radio link per band under a single SSID, and iw dev <dev> link prints each link with its own freq: line — Link 0 (typically 2.4 GHz) first:

Link 0 BSSID … 
    freq: 2412.0
Link 1 BSSID …
    freq: 5745.0
MLD … stats:
    tx bitrate: 1200.9 MBit/s 80MHz EHT-MCS 11 …

omarchy-network-band and omarchy-network-status extracted the first freq: line, so a 2.4+5 GHz association was always reported as 2.4GHZ in the network panel, even though the 5 GHz link carries the traffic and is the BSSID NetworkManager reports as in-use. Pinning the band "worked" only because it forced a single-band association.

Fix

  • bin/omarchy-network-band / bin/omarchy-network-status — select the highest-band link's frequency instead of the first. Non-MLO output is unchanged (a single freq: yields the same value).
  • bin/omarchy-network-band — emit a new mlo\t0|1 line, detected by counting freq: links, so the shell can tell split-link associations apart.
  • shell/plugins/panels/network/Model.jsparseBandStatus reads the flag; bandSectionTitle appends · MLO beside the live band.
  • shell/plugins/panels/network/Panel.qml — new bandMlo property wired into the band header.

The panel's band header now reads:

WI-FI BAND: 5GHZ · MLO
image

and stays plain (WI-FI BAND: 5GHZ, WI-FI BAND: 2.4GHZ) for single-link connections.

Tests

  • New test/shell.d/network-band-test.sh (stubbed iw/nmcli):
    • MLO 2.4+5 → band 5, mlo 1
    • MLO 5+6 → band 6, mlo 1
    • single 5 GHz / 2.4 GHz links → unchanged bands, mlo 0
  • test/shell.d/network-test.sh — coverage for the MLO header variants (live, plain, pinned) and the mlo field in parseBandStatus.
  • ./test/all passes apart from the 3 pre-existing omarchy-pkgs checkout failures on this machine (environment-related, unrelated to this change).

The · MLO suffix intentionally only appears under Automatic (when the header carries the live band); once a band is pinned the pills show instead and the header stays plain — matching the existing design.

@SDCVO
SDCVO marked this pull request as ready for review September 2, 2026 12:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant