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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions