Can't connect to Omnipod DASH pods after Android 15 upgrade
Phone: Pixel 9 Pro Android version: Android 15 (stable) Version: 3.2.0.4 (Edit: Tried with latest dev as well [806a18f] same problem)
After upgrading to Android 15, the app can't communicate with Dash. After rebooting the phone, a single handshake works but nothing after. Similarly, I was able to pair a new pod under Android 15, but any connection after times out.
@AdrianLxM @avereha @bartsopers @vanelsberg could any of you take a look at this? Thank you!
03:54:15.548 [RxCachedThreadScheduler-63] D/AUTOMATION: [AutomationPlugin.processActions$automation_fullRelease():255]: processActions
03:54:15.552 [RxCachedThreadScheduler-63] D/AUTOMATION: [TriggerBg.shouldRun():62]: NOT ready for execution: Glucose is lesser than 3.8 MMOL
03:54:15.583 [RxCachedThreadScheduler-67] D/PUMPBTCOMM: [Connection.connectionState():171]: GATT connection state: 2
03:54:15.628 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 8
03:54:15.730 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 8
03:54:15.832 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 8
03:54:15.934 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 8
03:54:16.037 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 8
03:54:16.087 [RxCachedThreadScheduler-67] D/PUMPBTCOMM: [Connection.connectionState():171]: GATT connection state: 2
03:54:16.139 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 8
03:54:16.241 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 8
03:54:16.343 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 9
03:54:16.446 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 9
03:54:16.549 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 9
03:54:16.592 [RxCachedThreadScheduler-67] D/PUMPBTCOMM: [Connection.connectionState():171]: GATT connection state: 2
03:54:16.651 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 9
03:54:16.755 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 9
03:54:16.856 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 9
03:54:16.959 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 9
03:54:17.061 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 9
03:54:17.098 [RxCachedThreadScheduler-67] D/PUMPBTCOMM: [Connection.connectionState():171]: GATT connection state: 2
03:54:17.163 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 9
03:54:17.265 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 9
03:54:17.367 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 10
03:54:17.469 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 10
03:54:17.571 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 10
03:54:17.606 [RxCachedThreadScheduler-67] D/PUMPBTCOMM: [Connection.connectionState():171]: GATT connection state: 2
03:54:17.674 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 10
03:54:17.776 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 10
03:54:17.878 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 10
03:54:17.980 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 10
03:54:18.083 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 10
03:54:18.112 [RxCachedThreadScheduler-67] D/PUMPBTCOMM: [Connection.connectionState():171]: GATT connection state: 2
03:54:18.185 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 10
03:54:18.288 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 10
03:54:18.390 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 11
03:54:18.493 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 11
03:54:18.594 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 11
03:54:18.616 [RxCachedThreadScheduler-67] D/PUMPBTCOMM: [Connection.connectionState():171]: GATT connection state: 2
03:54:18.697 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 11
03:54:18.771 [binder:4453_F] D/PUMPBTCOMM: [BleCommCallbacks.onConnectionStateChange():38]: OnConnectionStateChange with status/state: 19/0
03:54:18.772 [binder:4453_F] I/PUMPBTCOMM: [Connection.onConnectionLost():209]: Lost connection with status: 19
03:54:18.799 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 11
03:54:18.902 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 11
03:54:19.007 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 11
03:54:19.110 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():102]: handshaking 11
03:54:19.119 [RxCachedThreadScheduler-67] D/PUMPBTCOMM: [Connection.disconnect():129]: Disconnecting closeGatt=false
03:54:19.124 [binder:4453_F] D/PUMPBTCOMM: [Connection.disconnect():129]: Disconnecting closeGatt=true
03:54:19.124 [RxCachedThreadScheduler-67] W/PUMPBTCOMM: [OmnipodDashManagerImpl$observeConnectToPodWithStop$1$1.accept():122]: observeConnectToPodWithStop error=info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.exceptions.ConnectException: stopConnecting called
03:54:19.125 [RxCachedThreadScheduler-67] D/PUMP: [OmnipodDashManagerImpl$ErrorInterceptor.accept():780]: Intercepted error in OmnipodDashManagerImpl: info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.exceptions.ConnectException: stopConnecting called
03:54:19.126 [binder:4453_F] D/PUMPBTCOMM: [BleCommCallbacks.resetConnection():217]: Reset connection
03:54:19.126 [ConnectionThread] I/PUMPCOMM: [OmnipodDashPumpPlugin$connect$2.invoke():276]: connect error=java.lang.RuntimeException: info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.exceptions.ConnectException: stopConnecting called
03:54:19.213 [Thread-1378] D/PUMPQUEUE: [QueueThread.run():114]: connect
03:54:19.214 [Thread-1378] I/PUMP: [OmnipodDashPumpPlugin.connect():255]: connect reason=Connection needed
03:54:19.219 [RxCachedThreadScheduler-70] D/PUMP: [OmnipodDashManagerImpl$PodEventInterceptor.accept():704]: Intercepted PodEvent in OmnipodDashManagerImpl: BluetoothConnecting
03:54:19.223 [RxCachedThreadScheduler-70] D/PUMPBTCOMM: [Connection.connectionState():171]: GATT connection state: 0
03:54:19.224 [RxCachedThreadScheduler-70] D/CORE: [Connection.connect():69]: Connecting connectionWaitCond=ConnectionWaitCondition(timeoutMs=null, stopConnection=java.util.concurrent.CountDownLatch@af28aee[Count = 1])
03:54:19.232 [RxCachedThreadScheduler-70] D/PUMPBTCOMM: [Connection.waitForConnection():145]: waitForConnection connectionWaitCond=ConnectionWaitCondition(timeoutMs=null, stopConnection=java.util.concurrent.CountDownLatch@af28aee[Count = 1])
03:54:19.287 [RxCachedThreadScheduler-63] D/AUTOMATION: [AutomationPlugin$onStart$11.accept():180]: Grabbed new BT event: EventBTChange[deviceAddress=AC:3B:96:37:EA:BB,deviceName=<null>,state=DISCONNECT]
03:54:19.290 [RxCachedThreadScheduler-63] D/AUTOMATION: [AutomationPlugin.processActions$automation_fullRelease():255]: processActions
[...]
07:09:13.225 [CommandQueueImplementationHandler] D/PUMPQUEUE: [CommandQueueImplementation.notifyAboutNewCommand$lambda$6():220]: Starting new thread
07:09:13.227 [RxCachedThreadScheduler-66] D/CORE: [UserEntryLoggerImpl$log$1.accept():60]: USER ENTRY: 10/16/24 07:09:13 TEMP_BASAL Loop [UnitPerHour(value=4.7), Minute(value=30)]
07:09:13.230 [Thread-2559] D/PUMPQUEUE: [QueueThread.run():114]: connect
07:09:13.230 [Thread-2559] I/PUMP: [OmnipodDashPumpPlugin.connect():255]: connect reason=Connection needed
07:09:13.231 [RxCachedThreadScheduler-77] D/PUMP: [OmnipodDashManagerImpl$PodEventInterceptor.accept():704]: Intercepted PodEvent in OmnipodDashManagerImpl: BluetoothConnecting
07:09:13.233 [RxCachedThreadScheduler-77] D/PUMPBTCOMM: [Connection.connectionState():171]: GATT connection state: 2
07:09:13.233 [RxCachedThreadScheduler-77] D/CORE: [Connection.connect():69]: Connecting connectionWaitCond=ConnectionWaitCondition(timeoutMs=null, stopConnection=java.util.concurrent.CountDownLatch@413994e[Count = 1])
07:09:13.235 [RxCachedThreadScheduler-77] D/PUMPBTCOMM: [Connection.waitForConnection():145]: waitForConnection connectionWaitCond=ConnectionWaitCondition(timeoutMs=null, stopConnection=java.util.concurrent.CountDownLatch@413994e[Count = 1])
07:09:13.236 [binder:4453_2] D/PUMPBTCOMM: [BleCommCallbacks.onConnectionStateChange():38]: OnConnectionStateChange with status/state: 0/2
07:09:13.237 [RxCachedThreadScheduler-77] D/PUMPBTCOMM: [Connection.connectionState():171]: GATT connection state: 2
07:09:13.237 [RxCachedThreadScheduler-77] D/PUMPBTCOMM: [ServiceDiscoverer.discoverServices():28]: Discovering services
07:09:13.246 [DefaultDispatcher-worker-4] D/WORKER: [LoggingWorker$doWork$2.invokeSuspend():27]: Worker result SUCCESS for class app.aaps.workflow.UpdateWidgetWorker
07:09:13.247 [main] D/WIDGET: [Widget.onReceive():87]: onReceive WorkFlow
07:09:13.260 [DefaultDispatcher-worker-4] D/WORKER: [LoggingWorker$doWork$2.invokeSuspend():27]: Worker result SUCCESS for class app.aaps.workflow.PreparePredictionsWorker
07:09:13.278 [DefaultDispatcher-worker-4] D/WORKER: [LoggingWorker$doWork$2.invokeSuspend():27]: Worker result SUCCESS for class app.aaps.workflow.UpdateGraphWorker
07:09:13.424 [CompanionHandler] D/CORE: [Widget.updateTemporaryTarget():223]: Adjusted target. Profile: 99.0 APS: 93.0
07:09:13.427 [CompanionHandler] D/CONSTRAINTS: [ConstraintObject.set():28]: Setting value true -> false (Autosens disabled in preferences)[EN]
07:09:13.655 [binder:4453_2] D/PUMPBTCOMM: [BleCommCallbacks.onConnectionStateChange():38]: OnConnectionStateChange with status/state: 19/0
07:09:13.656 [binder:4453_2] I/PUMPBTCOMM: [Connection.onConnectionLost():209]: Lost connection with status: 19
07:09:13.741 [binder:4453_2] D/PUMPBTCOMM: [Connection.disconnect():129]: Disconnecting closeGatt=true
07:09:13.748 [binder:4453_2] D/PUMPBTCOMM: [BleCommCallbacks.resetConnection():217]: Reset connection
07:09:13.751 [RxCachedThreadScheduler-77] D/PUMPBTCOMM: [Connection.disconnect():129]: Disconnecting closeGatt=false
07:09:13.751 [RxCachedThreadScheduler-77] D/PUMPBTCOMM: [BleCommCallbacks.resetConnection():217]: Reset connection
07:09:13.753 [RxCachedThreadScheduler-77] W/PUMPBTCOMM: [OmnipodDashManagerImpl$observeConnectToPodWithStop$1$1.accept():122]: observeConnectToPodWithStop error=info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.exceptions.ConnectException: stopConnecting called
07:09:13.753 [RxCachedThreadScheduler-77] D/PUMP: [OmnipodDashManagerImpl$ErrorInterceptor.accept():780]: Intercepted error in OmnipodDashManagerImpl: info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.exceptions.ConnectException: stopConnecting called```
I had the same issues on one of the last betas of Android 15 (first betas worked without problems) with my Pixel 6a and therefore i downgraded back to Android 14. Hoped, this was just a bug in this beta but it seems they changed something in the bluetooth handling...
Same issue on Pixel 8 with Android 15. After reboot the first connection works but then no handshake possible. Switched to another phone using < A15 for now. @MilosKozak please forward to Omnipod specialists. Cheers, Andreas
Even I same bug. Pixel 8 with Android 15 and Omnipod Dash. However, it seems that, despite the connection error, the basal rate adapts based on the glucose level (increases or decreases). SMBs are also delivered, except when I try to record my carbohydrate intake following a meal, the bolus is not delivered. I hope for a bugfix for the app as soon as possible, because it's a really big problem.
I had it connect once dash g6 and it delivered insulin
I also updated to Android 15 and noticed the same problems. My setup is Pixel 6a with AAPS 3.2.0.4 and Omnipod Dash. I have now found a workaround that after closing and then starting the Bluetooth connection and the AAPS app about 4 times, the connection to the Dash works properly and permanently again. After restarting the Pixel, the game starts all over again.
Same issue here on Pixel 7 after upgrade to Android 15. I switched to an older phone for AAPS in the meantime.
I'm holding off on Android 15 until this is confirmed to be sorted. Thanks for opening the issue, and thanks to anyone working on it!
3.2.0.4 on Pixel 7
Some logs from 3 days ago.
08:30:47.923 [RxCachedThreadScheduler-34] D/CORE: [Connection.connect():69]: Connecting connectionWaitCond=ConnectionWaitCondition(timeoutMs=null, stopConnection=java.util.concurrent.CountDownLatch@232d152[Count = 1])
08:30:49.664 [DefaultDispatcher-worker-2] D/WORKER: [LoggingWorker$doWork$2.invokeSuspend():27]: Worker result SUCCESS for class app.aaps.receivers.KeepAliveWorker
08:30:54.220 [RxCachedThreadScheduler-36] D/CORE: [Connection.connect():69]: Connecting connectionWaitCond=ConnectionWaitCondition(timeoutMs=null, stopConnection=java.util.concurrent.CountDownLatch@471996[Count = 1])
08:31:19.141 [RxCachedThreadScheduler-48] D/CORE: [Connection.connect():69]: Connecting connectionWaitCond=ConnectionWaitCondition(timeoutMs=null, stopConnection=java.util.concurrent.CountDownLatch@8d7c097[Count = 1])
08:31:24.407 [RxCachedThreadScheduler-33] D/CORE: [Connection.connect():69]: Connecting connectionWaitCond=ConnectionWaitCondition(timeoutMs=null, stopConnection=java.util.concurrent.CountDownLatch@bec7c86[Count = 1])
08:31:38.189 [main] D/WIDGET: [Widget.onReceive():87]: onReceive ScheduleEveryMin
08:31:38.554 [CompanionHandler] D/CORE: [Widget.updateTemporaryTarget():223]: Adjusted target. Profile: 100.0 APS: 93.0
08:31:46.488 [RxCachedThreadScheduler-34] D/CORE: [Connection.connect():69]: Connecting connectionWaitCond=ConnectionWaitCondition(timeoutMs=null, stopConnection=java.util.concurrent.CountDownLatch@c13e9d2[Count = 1])
08:31:52.623 [RxCachedThreadScheduler-36] D/CORE: [Connection.connect():69]: Connecting connectionWaitCond=ConnectionWaitCondition(timeoutMs=30000, stopConnection=null)
08:32:22.660 [RxCachedThreadScheduler-36] E/PUMP: [OmnipodDashPumpPlugin$executeProgrammingCommand$3.accept():1364]: Error executing command
info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.exceptions.ConnectException: Service not found: 1a7e-4024-e3ed-4464-8b7e-751e03d0dc5f
at info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.ServiceDiscoverer.discoverServices(ServiceDiscoverer.kt:54)
at info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.session.Connection.connect(Connection.kt:101)
at info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.OmnipodDashBleManagerImpl.connect$lambda$1(OmnipodDashBleManagerImpl.kt:154)
at info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.OmnipodDashBleManagerImpl.$r8$lambda$c2IZX_V0B5Ile126GNiSOANZRgY(Unknown Source:0)
at info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.OmnipodDashBleManagerImpl$$ExternalSyntheticLambda0.subscribe(Unknown Source:4)
at io.reactivex.rxjava3.internal.operators.observable.ObservableCreate.subscribeActual(ObservableCreate.java:41)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableDefer.subscribeActual(ObservableDefer.java:40)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver.drain(ObservableConcatMap.java:469)
at io.reactivex.rxjava3.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver.onSubscribe(ObservableConcatMap.java:330)
at io.reactivex.rxjava3.internal.operators.observable.ObservableFromArray.subscribeActual(ObservableFromArray.java:32)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableConcatMap.subscribeActual(ObservableConcatMap.java:56)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at java.lang.Thread.run(Thread.java:1012)
What exactly is Service: 1a7e-4024-e3ed-4464-8b7e-751e03d0dc5f?
Does anyone know?
I will enable logs for pump and BT now and do some more tests.
Do you have information on the work status of a possible bug fix for this problem? My glucose levels have been through the roof for almost a week now
Do you have information on the work status of a possible bug fix for this problem? My glucose levels have been through the roof for almost a week now
This is a volunteer project and nobody is required to offer solutions or timeframes. I'm sure the developers are now aware of the problem. In the meantime I suggest you revert to other management practices if AAPS is not working for you, we are all responsible for our own care.
Some logs from 3 days ago.
I also have similar in the logs
07:01:43.780 [RxCachedThreadScheduler-74] W/PUMPBTCOMM: [OmnipodDashManagerImpl$observeConnectToPod$1$1.accept():129]: observeConnectToPod error=info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.exceptions.ConnectException: Service not found: 1a7e-4024-e3ed-4464-8b7e-751e03d0dc5f
07:01:43.781 [RxCachedThreadScheduler-74] D/PUMP: [OmnipodDashManagerImpl$ErrorInterceptor.accept():780]: Intercepted error in OmnipodDashManagerImpl: info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.exceptions.ConnectException: Service not found: 1a7e-4024-e3ed-4464-8b7e-751e03d0dc5f
07:01:43.782 [RxCachedThreadScheduler-74] E/PUMP: [OmnipodDashPumpPlugin$executeProgrammingCommand$3.accept():1364]: Error executing command
info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.exceptions.ConnectException: Service not found: 1a7e-4024-e3ed-4464-8b7e-751e03d0dc5f
at info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.ServiceDiscoverer.discoverServices(ServiceDiscoverer.kt:54)
at info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.session.Connection.connect(Connection.kt:101)
at info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.OmnipodDashBleManagerImpl.connect$lambda$1(OmnipodDashBleManagerImpl.kt:154)
at info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.OmnipodDashBleManagerImpl.$r8$lambda$c2IZX_V0B5Ile126GNiSOANZRgY(Unknown Source:0)
at info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.comm.OmnipodDashBleManagerImpl$$ExternalSyntheticLambda0.subscribe(Unknown Source:4)
at io.reactivex.rxjava3.internal.operators.observable.ObservableCreate.subscribeActual(ObservableCreate.java:41)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableDefer.subscribeActual(ObservableDefer.java:40)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver.drain(ObservableConcatMap.java:469)
at io.reactivex.rxjava3.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver.onSubscribe(ObservableConcatMap.java:330)
at io.reactivex.rxjava3.internal.operators.observable.ObservableFromArray.subscribeActual(ObservableFromArray.java:32)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableConcatMap.subscribeActual(ObservableConcatMap.java:56)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
at io.reactivex.rxjava3.core.Observable.subscribe(Observable.java:13262)
at io.reactivex.rxjava3.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
Seems to be the same error reported in this bug that was closed due to inactivity: https://github.com/nightscout/AndroidAPS/issues/935
What exactly is Service: 1a7e-4024-e3ed-4464-8b7e-751e03d0dc5f?
Does anyone know?
This is a hardcoded value found here: https://github.com/nightscout/AndroidAPS/blob/3df83535f9f8f3246308121900c2785c50915fa8/pump/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/comm/ServiceDiscoverer.kt#L73
It's the service that the Dash pod broadcasts. This file hasn't changed in years.
The error code in the logs everyone is sharing is from this line in the code: https://github.com/nightscout/AndroidAPS/blob/3df83535f9f8f3246308121900c2785c50915fa8/pump/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/comm/ServiceDiscoverer.kt#L54
This doesn't look like good news. This is starting to look like a Bluetooth driver issue, therefore not something APS can change unless we can debug the bluetooth stack to see why it's not discovering the required service after connecting to the Omnipod Dash.
Can someone provide more complete logs or logs from Logcat would be ideal. I want to investigate more into this part of the logs which I think is a problem:
19:28:29.423 [RxCachedThreadScheduler-75] D/PUMPBTCOMM: [ServiceDiscoverer.discoverServices():44]: Services discovered 19:28:29.426 [RxCachedThreadScheduler-75] D/PUMPBTCOMM: [Connection.disconnect():121]: Disconnecting closeGatt=false 19:28:29.428 [RxCachedThreadScheduler-75] D/PUMPBTCOMM: [BleCommCallbacks.resetConnection():213]: Reset connection
After services are discovered, it should not be disconnecting, unless the connection is lost, but there is supposed to be a log message for that.
Can someone provide more complete logs or logs from Logcat would be ideal.
https://bin.woernsn.net/p/monkey-emu-goose I copied a little more of my logs in here. Let me know if you need more.
@nickb24 I exported some logs with logcat. Let me know if you need more.
FYI it looks like Dexcom is having Bluetooth issues with Android 15 as well: https://www.dexcom.com/en-AU/faqs/will-android-15-affect-my-dexcom-g7-cgm-system
FYI it looks like Dexcom is having Bluetooth issues with Android 15 as well: https://www.dexcom.com/en-AU/faqs/will-android-15-affect-my-dexcom-g7-cgm-system
Yes they have , because ITS a Google issue, because of changing the BT stack in Android 15
What exactly is Service: 1a7e-4024-e3ed-4464-8b7e-751e03d0dc5f? Does anyone know?
The error occurs in the code where the DASH driver is scanning for a BT device with a specific BT service ID 1a7e-4024-e3ed-4464-8b7e-751e03d0dc5f to connect to.
And yes, this ID is fixed in the code because it is unique for DASH BT devices.
Btw: We have seen this problem in the past during DASH driver development with some phone/brands where the DASH BT Firmware was somehow incompatible with the Phone's BT implementation. Other reason could be the OS blocking BT access due to security settings or dependencies?
Not sure if this can be solved though code...
Suggestion: Try the nRF Connect tool app (Playstore): See if does find a DASH device with this service ID?
- If it does not: go find some setting in the Phone OS?
- If it does there is at least there is a chance AAPS should be able to connect in same way...
I couldn't find anything in the logs. This looks like an Android OS issue.
Based on this post that was closed today: https://issuetracker.google.com/issues/362191722#comment7
Can someone with the issue try installing Android 15 QPR1 Beta 2?
nRF connect tool finds the device with ever scan.
But when I try to connect it gives the same error messages than AAPS shows in its logs - it cannot discover gatt services:
nRF connect tool finds the device with ever scan.
That's good. At least the OS does see the Pod. Connecting to it then is the issue. Can not see why. And unfortunately, I do not have a Pixel (or other) with Android 15 to do any research on this..
I couldn't find anything in the logs. This looks like an Android OS issue. Based on this post that was closed today: https://issuetracker.google.com/issues/362191722#comment7
Quoting this issue: We have an intermittent but easily reproducible issue that occurs with only one of our BLE device series. Connecting to the device becomes impossible because the connection gets stuck during service discovery. Once the issue occurs, all next connection attempts fail for the same reason. Power cycling the device or restarting the app doesn't help. The issue disappears after toggling Bluetooth OFF and ON on the phone. The problem is likely related to BLE chipset or firmware and Android compatibility, as only one particular device series is affected.
Based on what you all have comment here, it all looks like this issue. Unless there is some work around in the AAPS driver code, I'd say this is a compatibility issue to be fixed in the OS 🤔
Seems to be the same error reported in this bug that was closed due to inactivity: #935
Old & I don't think so. Other then: yes: some phones brands/types just are not compatible with DASH. This still goes. But in this case it looks more like this is related to Android 15, not a specific phone brand/type?
Based on what you all have comment here, it all looks like this issue. Unless there is some work around in the AAPS driver code, I'd say this is a compatibility issue to be fixed in the OS 🤔
I would go so far to speculate that also the Dexcom issue is the same. Dexcom stated that they are in contact with Google directly. Therefore I guess, an Android update will need to happen soon .
It looks like that QPR1 Beta 2 fixed this behaviour. Mario tested it yesterday evening and during the night. I wait for Beta 3 OTA as I do not wish to wipe my data atm. Let's hope that Google's fix works
Can someone with the issue try installing Android 15 QPR1 Beta 2?
I installed last night and during the night it was stable, without signal losses. I am able to connect to the pod now.
So it is an Android issue as it seems.
I suggest an admin for the Facebook group post an announcement warning Pixel users not to upgrade to Android 15. I have a Pixel 7 pro and I'm holding off on it (although I didn't get the notification on my phone yet). I can't imagine updating one day and all of a sudden my loop system is broken. In my case, I don't even have my Omnipod PDM setup so I would be in big trouble if I need to scramble to get another phone setup just so I can continue to run my pump.
Can someone with the issue try installing Android 15 QPR1 Beta 2?
I installed last night and during the night it was stable, without signal losses. I am able to connect to the pod now.
So it is an Android issue as it seems.
I see this as good and bad news. The bad news, I worry for people who are not tech savvy enough who end up updating to Android 15 and now will be stuck waiting for Google to push a new update (which is estimated to arrive in December) to fix this. If we mention the solution is to go on the Beta channel for Android, most people would get lost trying to install it.
The good news, if we know it's at the driver level, I wonder if there is a mitigation technique we can implement in the code to fix it. It seems like the Dash pod closes the connection after discovering the services (well from the APS code side it looks like a closed connection). I wonder if we can implement some more checks in the code at this line to re-try the connection: https://github.com/nightscout/AndroidAPS/blob/3df83535f9f8f3246308121900c2785c50915fa8/pump/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/comm/ServiceDiscoverer.kt#L54
To debug further though, I would need a volunteer with the issue to do bluetooth logging as described by Google here: https://issuetracker.google.com/issues/362191722#comment7
1. Go to Developer Settings -> and set Enable Bluetooth HCI snoop log to Enabled.
2. Also increase the log buffer size by following these steps : System settings-> Developer options-> Logger buffer sizes-> 8M
Then capture and share a new bug report.