Subsurface mobile unable to download from ScubaPro G2

Adric Norris landstander668 at gmail.com
Thu Nov 1 16:57:10 PDT 2018


Stupid question... does version 2.1.5 (4.8.3.307) include the
libdivecomputer fix for the G2 download issue with firmware version 1.4? I
received the app update 2 days ago, and it's failing to download in what
appears (at least superficially) to be the same manner.

Please be aware that I recently replaced my original phone with a Google
Pixel 3 XL, so I can't rule out a phone issue at this point.

I've attached subsurface.log and libdivecomputer.log, just in case they're
needed.

Thanx!

On Mon, Oct 8, 2018, 16:51 Adric Norris <landstander668 at gmail.com wrote:

> Not that it matters much at this point, but I'm pretty sure the change
> would have started with the 1.4 firmware. I remember learning there was an
> update the night before my Tec 40 class, and decided to defer it since I
> didn't want to risk breaking anything at the time.
>
> On Mon, Oct 8, 2018 at 2:29 PM Linus Torvalds <
> torvalds at linux-foundation.org> wrote:
>
>> On Mon, Oct 8, 2018 at 12:09 PM Linus Torvalds
>> <torvalds at linux-foundation.org> wrote:
>> >
>> > But I can just ignore the odd byte - and then my G2 download succeeds.
>>
>> I've updated libdivecomputer with the odd new G2 BLE behavior:
>>
>>
>> https://github.com/Subsurface-divelog/libdc/commit/f0fe141373dd3f1ff5b7b6d2c0f13b47da894096
>>
>> Jef - the comment in there says it all. The G2 BLE behavior is very
>> odd as of fw 1.4, but it seems intentional.
>>
>> Maybe it started earlier, I never tested the 1.3 firmware.
>>
>> I suspect Uwatec uses the new first byte to figure out lost packets or
>> something - and it may be related to the fact that now their desktop
>> app seems to support bluetooth on Windows too (at least I don't
>> _think_ it used to, but who knows).
>>
>> In the meantime, I changed it to still treat the first byte as a
>> length byte - unless it's larger than the possible packet size. The
>> USB HID side definitely still treats it as a length byte, even for the
>> "long stream" case. And I suspect the odd pattern has been chosen
>> explicitly so that the new byte has that "bigger than a packet"
>> behavior, because the first byte is never smaller than 20 (except for
>> the small packet case where it still is the length).
>>
>> Dive computer manufacturers are odd, odd, odd.
>>
>>                     Linus
>>
>
>
> --
> "In the beginning the Universe was created. This has made a lot of people
> very angry and been widely regarded as a bad move." -Douglas Adams
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20181101/697b3f3c/attachment-0001.html>
-------------- next part --------------
"0.007: Successfully opened logfile /storage/emulated/0/subsurface.log at Thu Nov 1 19:46:41 2018"
"0.007: Starting Subsurface-mobile:2.1.5(4.8.3.307):Android  (9.0):arm:en-US"
"0.007: built with libdivecomputer v0.7.0-devel-Subsurface-NG (e61b7c64f998efe00c2f10c7d84fa1618ded598c)"
"0.007: built with Qt Version 5.11.1, runtime from Qt Version 5.11.1"
"0.007: built with libgit2 0.26.0"
"localDevice yuzuki is valid, starting discovery"
paired BT classic device type 1 with address "FC:58:FA:8D:01:23"
paired BT classic device type 1 with address "08:EB:ED:64:B3:B1"
paired BT classic device type 1 with address "10:0F:18:10:4D:9E"
paired BLE device type 2 with address "LE:C5:11:36:12:8B:DF"
paired BT classic device type 1 with address "90:B6:86:96:50:99"
paired BLE device type 2 with address "LE:00:13:43:54:8C:65"
Found new device: "BOHM B-66" "FC:58:FA:8D:01:23"
Not recognized as dive computer
Found new device: "SoundCore 2" "08:EB:ED:64:B3:B1"
Not recognized as dive computer
Found new device: "Motorola H730" "10:0F:18:10:4D:9E"
Not recognized as dive computer
Found new device: "Descent Mk1" "LE:C5:11:36:12:8B:DF"
Not recognized as dive computer
Found new device: "CAR MULTIMEDIA" "90:B6:86:96:50:99"
Not recognized as dive computer
Found new device: "G2" "LE:00:13:43:54:8C:65"
"this could be a Scubapro G2"
Paired = "BOHM B-66" "FC:58:FA:8D:01:23"
Paired = "SoundCore 2" "08:EB:ED:64:B3:B1"
Paired = "Motorola H730" "10:0F:18:10:4D:9E"
Paired = "Descent Mk1" "LE:C5:11:36:12:8B:DF"
Paired = "CAR MULTIMEDIA" "90:B6:86:96:50:99"
Paired = "G2" "LE:00:13:43:54:8C:65"
"Created position source android"
"0.019: Created position source android"
"Set GPS service update interval to 300 s"
"0.019: Set GPS service update interval to 300 s"
"0.019: location service is available"
qrc:/org/kde/kirigami/Page.qml:276:5: QML Loader: Binding loop detected for property "active"
"0.433: Synchronising data file"
"0.441: Load dives from local cache"
"0.548: Successfully opened dive data"
"0.568: AppState changed to active with save ongoing and no unsaved changes"
"0.570: 215 dives loaded from cache"
"0.571: have cloud credentials, but user asked not to connect to network"
checkPendingIntents 
Using the following font: Roboto at 18pt with mobile_scale: 1
qqwindow devicePixelRatio 3.50149 3.50149
Supported dive computers:
"Aeris: 500 AI (SERIAL), A300 (SERIAL), A300 AI (SERIAL), A300CS (SERIAL), Atmos 2 (SERIAL), Atmos AI (SERIAL), Atmos AI 2 (SERIAL), Compumask (SERIAL), Elite (SERIAL), Elite T3 (SERIAL), Epic (SERIAL), F10 (SERIAL), F11 (SERIAL), Manta (SERIAL), XR-1 NX (SERIAL), XR-2 (SERIAL)"
"Aqualung: i200 (SERIAL), i300 (SERIAL), i450T (SERIAL), i550 (SERIAL), i750TC (SERIAL, BT), i770R (SERIAL, BLE)"
"Atomic Aquatics: Cobalt (USB), Cobalt 2 (USB)"
"Beuchat: Mundial 2 (SERIAL), Mundial 3 (SERIAL), Voyager 2G (SERIAL)"
"Cochran: Commander I (SERIAL), Commander II (SERIAL), Commander TM (SERIAL), EMC-14 (SERIAL), EMC-16 (SERIAL), EMC-20H (SERIAL)"
"Cressi: Drake (SERIAL), Giotto (SERIAL), Leonardo (SERIAL), Newton (SERIAL)"
"Garmin: Descent Mk1 (USBSTORAGE)"
"Genesis: React Pro (SERIAL), React Pro White (SERIAL)"
"Heinrichs Weikamp: Frog (SERIAL, BT), OSTC (SERIAL), OSTC 2 (SERIAL, BT, BLE), OSTC 2 TR (SERIAL, BT, BLE), OSTC 2C (SERIAL), OSTC 2N (SERIAL), OSTC 3 (SERIAL), OSTC 4 (SERIAL, BT, BLE), OSTC Mk2 (SERIAL), OSTC Plus (SERIAL, BT, BLE), OSTC Sport (SERIAL, BT, BLE), OSTC cR (SERIAL)"
"Hollis: DG02 (SERIAL), DG03 (SERIAL), TX1 (SERIAL)"
"Mares: Puck Pro (SERIAL, BLE), Quad (SERIAL, BLE), Quad Air (SERIAL, BLE), Smart (SERIAL, BLE), Smart Air (SERIAL, BLE)"
"Oceanic: Atom 1.0 (SERIAL), Atom 2.0 (SERIAL), Atom 3.0 (SERIAL), Atom 3.1 (SERIAL), Datamask (SERIAL), F10 (SERIAL), F11 (SERIAL), Geo (SERIAL), Geo 2.0 (SERIAL), OC1 (SERIAL), OCS (SERIAL), OCi (SERIAL), Pro Plus 2 (SERIAL), Pro Plus 2.1 (SERIAL), Pro Plus 3 (SERIAL), VT 4.1 (SERIAL), VT Pro (SERIAL), VT3 (SERIAL), VT4 (SERIAL), VTX (SERIAL), Veo 1.0 (SERIAL), Veo 180 (SERIAL), Veo 2.0 (SERIAL), Veo 200 (SERIAL), Veo 250 (SERIAL), Veo 3.0 (SERIAL), Versa Pro (SERIAL)"
"Scubapro: Aladin Sport Matrix (BLE), Aladin Square (USBHID), G2 (USBHID, BLE), G2 Console (USBHID, BLE)"
"Seemann: XP5 (SERIAL)"
"Shearwater: Nerd (SERIAL, BT), Nerd 2 (BLE), Perdix (SERIAL, BT, BLE), Perdix AI (BLE), Petrel (SERIAL, BT), Petrel 2 (SERIAL, BT, BLE), Predator (SERIAL, BT), Teric (BLE)"
"Sherwood: Amphos (SERIAL), Amphos Air (SERIAL), Insight (SERIAL), Insight 2 (SERIAL), Vision (SERIAL), Wisdom (SERIAL), Wisdom 2 (SERIAL), Wisdom 3 (SERIAL)"
"Subgear: XP-Air (SERIAL)"
"Suunto: Cobra (SERIAL), Cobra 2 (SERIAL), Cobra 3 (SERIAL), D3 (SERIAL), D4 (SERIAL), D4f (SERIAL), D4i (SERIAL), D6 (SERIAL), D6i (SERIAL), D9 (SERIAL), D9tx (SERIAL), DX (SERIAL), EON Core (USBHID, BLE), EON Steel (USBHID, BLE), Eon (SERIAL), Gekko (SERIAL), HelO2 (SERIAL), Mosquito (SERIAL), Solution (SERIAL), Solution Alpha (SERIAL), Solution Nitrox (SERIAL), Spyder (SERIAL), Stinger (SERIAL), Vyper (SERIAL), Vyper 2 (SERIAL), Vyper Air (SERIAL), Vyper Novo (SERIAL), Vytec (SERIAL), Zoop (SERIAL), Zoop Novo (SERIAL)"
"Tecdiving: DiveComputer.eu (SERIAL, BT)"
"Tusa: Element II (IQ-750) (SERIAL), Zen (IQ-900) (SERIAL), Zen Air (IQ-950) (SERIAL)"
"Uwatec: Aladin Air Twin (SERIAL), Aladin Air Z (SERIAL), Aladin Air Z Nitrox (SERIAL), Aladin Air Z O2 (SERIAL), Aladin Pro (SERIAL), Aladin Pro Ultra (SERIAL), Aladin Sport Plus (SERIAL), Memomouse (SERIAL)"
qqwindow screen has ldpi/pdpi 71.9693 148.882
qrc:/org/kde/kirigami/GlobalDrawer.qml:258: TypeError: Cannot read property 'length' of undefined
qrc:/org/kde/kirigami/GlobalDrawer.qml:293: TypeError: Cannot read property 'length' of undefined
qrc:/org/kde/kirigami/GlobalDrawer.qml:292: TypeError: Cannot read property 'length' of undefined
"8.267: DCDownloadThread started for Scubapro G2 on LE:00:13:43:54:8C:65"
Starting download from  BT
Creating Android Central/Client support for BTLE
qt_ble_open( 00:13:43:54:8C:65 )
"LocalDeviceBroadcastReceiver::onReceive() - event: android.bluetooth.device.action.ACL_CONNECTED"
Connection updated: error: QLowEnergyController::Error(NoError) oldState: QLowEnergyController::ControllerState(ConnectingState) newState: QLowEnergyController::ControllerState(ConnectedState)
connected to the controller for device 00:13:43:54:8C:65
  .. discovering services
