[Bug]: General bluetooth issues - parent ticket
Parent ticket
App Version
.35 +
Code of Conduct
- [x] I agree to follow this project's Code of Conduct
@shalberd That is lacking in usefulness enough to get you removed from closed. Symptoms, logs, hardware spec are the bare minimum.
That is lacking in usefulness enough to get you removed from closed
the ticket is not closed ... well, I did get removed / kicked off Bluetooth randomly when using Android App v2.7.-closed.1.
However, now, using the latest build release https://github.com/meshtastic/Meshtastic-Android/releases/tag/v2.7.0-closed.2 from today, no more BLE issues.
Looks like BLE connectivity parts are a bit related the the latest builds being a rush job, which is ok. Just wanted to say: issue no longer occuring for me, I can move out of BLE range, get back in, now I get reconnected, no issues.
@shalberd you aren't part of the test group. Downloading unreleased test builds will lead to instability due to the nature of development. Don't do that if you want stable.
I never expected perfection, just wanted to give feedback, never mind ... no hard feelings from my side
@shalberd Sorry, I just assumed that if you were on that build, you were in the 'closed testing' group rather than grabbing it yourself. We appreciate the feedback, but we need details, especially with these longer fix bugs, and even more so if you are on the test builds. The reason we've gone to closed groups is to try and get more specific feedback, and less "This doesn't work"
Saw my report was closed and I was directed here (thought mine was more of an app issue than a bluetooth one). I wanted to update that the issue I was having is not happening on 2.7.1 of the app with any device.
Saw my report was closed and I was directed here (thought mine was more of an app issue than a bluetooth one). I wanted to update that the issue I was having is not happening on 2.7.1 of the app with any device.
this is a parent ticket for overall app bt issues, which yours counts as 🤷 , we don't need duplicate tickets for same root cause.
Saw my report was closed and I was directed here (thought mine was more of an app issue than a bluetooth one). I wanted to update that the issue I was having is not happening on 2.7.1 of the app with any device.
this is a parent ticket for oveall app bt issues, which yours counts as 🤷 , we don't need duplicate tickets for same root cause.
Understandable, apologies.
Android app never reconnects to a node unless force-closed.
STR
- Connect to a node via BLE.
- Go away from the node until the app shows the node as disconnected.
- Walk back to the node.
The app never reconnects to the node, even if you click on it in the nodes list. It must be force-closed and restarted to reconnect.
Android log shows:
I/bt_stack(21209): [INFO:btm_ble_bgconn.cc(429)] Already connection initiated (or) No Pending connections(or) Resources of lcb are exhausted and E/bt_btm(21209): btm_ble_read_remote_features_complete: failed for handle: 0x0009, status 0x3e
Android 13, app v2.7.4 (29319275) google.
2.7.7 (29319413) google
Drops the connection again.
I cant makeout a pattern. It stays sometime for 20 minutes, sometimes it drops it after 2 to 5 minutes and so on. Different devices (Heltec V3, Tpager, Tdeck, T114), the same on all of them. different FW versions, 2.7.13 - 2.7.15.
edit
I also notices the BL strengt show allways a bad reception now. The devices sit on the same table.
👀 https://github.com/NordicSemiconductor/Kotlin-BLE-Library/pull/242
I have a Huawei Mate 10 Pro running Android 12. Meshtastic Android APK version 2.75 works fine with Bluetooth.
But versions 2.76 and 2.77 do not work with any device — neither Heltec nor SenseCAP T1000E.
So I reinstalled the older 2.75 APK, and luckily sideloading still works on Android. That was the only solution. I tried everything: removing devices, deleting the app, reinstalling — nothing helped. The beta version also doesn’t work with Bluetooth or IP.
Sadly, my Meshtastic devices are useless without Bluetooth, unless I use a USB-C cable from the Heltec to my phone.
You’re doing a great job, but Bluetooth is very important because most devices depend on it. I hope you can find a solution and make it work again.
Knud ;O)
Here are some logs from my Pixel 7a running android 16 with Meshtastic 2.7.7 (29319424) during the time where the app would not connect to my T1000-E. I have the same issue on my Pixel 9a with the same android/version. Rolling meshtastic back to 2.7.5 works. As mentioned in #3812:
Adb log (meshtastic only):
11-25 13:52:43.785 1665 1769 V WindowManager: {WCT{RemoteToken{c155b39 Task{55cebb8 #1000008 type=standard A=1010275:com.geeksville.mesh}}} m=TO_BACK f=NONE leash=Surface(name=Task=1000008)/@0x701983 sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) epz=Point(1080, 2400) d=0 taskParent=-1 winMode=1},
11-25 13:52:43.824 1665 3662 D CoreBackPreview: Window{8beb2e8 u10 com.geeksville.mesh/com.geeksville.mesh.MainActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@94bd120, mPriority=-1, mIsAnimationCallback=false, mOverrideBehavior=0}
11-25 13:52:46.051 1665 2311 W PackageConfigPersister: App-specific configuration not found for packageName: com.geeksville.mesh and userId: 10
11-25 13:52:47.385 1665 3670 I ActivityManager: Force stopping com.geeksville.mesh appid=10275 user=10: from pid 5591 (com.android.settings)
11-25 13:52:47.388 1665 3670 I ActivityManager: Killing 13389:com.geeksville.mesh/u10a275 (adj 50): stop com.geeksville.mesh due to from pid 5591 (com.android.settings)
11-25 13:52:47.393 1665 3670 W ForegroundServiceTypeLoggerModule: Logger should be tracking FGS types correctly for UID 1010275 in package com.geeksville.mesh
11-25 13:52:47.393 1665 3670 W ForegroundServiceTypeLoggerModule: Logger should be tracking FGS types correctly for UID 1010275 in package com.geeksville.mesh
11-25 13:52:47.393 1665 3670 W ForegroundServiceTypeLoggerModule: Logger should be tracking FGS types correctly for UID 1010275 in package com.geeksville.mesh
11-25 13:52:47.393 1665 3670 W ForegroundServiceTypeLoggerModule: Logger should be tracking FGS types correctly for UID 1010275 in package com.geeksville.mesh
11-25 13:52:47.394 1665 3670 W ActivityTaskManager: Force removing ActivityRecord{242912795 u10 com.geeksville.mesh/.MainActivity t1000008 f}}: app died, no saved state
11-25 13:52:47.396 1665 1944 W UsageStatsService: Unexpected activity event reported! (com.geeksville.mesh/com.geeksville.mesh.MainActivity event : 23 instanceId : 11705745)
11-25 13:52:47.409 1665 3670 I AppsFilter: interaction: PackageSetting{81f43d4 com.google.android.microdroid.empty_payload/10291} -> PackageSetting{4595a51 com.geeksville.mesh/10275} BLOCKED
11-25 13:52:47.470 1665 1975 V ActivityManager: Got obituary of 13389:com.geeksville.mesh
11-25 13:52:49.837 1665 2509 V WindowManager: DesktopModeLaunchParamsModifier: phase= 0 task=null activity=ActivityRecord{215051666 u10 com.geeksville.mesh/.MainActivity desktop mode is not enabled, skipping
11-25 13:52:49.837 1665 2509 V WindowManager: TaskLaunchParamsModifier:phase=0 task=null activity=ActivityRecord{215051666 u10 com.geeksville.mesh/.MainActivity t-1} display-from-option=0 display-id=0 task-display-area-windowing-mode=1 suggested-display-area=DefaultTaskDisplayArea@45653668
11-25 13:52:49.837 1665 2509 V WindowManager: DesktopModeLaunchParamsModifier: phase= 3 task=null activity=ActivityRecord{215051666 u10 com.geeksville.mesh/.MainActivity t-1} desktop mode is not enabled, skipping
11-25 13:52:49.838 1665 2509 V WindowManager: TaskLaunchParamsModifier:phase=3 task=null activity=ActivityRecord{215051666 u10 com.geeksville.mesh/.MainActivity t-1} display-from-option=0 display-id=0 task-display-area-windowing-mode=1 suggested-display-area=DefaultTaskDisplayArea@45653668 inherit-from-source=fullscreen non-freeform-task-display-area display-area=DefaultTaskDisplayArea@45653668 default-portrait freeform-size-mismatch=Rect(272, 665 - 808, 1745)
11-25 13:52:49.840 1665 2509 V WindowManager: DesktopModeLaunchParamsModifier: phase= 3 task=Task{57a5363 #1000010 type=standard A=1010275:com.geeksville.mesh} activity=ActivityRecord{215051666 u10 com.geeksville.mesh/.MainActivity t-1} desktop mode is not enabled, skipping
11-25 13:52:49.840 1665 2509 V WindowManager: TaskLaunchParamsModifier:phase=3 task=Task{57a5363 #1000010 type=standard A=1010275:com.geeksville.mesh} activity=ActivityRecord{215051666 u10 com.geeksville.mesh/.MainActivity t-1} display-from-option=0 display-id=0 task-display-area-windowing-mode=1 suggested-display-area=DefaultTaskDisplayArea@45653668 inherit-from-source=fullscreen non-freeform-task-display-area display-area=DefaultTaskDisplayArea@45653668 default-portrait freeform-size-mismatch=Rect(272, 665 - 808, 1745)
11-25 13:52:49.844 1665 2509 I ActivityTaskManager: START u10 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 xflg=0x4 cmp=com.geeksville.mesh/.MainActivity bnds=[560,1324][776,1588]} with LAUNCH_SINGLE_TOP from uid 1010204 (com.google.android.apps.nexuslauncher) (sr=66785247) (BAL_ALLOW_VISIBLE_WINDOW) result code=0
11-25 13:52:49.844 2114 2138 V WindowManagerShell: Transition requested (#83): android.os.BinderProxy@d1749a9 TransitionRequestInfo { type = OPEN, triggerTask = TaskInfo{userId=10 taskId=1000010 effectiveUid=1010275 displayId=0 isRunning=true baseIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.geeksville.mesh/.MainActivity } baseActivity=ComponentInfo{com.geeksville.mesh/com.geeksville.mesh.MainActivity} topActivity=ComponentInfo{com.geeksville.mesh/com.geeksville.mesh.MainActivity} origActivity=null realActivity=ComponentInfo{com.geeksville.mesh/com.geeksville.mesh.MainActivity} numActivities=1 lastActiveTime=14365340 supportsMultiWindow=true resizeMode=1 isResizeable=true minWidth=-1 minHeight=-1 defaultMinSize=220 token=WCT{android.os.BinderProxy@d120b2e} topActivityType=1 pictureInPictureParams=null shouldDockBigOverlays=false launchIntoPipHostTaskId=-1 lastParentTaskIdBeforePip=-1 displayCutoutSafeInsets=Rect(0, 118 - 0, 0) topActivityInfo=ActivityInfo{3aaf6cf com.geeksville.mesh.MainActivity} launchCookies=[android.os.BinderProxy@a18585c] positionInParent=Point(0, 0) parentTaskId=-1 isFocused=false isVisible=false isVisibleRequested=false isTopActivityNoDisplay=false isSleeping=false locusId=null displayAreaFeatureId=1 isTopActivityTransparent=false isActivityStackTransparent=false lastNonFullscreenBounds=Rect(272, 665 - 808, 1745) capturedLink=null capturedLinkTimestamp=0 requestedVisibleTypes=-9 topActivityRequestOpenInBrowserEducationTimestamp=0 appCompatTaskInfo=AppCompatTaskInfo { topActivityInSizeCompat=false eligibleForLetterboxEducation= false isLetterboxEducationEnabled= false isLetterboxDoubleTapEnabled= false eligibleForUserAspectRatioButton= false topActivityBoundsLetterboxed= false isFromLetterboxDoubleTap= false topActivityLetterboxVerticalPosition= -1 topActivityLetterboxHorizontalPosition= -1 topActivityLetterboxWidth=-1 topActivityLetterboxHeight=-1 topActivityAppBounds=Rect(0, 0 - 1080, 2400) isUserFullscreenOverrideEnabled=false isSystemFullscreenOverrideEnabled=false hasMinAspectRatioOverride=false topActivityLetterboxBounds=null cameraCompatTaskInfo=CameraCompatTaskInfo { freeformCameraCompatMode=inactiveundefined} topNonResizableActivityAspectRatio=-1.0} topActivityMainWindowFrame=null isAppBubble=false}, pipChange = null, remoteTransition = RemoteTransition { remoteTransition = android.window.IRemoteTransition$Stub$Proxy@a71d765, appThread = android.app.IApplicationThread$Stub$Proxy@f37ac3a, debugName = QuickstepLaunch }, displayChange = null, flags = 0, debugId = 83 }
11-25 13:52:49.850 1665 3966 I AppsFilter: interaction: PackageSetting{81f43d4 com.google.android.microdroid.empty_payload/10291} -> PackageSetting{a724ab7 com.geeksville.mesh/10275} BLOCKED
11-25 13:52:49.867 1665 1795 I ActivityManager: Start proc 6323:com.geeksville.mesh/u10a275 for next-top-activity {com.geeksville.mesh/com.geeksville.mesh.MainActivity}
11-25 13:52:49.868 1665 1769 V WindowManager: Sent Transition (#83) createdAt=11-25 13:52:49.837 via request=TransitionRequestInfo { type = OPEN, triggerTask = TaskInfo{userId=10 taskId=1000010 effectiveUid=1010275 displayId=0 isRunning=true baseIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.geeksville.mesh/.MainActivity } baseActivity=ComponentInfo{com.geeksville.mesh/com.geeksville.mesh.MainActivity} topActivity=ComponentInfo{com.geeksville.mesh/com.geeksville.mesh.MainActivity} origActivity=null realActivity=ComponentInfo{com.geeksville.mesh/com.geeksville.mesh.MainActivity} numActivities=1 lastActiveTime=14365340 supportsMultiWindow=true resizeMode=1 isResizeable=true minWidth=-1 minHeight=-1 defaultMinSize=220 token=WCT{RemoteToken{fabada8 Task{57a5363 #1000010 type=standard A=1010275:com.geeksville.mesh}}} topActivityType=1 pictureInPictureParams=null shouldDockBigOverlays=false launchIntoPipHostTaskId=-1 lastParentTaskIdBeforePip=-1 displayCutoutSafeInsets=Rect(0, 118 - 0, 0) topActivityInfo=ActivityInfo{2f250c1 com.geeksville.mesh.MainActivity} launchCookies=[android.os.BinderProxy@c0d6066] positionInParent=Point(0, 0) parentTaskId=-1 isFocused=false isVisible=false isVisibleRequested=false isTopActivityNoDisplay=false isSleeping=false locusId=null displayAreaFeatureId=1 isTopActivityTransparent=false isActivityStackTransparent=false lastNonFullscreenBounds=Rect(272, 665 - 808, 1745) capturedLink=null capturedLinkTimestamp=0 requestedVisibleTypes=-9 topActivityRequestOpenInBrowserEducationTimestamp=0 appCompatTaskInfo=AppCompatTaskInfo { topActivityInSizeCompat=false eligibleForLetterboxEducation= false isLetterboxEducationEnabled= false isLetterboxDoubleTapEnabled= false eligibleForUserAspectRatioButton= false topActivityBoundsLetterboxed= false isFromLetterboxDoubleTap= false topActivityLetterboxVerticalPosition= -1 topActivityLetterboxHorizontalPosition= -1 topActivityLetterboxWidth=-1 topActivityLetterboxHeight=-1 topActivityAppBounds=Rect(0, 0 - 1080, 2400) isUserFullscreenOverrideEnabled=false isSystemFullscreenOverrideEnabled=false hasMinAspectRatioOverride=false topActivityLetterboxBounds=null cameraCompatTaskInfo=CameraCompatTaskInfo { freeformCameraCompatMode=inactiveundefined} topNonResizableActivityAspectRatio=-1.0} topActivityMainWindowFrame=null isAppBubble=false}, pipChange = null, remoteTransition = RemoteTransition { remoteTransition = android.window.IRemoteTransition$Stub$Proxy@de1fc54, appThread = android.app.IApplicationThread$Stub$Proxy@11237fd, debugName = QuickstepLaunch }, displayChange = null, flags = 0, debugId = 83 }
11-25 13:52:49.868 1665 1769 V WindowManager: {WCT{RemoteToken{fabada8 Task{57a5363 #1000010 type=standard A=1010275:com.geeksville.mesh}}} m=OPEN f=NONE leash=Surface(name=Task=1000010)/@0x3aa949a sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) epz=Point(1080, 2400) d=0 taskParent=-1 winMode=1},
11-25 13:52:49.994 1665 2308 I ActivityManager: Background started FGS: Allowed [callingPackage: com.geeksville.mesh; callingUid: 1010275; uidState: TOP ; uidBFSL: [BFSL]; intent: Intent { xflg=0x4 cmp=com.geeksville.mesh/.service.MeshService }; code:PROC_STATE_TOP; tempAllowListReason:<null>; allowWiu:12; targetSdkVersion:36; callerTargetSdkVersion:36; startForegroundCount:0; bindFromPackage:null: isBindService:false]
11-25 13:52:50.051 1665 3966 I ActivityManager: Background started FGS: Allowed [callingPackage: com.geeksville.mesh; callingUid: 1010275; uidState: TOP ; uidBFSL: [BFSL]; intent: Intent { xflg=0x4 cmp=com.geeksville.mesh/.service.MeshService }; code:PROC_STATE_TOP; tempAllowListReason:<null>; allowWiu:12; targetSdkVersion:36; callerTargetSdkVersion:36; startForegroundCount:0; bindFromPackage:null: isBindService:true]
11-25 13:52:50.056 1665 2311 D CoreBackPreview: Window{ad67b67 u10 com.geeksville.mesh/com.geeksville.mesh.MainActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@5aab4e0, mPriority=-1, mIsAnimationCallback=false, mOverrideBehavior=0}
11-25 13:52:50.293 1665 2311 W PackageConfigPersister: App-specific configuration not found for packageName: com.geeksville.mesh and userId: 10
11-25 13:52:51.062 1665 2311 D CoreBackPreview: Window{ad67b67 u10 com.geeksville.mesh/com.geeksville.mesh.MainActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@aab59d2, mPriority=0, mIsAnimationCallback=true, mOverrideBehavior=0}
11-25 13:53:21.973 1665 3662 D CoreBackPreview: Window{ad67b67 u10 com.geeksville.mesh/com.geeksville.mesh.MainActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@68fda1a, mPriority=-1, mIsAnimationCallback=false, mOverrideBehavior=0}
11-25 13:53:25.045 1665 2309 D CoreBackPreview: Window{ad67b67 u10 com.geeksville.mesh/com.geeksville.mesh.MainActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@1781a54, mPriority=0, mIsAnimationCallback=true, mOverrideBehavior=0}
11-25 13:53:25.095 1665 1769 V WindowManager: {WCT{RemoteToken{fabada8 Task{57a5363 #1000010 type=standard A=1010275:com.geeksville.mesh}}} m=TO_FRONT f=NONE p=WCT{RemoteToken{1344002 DefaultTaskDisplayArea@45653668}} leash=Surface(name=Task=1000010)/@0x3aa949a sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) epz=Point(1080, 2400) d=0 taskParent=-1 winMode=1},
11-25 13:53:25.206 1665 3663 W PackageConfigPersister: App-specific configuration not found for packageName: com.geeksville.mesh and userId: 10
11-25 13:53:26.115 1665 1769 V WindowManager: {WCT{RemoteToken{fabada8 Task{57a5363 #1000010 type=standard A=1010275:com.geeksville.mesh}}} m=TO_BACK f=NONE leash=Surface(name=Task=1000010)/@0x3aa949a sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) epz=Point(1080, 2400) d=0 taskParent=-1 winMode=1},
11-25 13:53:26.151 1665 3670 D CoreBackPreview: Window{ad67b67 u10 com.geeksville.mesh/com.geeksville.mesh.MainActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@693e2d1, mPriority=-1, mIsAnimationCallback=false, mOverrideBehavior=0}
Meshtastic app logs:
meshtastic_debug_20251125_135643.txt
Adb logs (whole log, not filtered to meshtastic):
This is coming in 2.7.8 - no promises, but it might solve the issue