Android BT/BLE with Petrel 2
Dirk Hohndel
dirk at hohndel.org
Tue Jul 4 06:31:47 PDT 2017
> On Jul 4, 2017, at 12:29 AM, Rick Walsh <rickmwalsh at gmail.com> wrote:
>
> Hi,
>
> I tried to download dives from my Shearwater Petrel 2 to my phone (Samsung Galaxy S7) with the latest daily Android build, 4.6.4.333-arm. With previous builds, download was working correctly with standard Bluetooth. Now Subsurface-mobile is now trying to connect using BLE, but failing to connect. The dive computer screen continues with the waiting for PC countdown the entire time.
>
> I tried first by selecting Vendor: Paired Bluetooth, DC: Petrel (LE:00:13....)
>
> 07-04 19:18:50.429 2423 2458 D libGLESv2: STS_GLApi : DTS is not allowed for Package : org.subsurfacedivelog.mobile
> 07-04 19:18:50.526 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Using the following font: Roboto
> 07-04 19:18:50.528 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: qrc:/templates/ApplicationHeader.qml:123: TypeError: Cannot read property of null
> 07-04 19:18:50.542 4980 5777 V WindowManager: Relayout Window{f2e9452d0 u0 org.subsurfacedivelog.mobile/org.qtproject.qt5.android.bindings.QtActivity}: viewVisibility=0 req=1080x1920 WM.LayoutParams{(0,0)(fillxfill) sim=#10 ty=1 fl=#81810100 fmt=-3 wanim=0x10303ea vsysui=0x600 needsMenuKey=2 naviIconColor=0}
> 07-04 19:18:50.912 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: qqwindow devicePixelRatio 3 3
> 07-04 19:18:50.912 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: qqwindow screen has ldpi/pdpi 72 144.501
> 07-04 19:18:51.122 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: "1.745: Credential scrn: hide kbd was: invisible"
> 07-04 19:18:54.844 4980 7703 D GameManagerService: identifyGamePackage. org.subsurfacedivelog.mobile
> 07-04 19:19:10.578 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Both point size and pixel size set. Using pixel size.
> 07-04 19:19:10.582 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Both point size and pixel size set. Using pixel size.
> 07-04 19:19:15.652 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: getDetectedProductIndex 1
> 07-04 19:19:17.431 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: getDetectedProductIndex 0
> 07-04 19:19:20.255 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: matched "LE:00:13:43:0E:6B:D0"
> 07-04 19:19:20.255 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: "30.878: DCDownloadThread started for LE:00:13:43:0E:6B:D0"
For dual mode dive computers we now add both LE and classic BT versions. This clearly will trigger an LE download.
> 07-04 19:19:20.257 2423 2520 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Starting download from BT
> 07-04 19:19:20.257 2423 2520 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Starting the thread 0
> 07-04 19:19:20.268 2423 2520 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Creating Android Central/Client support for BTLE
> 07-04 19:19:20.272 2423 2520 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: qt_ble_open( 00:13:43:0E:6B:D0 )
> 07-04 19:19:20.394 5484 32204 D BtGatt.GattService: clientConnect(org.subsurfacedivelog.mobile) - address = 00:13:43:0E:6B:D0, isDirect=true transport =2 set own addr = false own addr type:0, clientIf: 4
> 07-04 19:19:20.877 2423 2423 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: "LocalDeviceBroadcastReceiver::onReceive() - event: android.bluetooth.device.action.ACL_CONNECTED"
> 07-04 19:19:20.898 2423 2520 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Connection updated: error: QLowEnergyController::Error(NoError) oldState: QLowEnergyController::ControllerState(ConnectingState) newState: QLowEnergyController::ControllerState(ConnectedState)
> 07-04 19:19:21.000 2423 2520 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: connected to the controller for device 00:13:43:0E:6B:D0
> 07-04 19:19:21.001 2423 2520 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: .. discovering services
> 07-04 19:19:21.006 2423 2520 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Service discovery initiated
> 07-04 19:19:33.409 2423 2520 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: .. done discovering services
> 07-04 19:19:33.409 2423 2520 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: failed to find suitable service on 00:13:43:0E:6B:D0
> 07-04 19:19:33.420 5484 27635 D BtGatt.GattService: clientDisconnect(org.subsurfacedivelog.mobile) - address=00:13:43:0E:6B:D0, connId=4, clientIf: 4
> 07-04 19:19:33.439 5484 27630 D BtGatt.GattService: clientDisconnect(org.subsurfacedivelog.mobile) - address=00:13:43:0E:6B:D0, connId=null, clientIf: 4
That's odd. Not sure if Linus will have a moment to look at this.
> 07-04 19:19:33.448 2423 2520 D /data/newandroid/subsurface/core/libdivecomputer.c: INFO: dc_deveice_open error value of -6
> 07-04 19:19:33.448 2423 2520 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Finishing the thread Insufficient privileges to open the device %s %s (%s) dives downloaded 0
> 07-04 19:19:33.459 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: "44.082: DCDownloadThread finished"
> 07-04 19:19:35.530 2423 2423 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: "LocalDeviceBroadcastReceiver::onReceive() - event: android.bluetooth.device.action.ACL_DISCONNECTED"
>
>
Didn't you get a second entry under Paired Bluetooth Devices, that one without the LE prefix?
If not, then I messed something up :-)
> Then tried Vendor: Shearwater, DC: Petrel 2
>
> 07-04 19:19:48.341 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: getDetectedProductIndex 1
> 07-04 19:19:48.344 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: getDetectedProductIndex 1
> 07-04 19:19:48.344 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: getDetectedVendorIndex "Shearwater" 2
> 07-04 19:19:48.344 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: getDetectedProductIndex 1
> 07-04 19:19:49.644 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: getDetectedProductIndex 1
> 07-04 19:19:51.388 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: "62.011: DCDownloadThread started for LE:00:13:43:0E:6B:D0"
That's also the LE device
> 07-04 19:19:51.395 2423 2564 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Starting download from BT
> 07-04 19:19:51.403 2423 2564 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Starting the thread 0
> 07-04 19:19:51.412 2423 2564 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Creating Android Central/Client support for BTLE
> 07-04 19:19:51.412 2423 2564 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: qt_ble_open( 00:13:43:0E:6B:D0 )
> 07-04 19:19:51.528 5484 32205 D BtGatt.GattService: clientConnect(org.subsurfacedivelog.mobile) - address = 00:13:43:0E:6B:D0, isDirect=true transport =2 set own addr = false own addr type:0, clientIf: 4
> 07-04 19:19:56.571 2423 2564 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Connection updated: error: QLowEnergyController::Error(133) oldState: QLowEnergyController::ControllerState(ConnectingState) newState: QLowEnergyController::ControllerState(UnconnectedState)
> 07-04 19:19:56.592 2423 2564 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: failed to connect to the controller 00:13:43:0E:6B:D0 with error "Error occurred trying to connect to remote device."
>
This matches my experience with Shearwater devices over BLE: they seem to remember if they connected to something and then refuse to connect again.
> Then tried Vendor: Shearwater, DC: Petrel
>
> 07-04 19:20:05.140 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: getDetectedProductIndex 1
> 07-04 19:20:06.378 2423 2451 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: "77.001: DCDownloadThread started for LE:00:13:43:0E:6B:D0"
Still the LE device
> 07-04 19:20:06.379 2423 2576 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Starting download from BT
> 07-04 19:20:06.379 2423 2576 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Starting the thread 0
> 07-04 19:20:06.391 2423 2576 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Creating Android Central/Client support for BTLE
> 07-04 19:20:06.392 2423 2576 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: qt_ble_open( 00:13:43:0E:6B:D0 )
> 07-04 19:20:06.509 5484 6331 D BtGatt.GattService: clientConnect(org.subsurfacedivelog.mobile) - address = 00:13:43:0E:6B:D0, isDirect=true transport =2 set own addr = false own addr type:0, clientIf: 4
> 07-04 19:20:11.547 2423 2576 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: Connection updated: error: QLowEnergyController::Error(133) oldState: QLowEnergyController::ControllerState(ConnectingState) newState: QLowEnergyController::ControllerState(UnconnectedState)
> 07-04 19:20:11.568 2423 2576 D /data/newandroid/subsurface/qt-models/messagehandlermodel.cpp: INFO: failed to connect to the controller 00:13:43:0E:6B:D0 with error "Error occurred trying to connect to remote device."
Same as above
/D
More information about the subsurface
mailing list