Service discovery initiated
Found service "{00001800-0000-1000-8000-00805f9b34fb}"
 .. ignoring standard service "{00001800-0000-1000-8000-00805f9b34fb}"
Found service "{00001801-0000-1000-8000-00805f9b34fb}"
 .. ignoring standard service "{00001801-0000-1000-8000-00805f9b34fb}"
Found service "{0000180a-0000-1000-8000-00805f9b34fb}"
 .. ignoring standard service "{0000180a-0000-1000-8000-00805f9b34fb}"
Found service "{0000180f-0000-1000-8000-00805f9b34fb}"
 .. ignoring standard service "{0000180f-0000-1000-8000-00805f9b34fb}"
Found service "{0000181a-0000-1000-8000-00805f9b34fb}"
 .. ignoring standard service "{0000181a-0000-1000-8000-00805f9b34fb}"
Found service "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}"
 .. created service object QLowEnergyService(0xca632b60)
Discovery of "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" started
 .. done discovering services
Service "fdcdeaaa-295d-470e-bf15-04217b7aa0a0" discovered (start: 49 end: 54 ) QLowEnergyServicePrivate(0xca7ff7c0)
Found service "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" "Unknown Service"
   c: "{a188b7dd-debb-449a-852d-c243d46b4b1a}"
   c: "{aa0c68f0-ea9c-493d-8112-62879e72af68}"
        d: "{00002902-0000-1000-8000-00805f9b34fb}"
Using service "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" as preferred service
 .. enabling notifications
Using read characteristic "{aa0c68f0-ea9c-493d-8112-62879e72af68}"
now writing "0x0100" to the descriptor "{00002902-0000-1000-8000-00805f9b34fb}"
Write descriptor with handle  54 "0100" (service: "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" )
Descriptor write confirmation "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" 54 "0100" QLowEnergyService::ServiceError(NoError)
BLE write completed
QTime("19:46:51.824") packet SEND "0110"
Write characteristic with handle  50 "0110" (service: "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" , writeWithResponse: true , signed: false )
QTime("19:46:51.827") packet WAIT
Characteristic change notification "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" 52 "0132"
QTime("19:46:51.888") packet RECV "0132"
Characteristic write confirmation "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" 50 "0110" QLowEnergyService::ServiceError(NoError)
BLEObject::characteristicWritten
QTime("19:46:51.888") packet READ "0132"
QTime("19:46:51.889") packet SEND "0114"
Write characteristic with handle  50 "0114" (service: "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" , writeWithResponse: true , signed: false )
QTime("19:46:51.891") packet WAIT
Characteristic write confirmation "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" 50 "0114" QLowEnergyService::ServiceError(NoError)
BLEObject::characteristicWritten
Characteristic change notification "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" 52 "0406332c04"
QTime("19:46:51.942") packet RECV "0406332c04"
QTime("19:46:51.943") packet READ "0406332c04"
QTime("19:46:51.943") packet SEND "011a"
Write characteristic with handle  50 "011a" (service: "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" , writeWithResponse: true , signed: false )
QTime("19:46:51.945") packet WAIT
Characteristic write confirmation "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" 50 "011a" QLowEnergyService::ServiceError(NoError)
BLEObject::characteristicWritten
Characteristic change notification "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" 52 "046099dc46"
QTime("19:46:52.007") packet RECV "046099dc46"
QTime("19:46:52.007") packet READ "046099dc46"
"10.888: Event: systime=1541116012, devtime=1188862304\n"
"10.888: model=G2 firmware=0 serial=70005510"
QTime("19:46:52.012") packet SEND "09c60000000010270000"
Write characteristic with handle  50 "09c60000000010270000" (service: "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" , writeWithResponse: true , signed: false )
QTime("19:46:52.014") packet WAIT
Characteristic write confirmation "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" 50 "09c60000000010270000" QLowEnergyService::ServiceError(NoError)
BLEObject::characteristicWritten
Characteristic change notification "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" 52 "04fcfe0000"
QTime("19:46:52.066") packet RECV "04fcfe0000"
QTime("19:46:52.066") packet READ "04fcfe0000"
QTime("19:46:52.070") packet SEND "09c40000000010270000"
Write characteristic with handle  50 "09c40000000010270000" (service: "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" , writeWithResponse: true , signed: false )
QTime("19:46:52.072") packet WAIT
Characteristic write confirmation "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" 50 "09c40000000010270000" QLowEnergyService::ServiceError(NoError)
BLEObject::characteristicWritten
Characteristic change notification "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" 52 "0400ff0000"
QTime("19:46:52.124") packet RECV "0400ff0000"
QTime("19:46:52.124") packet READ "0400ff0000"
QTime("19:46:52.124") packet WAIT
Characteristic change notification "{fdcdeaaa-295d-470e-bf15-04217b7aa0a0}" 52 "f7a5a55a5a0c09000048d55d43ffffffffec0100"
QTime("19:46:52.216") packet RECV "f7a5a55a5a0c09000048d55d43ffffffffec0100"
QTime("19:46:52.216") packet READ "f7a5a55a5a0c09000048d55d43ffffffffec0100"
"11.096: No new dives downloaded from dive computer"
Deleting BLE object
Finishing download thread: "Dive data import error"
no new dives downloaded
"11.100: DCDownloadThread finished"
"LocalDeviceBroadcastReceiver::onReceive() - event: android.bluetooth.device.action.ACL_DISCONNECTED"
-------------- next part --------------
Subsurface: v4.8.3-307-g3e838ee74d19, built with libdivecomputer v0.7.0-devel-Subsurface-NG (e61b7c64f998efe00c2f10c7d84fa1618ded598c)
INFO: Open: transport=32
INFO: Configure: baudrate=57600, databits=8, parity=0, stopbits=0, flowcontrol=0
INFO: Timeout: value=3000
INFO: Purge: direction=3
DEBUG: cmd: size=0, data=
INFO: Write: size=2, data=0110
INFO: Read: size=2, data=0132
DEBUG: rcv: size=1, data=32
DEBUG: cmd: size=0, data=
INFO: Write: size=2, data=0114
INFO: Read: size=5, data=0406332C04
DEBUG: rcv: size=4, data=06332C04
DEBUG: cmd: size=0, data=
INFO: Write: size=2, data=011A
INFO: Read: size=5, data=046099DC46
DEBUG: rcv: size=4, data=6099DC46
Event: systime=1541116012, devtime=1188862304
Event: model=50 (0x00000032), firmware=0 (0x00000000), serial=70005510 (0x042c3306)
DEBUG: cmd: size=8, data=0000000010270000
INFO: Write: size=10, data=09C60000000010270000
INFO: Read: size=5, data=04FCFE0000
DEBUG: rcv: size=4, data=FCFE0000
DEBUG: cmd: size=8, data=0000000010270000
INFO: Write: size=10, data=09C40000000010270000
INFO: Read: size=5, data=0400FF0000
DEBUG: rcv: size=4, data=00FF0000
INFO: Read: size=20, data=F7A5A55A5A0C09000048D55D43FFFFFFFFEC0100
ERROR: Invalid payload length (247). [in /data/android/subsurface/libdivecomputer/src/uwatec_smart.c:331 (uwatec_smart_usbhid_receive)]
ERROR: Failed to receive the answer. [in /data/android/subsurface/libdivecomputer/src/uwatec_smart.c:611 (uwatec_smart_device_dump)]


More information about the subsurface mailing list