Subsurface-mobile with BT and BLE support [was Re: updates to libdc with ABI change]

Jan Mulder jlmulder at xs4all.nl
Wed Jun 28 01:52:33 PDT 2017


On 28-06-17 07:19, Dirk Hohndel wrote:
> In the meantime, I'd love to hear success stories of people able to
> download from the dive computers on their phone or tablet.
>
> /D

Tested the -300 code. All self build, and Qt 5.9.0 from the Arch Linux 
repos, so no specific update to 5.9.1.

1) desktop version: downloads OSTC3 over BT correctly.
2) mobile-on-desktop: downloads OSTC3 over BT correctly.
3) and it getting boring :-). True mobile on Android 7.1.2: downloads 
OSTC3 over BT correctly.

In addition, I tried the LE: quirk on desktop, to see how far I would 
get for OSTC3 over BLE. Below, the logging from the console.

Starting the thread 0

qt.bluetooth.bluez: Bluez 5 detected.

qt.bluetooth.bluez: Enabling GATT request timeout behavior 20000

qt_ble_open( 00:80:25:4A:0F:C3 )

qt.bluetooth.bluez: No settings found for peer device.

qt.bluetooth.bluez: HCI event triggered, type: e

qt.bluetooth.bluez: HCI event triggered, type: e

qt.bluetooth.bluez: HCI event triggered, type: e

qt.bluetooth.bluez: HCI event triggered, type: e

qt.bluetooth.bluez: HCI event triggered, type: f

qt.bluetooth.bluez: HCI event triggered, type: f

qt.bluetooth.bluez: HCI event triggered, type: f

qt.bluetooth.bluez: Current l2cp sec level: 1

qt.bluetooth.bluez: Exchanging MTU

connected to the controller for device 00:80:25:4A:0F:C3

.. discovering services

qt.bluetooth.bluez: Sending read_by_group_type request, startHandle: 1 
endHandle: ffff 2800

qt.bluetooth.bluez: Received size: 3 data: "031700"

qt.bluetooth.bluez: Server MTU: 23 resulting mtu: 23

qt.bluetooth.bluez: Received size: 20 data: 
"1106010005000018060006000118070009000a18"

qt.bluetooth.bluez: Found uuid: "{00001800-0000-1000-8000-00805f9b34fb}" 
start handle: 1 end handle: 5

Found service "{00001800-0000-1000-8000-00805f9b34fb}"

.. ignoring standard service

qt.bluetooth.bluez: Found uuid: "{00001801-0000-1000-8000-00805f9b34fb}" 
start handle: 6 end handle: 6

Found service "{00001801-0000-1000-8000-00805f9b34fb}"

.. ignoring standard service

qt.bluetooth.bluez: Found uuid: "{0000180a-0000-1000-8000-00805f9b34fb}" 
start handle: 7 end handle: 9

Found service "{0000180a-0000-1000-8000-00805f9b34fb}"

.. ignoring standard service

qt.bluetooth.bluez: Sending read_by_group_type request, startHandle: a 
endHandle: ffff 2800

qt.bluetooth.bluez: Received size: 8 data: "11060a001600fbfe"

qt.bluetooth.bluez: Found uuid: "{0000fefb-0000-1000-8000-00805f9b34fb}" 
start handle: a end handle: 16

Found service "{0000fefb-0000-1000-8000-00805f9b34fb}"

.. ignoring standard service

qt.bluetooth.bluez: Sending read_by_group_type request, startHandle: 17 
endHandle: ffff 2800

qt.bluetooth.bluez: Received size: 22 data: 
"11141700ffff30303031565245534f495245544d5453"

qt.bluetooth.bluez: Found uuid: "{53544d54-4552-494f-5345-525631303030}" 
start handle: 17 end handle: ffff

Found service "{53544d54-4552-494f-5345-525631303030}"

.. created service object QLowEnergyService(0x7fff5800b190)

qt.bluetooth.bluez: Sending read_by_type request, startHandle: 17 
endHandle: ffff type: 2802 packet: "081700ffff0228"

qt.bluetooth.bluez: Sending read_by_group_type request, startHandle: 1 
endHandle: ffff 2801

qt.bluetooth.bluez: Received size: 5 data: "010817000a"

qt.bluetooth.bluez: Error1: "no attribute in given range found" last 
command: 8 handle: 17

qt.bluetooth.bluez: Sending read_by_type request, startHandle: 17 
endHandle: ffff type: 2803 packet: "081700ffff0328"

qt.bluetooth.bluez: Received size: 5 data: "011001000a"

qt.bluetooth.bluez: Error1: "no attribute in given range found" last 
command: 10 handle: 1

.. done discovering services

.. discovering details

qt.bluetooth.bluez: Received size: 23 data: 
"09151800141900313030305620204e49545241554f5453"

qt.bluetooth.bluez: Found handle: 18 properties: QFlags(0x4|0x10) value 
handle: 19 uuid: "{53544f55-4152-5449-4e20-205630303031}"

qt.bluetooth.bluez: Sending read_by_type request, startHandle: 19 
endHandle: ffff type: 2803 packet: "081900ffff0328"

qt.bluetooth.bluez: Received size: 23 data: 
"09151b00141c00313030305620204e494f4950474f5453"

qt.bluetooth.bluez: Found handle: 1b properties: QFlags(0x4|0x10) value 
handle: 1c uuid: "{53544f47-5049-4f49-4e20-205630303031}"

qt.bluetooth.bluez: Sending read_by_type request, startHandle: 1c 
endHandle: ffff type: 2803 packet: "081c00ffff0328"

qt.bluetooth.bluez: Received size: 23 data: 
"09151e00081f00313030305620204c45535645444f5453"

qt.bluetooth.bluez: Found handle: 1e properties: QFlags(0x8) value 
handle: 1f uuid: "{53544f44-4556-5345-4c20-205630303031}"

qt.bluetooth.bluez: Sending read_by_type request, startHandle: 1f 
endHandle: ffff type: 2803 packet: "081f00ffff0328"

qt.bluetooth.bluez: Received size: 23 data: 
"09152000182100313030305643444e41434f49544f5453"

qt.bluetooth.bluez: Found handle: 20 properties: QFlags(0x8|0x10) value 
handle: 21 uuid: "{53544f54-494f-4341-4e44-435630303031}"

qt.bluetooth.bluez: Sending read_by_type request, startHandle: 21 
endHandle: ffff type: 2803 packet: "082100ffff0328"

qt.bluetooth.bluez: Received size: 5 data: "010821000a"

qt.bluetooth.bluez: Error1: "no attribute in given range found" last 
command: 8 handle: 21

qt.bluetooth.bluez: Reading all characteristic values for 
"{53544d54-4552-494f-5345-525631303030}"

qt.bluetooth.bluez: Discovering descriptor values for 
"{53544d54-4552-494f-5345-525631303030}"

qt.bluetooth.bluez: Sending find_info request (18, 1b, 1e, 20) 18

qt.bluetooth.bluez: Received size: 6 data: "050118000328"

qt.bluetooth.bluez: Suppressing primary/characteristic 2803

qt.bluetooth.bluez: Sending find_info request (18, 1b, 1e, 20) 19

qt.bluetooth.bluez: Received size: 20 data: 
"05021900313030305620204e49545241554f5453"

qt.bluetooth.bluez: Suppressing char handle 19

qt.bluetooth.bluez: Sending find_info request (18, 1b, 1e, 20) 1a

qt.bluetooth.bluez: Received size: 6 data: "05011a000229"

qt.bluetooth.bluez: Descriptor found, uuid: 
"{00002902-0000-1000-8000-00805f9b34fb}" descriptor handle: 1a

qt.bluetooth.bluez: Sending find_info request (1b, 1e, 20) 1b

qt.bluetooth.bluez: Received size: 6 data: "05011b000328"

qt.bluetooth.bluez: Suppressing primary/characteristic 2803

qt.bluetooth.bluez: Sending find_info request (1b, 1e, 20) 1c

qt.bluetooth.bluez: Received size: 20 data: 
"05021c00313030305620204e494f4950474f5453"

qt.bluetooth.bluez: Suppressing char handle 1c

