Re: GATT issue, possible bluez bug?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Adam,

On Mon, Mar 21, 2022 at 4:03 PM Adam Pigg <adam@xxxxxxxxxxx> wrote:
>
> Hi
>
> A bit of background, I write a linux desktop/mobile app called
> Amazfish which interfaces with several watches over BLE using their
> GATT services.  To do this, I use the bluez dbus api (technically a
> thin wrapper around it I wrote called qble
> https://github.com/piggz/qble)
>
> All has been good so far, I support several generations of
> Huami/Amazfit watches, as well as the open source Pinetime and
> Bangle.js.  For the Amazfit watches, i have implementations for older
> devies such as the Bip, and newer ones such as the GTS.
>
> Much of the reverse engineering comes from the Android Gadget Bridge
> project, which supports many more devices.
>
> My community of users donated to buy me a newer device called a GTR2,
> which, according to the GB devs uses the same protocol as the slightly
> older GTS, and the packet captures I have from Android would support
> this.
>
> But this is where my trouble starts with Bluez, my existing
> implementation doesnt work at all.  Normally, after a connection, I
> would wait for the ServicesResolved signal, which happens pretty fast
> on all other devices, but on the GTR2, it takes about 30 seconds, by
> which time, the watch has disconnected. (i get a disconnected signal
> immediately after the ServicesResolved signal)
>
> To rule out my code, I have tried several things:
> Gatttool
> With gattool, i can connect, get the services, enable a notification,
> write a value and get the expected results seemingly fine
>
> Python-gatt (using the bluez dbus api)
> Im unable to iterate the services, like my app, it takes 30 seconds to
> get the signal and then swiftly disconnects
>
> Gattlib (https://github.com/labapart/gattlib)
> Gattlib is interesting as it appears to have "borrowed" much of its
> code directly from bluez.  When built against the system bluez, if the
> version is > 5.42, it will use the dbus api.  When I do this, again im
> unable to list services on the watch.  However, if I edit the build to
> force it to use its internal gatt implementation, which appears to be
> the same one used by gatttool, then, it IS able to interrogate the
> watch.
>
> I have attached 3 files
> 1. test python program which should print services, and associated btmon
> 2. btmon output while using gatttool
> 3. btmon output running gattlib discover example
>
> Note, other than discovery, I havnt been able to get gattlib to
> read/write/notify!
>
> It seems as though I may be triggering a bug in the bluez dbus api?
> Can anyone suggest anything?

What version are you using? I would first try with the latest to see
if that something already fixed.


-- 
Luiz Augusto von Dentz



[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux