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