Skip to content

imx93-jaguar-eink: Improv BLE advertising starved by Wi-Fi/BT coexistence when board is on Wi-Fi #39

Description

@ajlennon

Problem

On imx93-jaguar-eink, when the board is joined to Wi-Fi, the Improv BLE advertisement stops reliably reaching the air after a few minutes, while BlueZ still reports it as active (ActiveInstances=1). The device becomes effectively undiscoverable to the onboarding app even though nothing has crashed.

This is a Wi-Fi/BT coexistence effect on the shared radio, not a BlueZ registration drop (so the advertising watchdog added in #38 does not catch it — ActiveInstances stays 1).

Evidence (lab, target 25, board on GrosnyIoT)

Discoverability sampled every 30s from a separate scanner:

  • Wi-Fi ON: discoverable for ~5 min, then mostly undiscoverable (rare blips) over the next 15 min. Board reports ActiveInstances=1 throughout; watchdog reads advertising=True.
  • Wi-Fi OFF: 26/26 samples discoverable over 13 min, strong RSSI, zero drops.

So the primary factory-onboarding path (fresh, un-provisioned board = Wi-Fi off) is 100% reliable. The degradation only affects re-onboarding a board that is already on Wi-Fi.

Other observations:

  • Advert survives connect/disconnect cleanly.
  • Adapter power-cycle (bluetoothctl power off/on) and hciconfig hci0 reset do NOT restore on-air advertising from the stuck state; BlueZ auto-re-asserts registration but the radio stays starved.
  • A full improv.service restart does restore it (takes ~20-40s).

Candidate mitigations to investigate

  1. Set an explicit short LE advertising Min/Max interval so adverts survive coexistence gaps (BlueZ LEAdvertisement MinInterval/MaxInterval).
  2. NXP combo coexistence / Wi-Fi power-save driver/firmware config (btnxpuart, moal/mlan).
  3. Pragmatic belt-and-braces: periodic re-assert/bounce of advertising when idle (accepting brief gaps).

Notes

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions