Contact Details
jp-bennett
Checklist
Affected app version
2.7.5
Affected Android version
Android 16
Affected phone model
Pixel 9a and others
Affected node model
Currently testing with a Thinknode-m5
Affected node firmware version
2.7.13
Steps to reproduce the bug
- Connect to node over BLE in Android
- Trigger reboot on node
- Look at Android BLE list and see node is connected
- Look in Meshtastic App, see node is unconnected
Actual behavior
Android sees node as connected, Meshtastic app sees node as not connected.
Expected behavior
Meshtastic app should recognize that node is connected via BLE and start want-config flow to re-establish API connection.
Screenshots/Screen recordings
Will share screen recording privately
Relevant log output
INFO | ??:??:?? 11 [Screen] Done with boot screen
DEBUG | ??:??:?? 11 [Screen] Show standard frames
DEBUG | ??:??:?? 11 [Screen] Show 10 module frames
DEBUG | ??:??:?? 11 [Screen] Added modules. numframes: 10
DEBUG | ??:??:?? 11 [Screen] Finished build frames. numframes: 10
DEBUG | ??:??:?? 11 [Screen] determineMode():
DEBUG | ??:??:?? 11 [Screen] refresh=FULL, reason=FLAGGED_COSMETIC, frameFlags=0x5
DEBUG | ??:??:?? 11 [Screen] Update E-Paper
DEBUG | ??:??:?? 12 [Screen] done
DEBUG | ??:??:?? 12 [Screen] Async full-refresh begins (drop frames)
DEBUG | ??:??:?? 12 [Screen] refresh=SKIPPED, reason=EXCEEDED_RATELIMIT_FAST, frameFlags=0x3
DEBUG | ??:??:?? 12 [GPS] Upgrade time to quality GPS
DEBUG | 12:39:23 12 [GPS] NMEA GPS time set 2025-10-31 17:39:23 age 6
DEBUG | 12:39:25 14 [EInkDynamicDisplay] Async full-refresh complete
INFO | 12:39:25 14 [Screen] BLE authentication complete
DEBUG | 12:39:25 14 [Screen] BluetoothStatus CONNECTED
DEBUG | 12:39:25 14 [Screen] determineMode():
At this point, manually triggering the connection from within the app results in:
DEBUG | 12:43:04 233 [NimbleBluetooth] NimbleBluetooth: handling ToRadio packet, fromPhoneQueueSize=1
INFO | 12:43:04 233 [NimbleBluetooth] Client wants config, nonce=9
INFO | 12:43:04 233 [NimbleBluetooth] BLE onConfigStart
DEBUG | 12:43:05 234 [NimbleBluetooth] Got 6 files in manifest
INFO | 12:43:05 234 [NimbleBluetooth] Start API client config millis=234116
DEBUG | 12:43:05 234 [NimbleBluetooth] FromRadio=STATE_SEND_MY_INFO
INFO | 12:43:05 234 [NimbleBluetooth] getFromRadio=STATE_SEND_UIDATA
Additional information
I suspect the issue is that the Android OS is triggering the re-connection, and the Android app doesn't recognize that the physical BLE connection is back up. When the app is in this state of non-connected, we probably need to be watching the current BLE connections in the background, and when we discover we have a BLE connection to a paired node, restart the want config flow.
Contact Details
jp-bennett
Checklist
I am able to reproduce the bug with the latest version.
I made sure that there are no existing OPEN or CLOSED issues which I could contribute my information to.
I have taken the time to fill in all the required details. I understand that the bug report will be dismissed otherwise.
This issue contains only one bug.
I have read and understood the Contribution Guidelines.
I agree to follow this project's Code of Conduct
Affected app version
2.7.5
Affected Android version
Android 16
Affected phone model
Pixel 9a and others
Affected node model
Currently testing with a Thinknode-m5
Affected node firmware version
2.7.13
Steps to reproduce the bug
Actual behavior
Android sees node as connected, Meshtastic app sees node as not connected.
Expected behavior
Meshtastic app should recognize that node is connected via BLE and start want-config flow to re-establish API connection.
Screenshots/Screen recordings
Will share screen recording privately
Relevant log output
Additional information
I suspect the issue is that the Android OS is triggering the re-connection, and the Android app doesn't recognize that the physical BLE connection is back up. When the app is in this state of non-connected, we probably need to be watching the current BLE connections in the background, and when we discover we have a BLE connection to a paired node, restart the want config flow.