• Announcements
  • Request for testing and feedback with Bluetooth on Android 14 QPR2 GrapheneOS

Greetings!
Now I'm chiming in, too.

Phone: Pixel 6
Release Channel: Alpha
Build: 2024031400 (version info below the tiles gives me: "14 (AP1A.240305.019.A1)" if that matters)

Bluetooth device: Pebble Time
Connection app: Gadgetbridge 0.79.1 (current stable from February 28)

What I did after OS update:

  • disabled "Hardened memory allocator" in the Bluetooth system app (under Settings / Apps)
  • enabled "Exploit protection compatibility mode" for Gadgetbridge app
  • completely reset Bluetooth and Wifi settings (under Settings / System)
  • rebooted

No change in behaviour, sadly.
Gadgetbridge identifies device during discovery but pairing can't be completed and fails. This worked prior to the QPR2 updates, of course.

Here some excerpts from the system log, filtered for "gadgetbridge" text. If that helps...

--------- switch to events
         1710492773.183  1000  1312  1865 I input_focus: [window=Focus entering 71b793b nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.activities.discovery.DiscoveryActivityV2 (server),reason=reason=Window became focusable. Previous reason: NOT_VISIBLE]
--------- switch to main
         1710492773.185  1000  1312  4245 I ImeTracker: nodomain.freeyourgadget.gadgetbridge:4a9362a7: onRequestHide at ORIGIN_SERVER_HIDE_INPUT reason HIDE_UNSPECIFIED_WINDOW
         1710492773.185  1000  1312  4245 I ImeTracker: nodomain.freeyourgadget.gadgetbridge:4a9362a7: onCancelled at PHASE_SERVER_SHOULD_HIDE
--------- switch to events
         1710492773.669  1000  1312  1632 I wm_destroy_activity: [User=0,Token=60195591,Task ID=635,Component Name=nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity,Reason=finish-imm:idle]
         1710492773.677 10186 14870 14870 I wm_on_stop_called: [Token=60195591,Component Name=nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity,Reason=LIFECYCLER_STOP_ACTIVITY,time=1ms]
         1710492773.677 10186 14870 14870 I wm_on_destroy_called: [Token=60195591,Component Name=nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity,Reason=performDestroy,time=1ms]
--------- switch to system
         1710492773.678  1000  1312  1541 D CoreBackPreview: Window{55544cd u0 nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity}: Setting back callback null
--------- switch to main
         1710492773.680  1000  1312  1541 W InputManager-JNI: Input channel object '55544cd nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity (client)' was disposed without first being removed with the input manager!
--------- switch to events
         1710492774.560  1000  1312  1865 I input_interaction: Interaction with: 71b793b nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.activities.discovery.DiscoveryActivityV2 (server), [Gesture Monitor] swipe-up (server), [Gesture Monitor] edge-swipe (server), PointerEventDispatcher0 (server), 
--------- switch to main
         1710492780.517 10186 14870 14870 I nodomain.freeyourgadget.gadgetbridge.activities.discovery.DiscoveryActivityV2: Using device candidate Pebble Time EFCB: B0:B4:48:9B:EF:CB with coordinator class nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebbleCoordinator
--------- switch to events
         1710492780.533  1000  1312  1541 I wm_create_activity: [User=0,Token=61422306,Task ID=635,Component Name=nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity,Action=NULL,MIME Type=NULL,URI=NULL,Flags=0]
         1710492780.534  1000  1312  1541 I wm_pause_activity: [User=0,Token=176276776,Component Name=nodomain.freeyourgadget.gadgetbridge/.activities.discovery.DiscoveryActivityV2,User Leaving=userLeaving=true,Reason=resumeTopActivity]
--------- switch to system
         1710492780.537  1000  1312  1541 I ActivityTaskManager: START u0 {cmp=nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity (has extras)} with LAUNCH_MULTIPLE from uid 10186 (BAL_ALLOW_VISIBLE_WINDOW) result code=0
--------- switch to events
         1710492780.540 10186 14870 14870 I wm_on_top_resumed_lost_called: [Token=176276776,Component Name=nodomain.freeyourgadget.gadgetbridge.activities.discovery.DiscoveryActivityV2,Reason=topStateChangedWhenResumed]
         1710492780.541 10186 14870 14870 I wm_on_paused_called: [Token=176276776,Component Name=nodomain.freeyourgadget.gadgetbridge.activities.discovery.DiscoveryActivityV2,Reason=performPause,time=1ms]
         1710492780.542  1000  1312  1541 I wm_add_to_stopping: [User=0,Token=176276776,Component Name=nodomain.freeyourgadget.gadgetbridge/.activities.discovery.DiscoveryActivityV2,Reason=makeInvisible]
--------- switch to system
         1710492780.542 10105  1986  2133 V WindowManagerShell: Transition requested (#99): android.os.BinderProxy@67831ad TransitionRequestInfo { type = OPEN, triggerTask = TaskInfo{userId=0 taskId=635 displayId=0 isRunning=true baseIntent=Intent { flg=0x10008000 cmp=nodomain.freeyourgadget.gadgetbridge/.activities.ControlCenterv2 } baseActivity=ComponentInfo{nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2} topActivity=ComponentInfo{nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity} origActivity=null realActivity=ComponentInfo{nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2} numActivities=3 lastActiveTime=1623539 supportsMultiWindow=true resizeMode=1 isResizeable=true minWidth=-1 minHeight=-1 defaultMinSize=220 token=WCT{android.window.IWindowContainerToken$Stub$Proxy@91e0ce2} topActivityType=1 pictureInPictureParams=null shouldDockBigOverlays=false launchIntoPipHostTaskId=-1 lastParentTaskIdBeforePip=-1 displayCutoutSafeInsets=Rect(0, 128 - 0, 0) topActivityInfo=ActivityInfo{2848873 nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity} launchCookies=[] positionInParent=Point(0, 0) parentTaskId=-1 isFocused=true isVisible=true isVisibleRequested=true isSleeping=false locusId=null displayAreaFeatureId=1 isTopActivityTransparent=false appCompatTaskInfo=AppCompatTaskInfo { topActivityInSizeCompat=false topActivityEligibleForLetterboxEducation= false isLetterboxDoubleTapEnabled= false topActivityEligibleForUserAspectRatioButton= false topActivityBoundsLetterboxed= false isFromLetterboxDoubleTap= false topActivityLetterboxVerticalPosition= -1 topActivityLetterboxHorizontalPosition= -1 topActivityLetterboxWidth=-1 topActivityLetterboxHeight=-1 isUserFullscreenOverrideEnabled=false cameraCompatControlState=hidden}}, pipTask = null, remoteTransition = null, displayChange = null, flags = 0, debugId = 99 }
--------- switch to events
         1710492780.543  1000  1312  1541 I wm_restart_activity: [User=0,Token=61422306,Task ID=635,Component Name=nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity]
         1710492780.543  1000  1312  1541 I wm_set_resumed_activity: [User=0,Component Name=nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity,Reason=minimalResumeActivityLocked - onActivityStateChanged]
--------- switch to system
         1710492780.558  1000  1312  1541 I CDM_CompanionDeviceManagerService: associate() request=AssociationRequest { singleDevice = true, deviceFilters = [BluetoothDeviceFilter{mNamePattern=null, mAddress='B0:B4:48:9B:EF:CB', mServiceUuids=[], mServiceUuidMasks=[]}], deviceProfile = null, displayName = null, associatedDevice = null, selfManaged = false, forceConfirmation = false, packageName = null, userId = 0, deviceProfilePrivilegesDescription = null, creationTime = 1710492780556, skipPrompt = false }, package=u0/nodomain.freeyourgadget.gadgetbridge
--------- switch to events
         1710492780.558 10186 14870 14870 I wm_on_create_called: [Token=61422306,Component Name=nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity,Reason=performCreate,time=12ms]
--------- switch to system
         1710492780.559  1000  1312  4245 W ActivityManager: Receiver with filter android.content.IntentFilter@8c1f648 already registered for pid 14870, callerPackage is nodomain.freeyourgadget.gadgetbridge
--------- switch to events
         1710492780.559 10186 14870 14870 I wm_on_start_called: [Token=61422306,Component Name=nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity,Reason=handleStartActivity,time=1ms]
         1710492780.559  1000  1312  1865 I input_focus: [window=Focus leaving 71b793b nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.activities.discovery.DiscoveryActivityV2 (server),reason=reason=Waiting for window because NO_WINDOW]
--------- switch to system
         1710492780.560  1000  1312  4113 W ActivityManager: Receiver with filter android.content.IntentFilter@74ffce1 already registered for pid 14870, callerPackage is nodomain.freeyourgadget.gadgetbridge
--------- switch to events
         1710492780.560 10186 14870 14870 I wm_on_resume_called: [Token=61422306,Component Name=nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity,Reason=RESUME_ACTIVITY,time=0ms]
         1710492780.563 10186 14870 14870 I wm_on_top_resumed_gained_called: [Token=61422306,Component Name=nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity,Reason=topStateChangedWhenResumed]
--------- switch to system
         1710492780.565  1000  1312  4245 D CoreBackPreview: Window{7cf4660 u0 nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=android.window.IOnBackInvokedCallback$Stub$Proxy@8395bd5, mPriority=0, mIsAnimationCallback=false}
--------- switch to events
         1710492780.567  1000  1312  1633 I input_focus: [window=Focus request 7cf4660 nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity,reason=reason=UpdateInputWindows]
         1710492780.573  1000  1312  1629 I wm_activity_launch_time: [User=0,Token=61422306,Component Name=nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity,53]
--------- switch to main
         1710492780.573  1000  1312  1629 I ActivityTaskManager: Displayed nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity for user 0: +53ms
--------- switch to system
         1710492780.573  1000  1312  1629 V WindowManager: Sent Transition (#99) createdAt=03-15 09:53:00.527 via request=TransitionRequestInfo { type = OPEN, triggerTask = TaskInfo{userId=0 taskId=635 displayId=0 isRunning=true baseIntent=Intent { flg=0x10008000 cmp=nodomain.freeyourgadget.gadgetbridge/.activities.ControlCenterv2 } baseActivity=ComponentInfo{nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2} topActivity=ComponentInfo{nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity} origActivity=null realActivity=ComponentInfo{nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2} numActivities=3 lastActiveTime=1623539 supportsMultiWindow=true resizeMode=1 isResizeable=true minWidth=-1 minHeight=-1 defaultMinSize=220 token=WCT{RemoteToken{9760c77 Task{a1ed620 #635 type=standard A=10186:nodomain.freeyourgadget.gadgetbridge}}} topActivityType=1 pictureInPictureParams=null shouldDockBigOverlays=false launchIntoPipHostTaskId=-1 lastParentTaskIdBeforePip=-1 displayCutoutSafeInsets=Rect(0, 128 - 0, 0) topActivityInfo=ActivityInfo{562308d nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity} launchCookies=[] positionInParent=Point(0, 0) parentTaskId=-1 isFocused=true isVisible=true isVisibleRequested=true isSleeping=false locusId=null displayAreaFeatureId=1 isTopActivityTransparent=false appCompatTaskInfo=AppCompatTaskInfo { topActivityInSizeCompat=false topActivityEligibleForLetterboxEducation= false isLetterboxDoubleTapEnabled= false topActivityEligibleForUserAspectRatioButton= false topActivityBoundsLetterboxed= false isFromLetterboxDoubleTap= false topActivityLetterboxVerticalPosition= -1 topActivityLetterboxHorizontalPosition= -1 topActivityLetterboxWidth=-1 topActivityLetterboxHeight=-1 isUserFullscreenOverrideEnabled=false cameraCompatControlState=hidden}}, pipTask = null, remoteTransition = null, displayChange = null, flags = 0, debugId = 99 }
         1710492780.573  1000  1312  1629 V WindowManager:     info={id=99 t=OPEN f=0x0 trk=0 r=[0@Point(0, 0)] c=[
         1710492780.573  1000  1312  1629 V WindowManager:         {null m=OPEN f=FILLS_TASK leash=Surface(name=ActivityRecord{3a93ae2 u0 nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity)/@0xa2ad1b7 sb=Rect(0, 0 - 0, 0) eb=Rect(0, 0 - 1080, 2400) d=-1->0 r=-1->0:-1},
         1710492780.573  1000  1312  1629 V WindowManager:         {null m=TO_BACK f=FILLS_TASK leash=Surface(name=ActivityRecord{a81c528 u0 nodomain.freeyourgadget.gadgetbridge/.activities.discovery.DiscoveryActivityV2)/@0xc8601e9 sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) d=0}
         1710492780.573  1000  1312  1629 V WindowManager:     ]}
         1710492780.573 10105  1986  2133 V WindowManagerShell: onTransitionReady (#99) android.os.BinderProxy@67831ad: {id=99 t=OPEN f=0x0 trk=0 r=[0@Point(0, 0)] c=[{null m=OPEN f=FILLS_TASK leash=Surface(name=ActivityRecord{3a93ae2 u0 nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity)/@0x4260cdb sb=Rect(0, 0 - 0, 0) eb=Rect(0, 0 - 1080, 2400) d=-1->0 r=-1->0:-1},{null m=TO_BACK f=FILLS_TASK leash=Surface(name=ActivityRecord{a81c528 u0 nodomain.freeyourgadget.gadgetbridge/.activities.discovery.DiscoveryActivityV2)/@0x8806378 sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) d=0}]}
         1710492780.574 10105  1986  2133 V WindowManagerShell: Transition doesn't have explicit remote, search filters for match for {id=99 t=OPEN f=0x0 trk=0 r=[0@Point(0, 0)] c=[{null m=OPEN f=FILLS_TASK leash=Surface(name=ActivityRecord{3a93ae2 u0 nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity)/@0x4260cdb sb=Rect(0, 0 - 0, 0) eb=Rect(0, 0 - 1080, 2400) d=-1->0 r=-1->0:-1},{null m=TO_BACK f=FILLS_TASK leash=Surface(name=ActivityRecord{a81c528 u0 nodomain.freeyourgadget.gadgetbridge/.activities.discovery.DiscoveryActivityV2)/@0x8806378 sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) d=0}]}
         1710492780.574 10105  1986  2133 V WindowManagerShell: start default transition animation, info = {id=99 t=OPEN f=0x0 trk=0 r=[0@Point(0, 0)] c=[{null m=OPEN f=FILLS_TASK leash=Surface(name=ActivityRecord{3a93ae2 u0 nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity)/@0x4260cdb sb=Rect(0, 0 - 0, 0) eb=Rect(0, 0 - 1080, 2400) d=-1->0 r=-1->0:-1},{null m=TO_BACK f=FILLS_TASK leash=Surface(name=ActivityRecord{a81c528 u0 nodomain.freeyourgadget.gadgetbridge/.activities.discovery.DiscoveryActivityV2)/@0x8806378 sb=Rect(0, 0 - 1080, 2400) eb=Rect(0, 0 - 1080, 2400) d=0}]}
--------- switch to events
         1710492780.579  1000  1312  4234 I wm_pause_activity: [User=0,Token=61422306,Component Name=nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity,User Leaving=userLeaving=true,Reason=resumeTopActivity]
         1710492780.582 10186 14870 14870 I wm_on_top_resumed_lost_called: [Token=61422306,Component Name=nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity,Reason=topStateChangedWhenResumed]
         1710492780.583 10186 14870 14870 I wm_on_paused_called: [Token=61422306,Component Name=nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity,Reason=performPause,time=0ms]
--------- switch to system
         1710492780.611 10105  1986  2133 V WindowManagerShell: Transition requested (#100): android.os.BinderProxy@109b0fd TransitionRequestInfo { type = OPEN, triggerTask = TaskInfo{userId=0 taskId=635 displayId=0 isRunning=true baseIntent=Intent { flg=0x10008000 cmp=nodomain.freeyourgadget.gadgetbridge/.activities.ControlCenterv2 } baseActivity=ComponentInfo{nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2} topActivity=ComponentInfo{com.android.companiondevicemanager/com.android.companiondevicemanager.CompanionDeviceActivity} origActivity=null realActivity=ComponentInfo{nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2} numActivities=4 lastActiveTime=1623583 supportsMultiWindow=true resizeMode=1 isResizeable=true minWidth=-1 minHeight=-1 defaultMinSize=220 token=WCT{android.window.IWindowContainerToken$Stub$Proxy@5bba1f2} topActivityType=1 pictureInPictureParams=null shouldDockBigOverlays=false launchIntoPipHostTaskId=-1 lastParentTaskIdBeforePip=-1 displayCutoutSafeInsets=Rect(0, 128 - 0, 0) topActivityInfo=ActivityInfo{f67e043 com.android.companiondevicemanager.CompanionDeviceActivity} launchCookies=[] positionInParent=Point(0, 0) parentTaskId=-1 isFocused=true isVisible=true isVisibleRequested=true isSleeping=false locusId=null displayAreaFeatureId=1 isTopActivityTransparent=true appCompatTaskInfo=AppCompatTaskInfo { topActivityInSizeCompat=false topActivityEligibleForLetterboxEducation= false isLetterboxDoubleTapEnabled= false topActivityEligibleForUserAspectRatioButton= false topActivityBoundsLetterboxed= false isFromLetterboxDoubleTap= false topActivityLetterboxVerticalPosition= -1 topActivityLetterboxHorizontalPosition= -1 topActivityLetterboxWidth=-1 topActivityLetterboxHeight=-1 isUserFullscreenOverrideEnabled=false cameraCompatControlState=hidden}}, pipTask = null, remoteTransition = null, displayChange = null, flags = 0, debugId = 100 }
         1710492780.650  1000  1312  1629 V WindowManager: Sent Transition (#100) createdAt=03-15 09:53:00.577 via request=TransitionRequestInfo { type = OPEN, triggerTask = TaskInfo{userId=0 taskId=635 displayId=0 isRunning=true baseIntent=Intent { flg=0x10008000 cmp=nodomain.freeyourgadget.gadgetbridge/.activities.ControlCenterv2 } baseActivity=ComponentInfo{nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2} topActivity=ComponentInfo{com.android.companiondevicemanager/com.android.companiondevicemanager.CompanionDeviceActivity} origActivity=null realActivity=ComponentInfo{nodomain.freeyourgadget.gadgetbridge/nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2} numActivities=4 lastActiveTime=1623583 supportsMultiWindow=true resizeMode=1 isResizeable=true minWidth=-1 minHeight=-1 defaultMinSize=220 token=WCT{RemoteToken{9760c77 Task{a1ed620 #635 type=standard A=10186:nodomain.freeyourgadget.gadgetbridge}}} topActivityType=1 pictureInPictureParams=null shouldDockBigOverlays=false launchIntoPipHostTaskId=-1 lastParentTaskIdBeforePip=-1 displayCutoutSafeInsets=Rect(0, 128 - 0, 0) topActivityInfo=ActivityInfo{b1aeabb com.android.companiondevicemanager.CompanionDeviceActivity} launchCookies=[] positionInParent=Point(0, 0) parentTaskId=-1 isFocused=true isVisible=true isVisibleRequested=true isSleeping=false locusId=null displayAreaFeatureId=1 isTopActivityTransparent=true appCompatTaskInfo=AppCompatTaskInfo { topActivityInSizeCompat=false topActivityEligibleForLetterboxEducation= false isLetterboxDoubleTapEnabled= false topActivityEligibleForUserAspectRatioButton= false topActivityBoundsLetterboxed= false isFromLetterboxDoubleTap= false topActivityLetterboxVerticalPosition= -1 topActivityLetterboxHorizontalPosition= -1 topActivityLetterboxWidth=-1 topActivityLetterboxHeight=-1 isUserFullscreenOverrideEnabled=false cameraCompatControlState=hidden}}, pipTask = null, remoteTransition = null, displayChange = null, flags = 0, debugId = 100 }
--------- switch to events
         1710492780.656  1000  1312  1632 I wm_stop_activity: [User=0,Token=176276776,Component Name=nodomain.freeyourgadget.gadgetbridge/.activities.discovery.DiscoveryActivityV2]
         1710492780.665 10186 14870 14870 I wm_on_stop_called: [Token=176276776,Component Name=nodomain.freeyourgadget.gadgetbridge.activities.discovery.DiscoveryActivityV2,Reason=STOP_ACTIVITY_ITEM,time=2ms]
--------- switch to system
         1710492784.665  1000  1312  1541 W NotificationService: Toast already killed. pkg=nodomain.freeyourgadget.gadgetbridge token=android.os.BinderProxy@f84bafa
         1710492787.257  1000  1312  4234 W NotificationService: Toast already killed. pkg=nodomain.freeyourgadget.gadgetbridge token=android.os.BinderProxy@6b46d7f
--------- switch to events
         1710492800.665  1000  1312  4113 I wm_set_resumed_activity: [User=0,Component Name=nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity,Reason=resumeTopActivity - onActivityStateChanged]
         1710492800.667  1000  1312  4113 I wm_resume_activity: [User=0,Token=61422306,Task ID=635,Component Name=nodomain.freeyourgadget.gadgetbridge/.devices.pebble.PebblePairingActivity]
         1710492800.672 10186 14870 14870 I wm_on_activity_result_called: [Token=61422306,Component Name=nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity,Reason=ACTIVITY_RESULT]

Cheers,
Alex

GrapheneOS

I can report that my experience is the same as everyone else after the latest update with all the toggles tested. Thanks again for doing this "experiment". I do believe you guys will be looking into this and get it resolved eventually. My question is, will their be an active investigation into this issue until it's resolved? I know this isn't the fault of GOS. I'm asking because I'm wanting to hold fast until a fix is released. I've been on GOS for 5 years and am very hesitant to go stock if I can wait it out. Thanks again for going above and beyond as always.

GrapheneOS is on Bluetooth module version 990090000 from the Android 14 QPR2 release. Stock Pixel OS is still using 341313030, without tags available for that. This is likely the reason for all remaining issues. The release they're using doesn't have tags in AOSP so we can't build it.

    pinpin The Bluetooth module may be the main case it's happening. They seem to be forgetting to tag the releases because it's not an official mainline module yet.

    @GrapheneOS What do your statements mean? We need to wait for google? From your experience how long would that take? Is this already addressed to google? Will you address this? Should we? Does google even give a shit about that? What is the difference in the module? Is the code on github to compare versions? And last but not least, why do we have a different version as plain android from google? Tbh I don't get it.

      PeterPan We're using the standard Android Bluetooth module from AOSP. They're not using that. They're using a mainline module variant of it but haven't started shipping it through the Play Store so there aren't tags for it yet. This likely causes the additional issues because there are additional changes in what we're using via AOSP while they don't have all the QPR2 changes and may have other changes. We're looking into it.

      I have the Google Pixel 6 and Galaxy Watch 6 Classic. Can't reconnect the watch after it has been disconnected. Release: 2024031400

      GrapheneOS Just FYI, somewhat unrelated to this discussion, the alpha I'm now on has pretty substantial battery drain. I can usually get about 3 days out of a single charge and I'm now getting a warning after only half a day. I'm not sure it's related to the bluetooth issues though since the bluetooth connection issues are exactly the same with both my pebbles regardless of the toggles.

      Thanks for adding those though, I'm really glad you are working with the community to figure this out, even if there ends up being nothing that can be done.

      Pixel 7 Pro - Alpha release - Build: 2024031400
      bluetooth device: OBDLink MX+

      No change using alpha release for me.

      Also tried the "Hardened memory allocator" off on two apps and still unable to connect.

      Have used the OBDLink MX+ on a spare phone in the meantime and confirmed it works normally (not QRP2 tho)

      Since the 2 workarounds we added don't appear to have accomplished anything, they'll be removed in the next release. We'll try to figure out something else to fix the issues for the next release. The main issue is that we don't have one of the few devices with an issue to debug it ourselves. We need to purchase one of these Bluetooth accessories for one of our developers.

      Galaxy Watch 5 and 6 seem like the main devices with an issue and the OBDLink MX+ / OBDLink LX are a secondary one. We expect the old medical device mentioned above is broken for a separate reason and may not work on Android 14 QPR2 with stock OS either, so we can't do much about that beyond waiting for them to work around it if they do that. We'd like to get the Galaxy Watch 5 / 6 and OBDLink issue resolved ASAP but again it's very hard to debug it without access to one.

        GrapheneOS I have a spare OBDLink LX adapter if you want it for testing. If so, just let me know where to send it to.

        GrapheneOS

        Like I already said. I would donate some bucks. Price for the 5 Pro (non LTE) is round about 245€.

        Who's with me? And where to with the money? PayPal fine? 20€ from me for sure. Let's see how many ppl we can find who would donate.

          Does it have to be a pro? Could be cheaper If there's another model we can use.

          Just donated 25.00. All we need is 85.00 more and the team has a watch.

          GrapheneOS I also have a spare obdlink mx if needed .
          Is your PayPal account back up and running for donations ?

          We've purchased a Galaxy Watch 6 Classic with eSIM support for a bit under 250 USD for one of the developers. It should arrive in a few days.

          We've determined that the stock Pixel OS is using a different Bluetooth module version from what's available in AOSP. This is almost certainly what leads to the issues not occurring on the stock OS. They appear to have done something like taking a snapshot of the main branch, applying security patches and testing it via the CTS, etc. without doing real world testing. The stock OS is using different code which was properly tested and fixed up before release. They either pushed the wrong Bluetooth module tag to AOSP due to a mistake or they are building it from an APEX (mainline) module despite it not being updated as a Google Play mainline module yet. It's likely the latter, and they forgot to push APEX tags for it because it's not an official mainline module yet. We've contacted them and hopefully they'll resolve this by pushing tags soon. As soon as proper tags are available, we can get to work building the code they shipped rather than the broken code in AOSP.

          This is an unfortunate situation beyond our control. Anyone building AOSP QPR2 will face the same issues. There isn't a Google Play mainline module for Bluetooth yet which would result in there being tags since mainline modules are fully open source.

          We can only hope they push tags quickly. It's unrealistic for us to figure out how to fix the issues ourselves.

          AOSP Bluetooth code in QPR2 likely DOES pass the CTS, but they didn't do enough real world testing and are unaware that it's broken with specific devices. Stock Pixel OS code appears somewhat older, not newer, and we likely got new bugs from the main branch they forked for QPR2 AOSP which they avoided for stock Pixel OS by building something older. The issues we got from AOSP QPR2 may be fixed in main already but it may have new issues and we also can't simply use that code since it won't build due to dependencies on changes elsewhere.

          We're doing our best and this is in fact not caused by any GrapheneOS changes or features.