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
- Set an explicit short LE advertising Min/Max interval so adverts survive coexistence gaps (BlueZ
LEAdvertisement MinInterval/MaxInterval).
- NXP combo coexistence / Wi-Fi power-save driver/firmware config (
btnxpuart, moal/mlan).
- Pragmatic belt-and-braces: periodic re-assert/bounce of advertising when idle (accepting brief gaps).
Notes
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 —
ActiveInstancesstays 1).Evidence (lab, target 25, board on
GrosnyIoT)Discoverability sampled every 30s from a separate scanner:
ActiveInstances=1throughout; watchdog readsadvertising=True.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:
bluetoothctl power off/on) andhciconfig hci0 resetdo NOT restore on-air advertising from the stuck state; BlueZ auto-re-asserts registration but the radio stays starved.improv.servicerestart does restore it (takes ~20-40s).Candidate mitigations to investigate
LEAdvertisementMinInterval/MaxInterval).btnxpuart,moal/mlan).Notes