qt.bluetooth.bluez: Sending find_info request (1b, 1e, 20) 1d

qt.bluetooth.bluez: Received size: 6 data: "05011d000229"

qt.bluetooth.bluez: Descriptor found, uuid: 
"{00002902-0000-1000-8000-00805f9b34fb}" descriptor handle: 1d

qt.bluetooth.bluez: Sending find_info request (1e, 20) 1e

qt.bluetooth.bluez: Received size: 6 data: "05011e000328"

qt.bluetooth.bluez: Suppressing primary/characteristic 2803

qt.bluetooth.bluez: Sending find_info request (1e, 20) 1f

qt.bluetooth.bluez: Received size: 20 data: 
"05021f00313030305620204c45535645444f5453"

qt.bluetooth.bluez: Suppressing char handle 1f

qt.bluetooth.bluez: Sending find_info request (20) 20

qt.bluetooth.bluez: Received size: 6 data: "050120000328"

qt.bluetooth.bluez: Suppressing primary/characteristic 2803

qt.bluetooth.bluez: Sending find_info request (20) 21

qt.bluetooth.bluez: Received size: 20 data: 
"05022100313030305643444e41434f49544f5453"

qt.bluetooth.bluez: Suppressing char handle 21

qt.bluetooth.bluez: Sending find_info request (20) 22

qt.bluetooth.bluez: Received size: 6 data: "050122000229"

qt.bluetooth.bluez: Descriptor found, uuid: 
"{00002902-0000-1000-8000-00805f9b34fb}" descriptor handle: 22

qt.bluetooth.bluez: Sending find_info request (20) 23

qt.bluetooth.bluez: Received size: 5 data: "010423000a"

qt.bluetooth.bluez: Error1: "no attribute in given range found" last 
command: 4 handle: 23

qt.bluetooth.bluez: Reading all descriptor values for 
"{53544d54-4552-494f-5345-525631303030}"

qt.bluetooth.bluez: Received size: 3 data: "0b0000"

INFO: dc_deveice_open error value of 0

qt.bluetooth.bluez: Received size: 3 data: "0b0000"

qt.bluetooth.bluez: Received size: 3 data: "0b0000"

"{53544f55-4152-5449-4e20-205630303031}"

"{53544f47-5049-4f49-4e20-205630303031}"

"{53544f44-4556-5345-4c20-205630303031}"

"{53544f54-494f-4341-4e44-435630303031}"

.. enabling notifications

Descriptor list with 1 elements

Descriptor: "Client Characteristic Configuration" uuid: 
"{00002902-0000-1000-8000-00805f9b34fb}"

now writing "0x0100" to the first descriptor

qt.bluetooth.bluez: Writing descriptor 22 (size: 5 )

qt.bluetooth.bluez: Writing characteristic 18 (size: 4 with response: 
false signed: false )

qt.bluetooth.bluez: Received size: 5 data: "0112220005"

qt.bluetooth.bluez: Error1: "needs authentication - permissions" last 
command: 12 handle: 22

qt.bluetooth.bluez: Requesting encrypted link

qt.bluetooth.bluez: Setting new l2cp sec level: 3

[10.865032] ERROR: Failed to receive the echo. [in 
../../src/hw_ostc3.c:211 (hw_ostc3_transfer)]

[10.865069] ERROR: Failed to send the command. [in 
../../src/hw_ostc3.c:417 (hw_ostc3_device_init_download)]

Finishing the thread Dive data import error dives downloaded 0

So, there is some communication, and with my very very limited knowledge 
on BLE, it seems that the correct service is detected (Found service 
"{53544d54-4552-494f-5345-525631303030}" and things finally seem to fail 
with something encryption related? If needed, i can produce screendumps 
from Nordic to see what BLE things are visible on the OSTC3, but I 
suspect that most of the required data is in the log above.

Obviously, OSTC3 over BLE is not the most important capability, as it is 
only needed for iOs users and Android users are perfectly served with 
only BT, but it would still be nice to get it working.

--jan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20170628/a3cbd3bd/attachment-0001.html>


More information about the subsurface mailing list