Re: How to add "Service Changed Indication"

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

 



Hi Luiz,

I read the btmon log after changing some services. But I don't see
there is any info about "Service Changed Indication". I attach this
log to this email. Could you please take a look at the log?

Some questions I have are:
1. To enable the "Service Changed Indication", do I need to change the
configuration of the bluetooth GATT server?
2. To enable the "Service Changed Indication", do I need to write some
code in Python to have it?
3. If I just need to call RegisterApplication() to register the
service and "Service Changed Indication" is supposed to be enabled,
then we should be fine on the GATT server side, correct? Then it'll be
up to the app developer to check on the mobile side. Do you know what
the app developer should check on their side?
4. I ran "bluetoothctl" and found these info:
[NEW] Characteristic
        /org/bluez/hci0/dev_6C_96_CF_98_99_12/service0006/char0007
        00002a05-0000-1000-8000-00805f9b34fb
        Service Changed
What is the meaning of this info? Can we tell from this info that
"Service Changed Indication" is working?

Thanks in advance!

On Wed, Jan 27, 2021 at 12:50 AM Kenny Bian <kennybian@xxxxxxxxx> wrote:
>
> Hi Luiz,
>
> I'm not sure if I can attach files to this forum. I just try to attach
> the files about the "Service Changed Indication" issue.
>
> Here is the list of files:
> bt_read.py - the script that the "Heart Rate Measurement" and "Body
> Sensor Location" characteristics only have the Read attribute
> bt_notify.py - the script that the "Heart Rate Measurement" and "Body
> Sensor Location" characteristics only have both the Read and Notify
> attributes
> btmon_read.log - the btmon log when running bt_read.py
> btmon_notify.log - the btmon log when running bt_notify.py
>
> Thank you very much!
>
> On Wed, Jan 27, 2021 at 12:46 AM Kenny Bian <kennybian@xxxxxxxxx> wrote:
> >
> > Hi Luiz,
> >
> > On Wed, Jan 27, 2021 at 12:42 AM Kenny Bian <kennybian@xxxxxxxxx> wrote:
> > >
> > > Hi Luiz,
> > >
> > > Thank you so much for your information.
> > >
> > > I created a test GATT server from the sample
> > > code(https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/example-gatt-server).
> > > I have 2 python scripts. In the "bt_read.py" I created, the Heart Rate
> > > Measurement(2A37) and Body Sensor Location(2A38) only have Read
> > > attribute. In the "bt_notify.py" I created, the Heart Rate
> > > Measurement(2A37) and Body Sensor Location(2A38) only have both the
> > > Read and Notify attribute.
> > >
> > > Here is what I did:
> > > I ran the "bt_read.py" and captured the btmon log. Then I ran
> > > "bt_notify.py" and captured the btmon log. I read both logs. But I
> > > don't see there is any info regarding the "Service Changed
> > > Indication".
> > >
> > > Here is the btmon log with both the Read and Notify attributes below.
> > > Thanks again for your help!
> > > =========================================================================
> > > Bluetooth monitor ver 5.48
> > > = Note: Linux version 4.19.35-g92e18fefc77 (armv7l)                    0.809169
> > > = Note: Bluetooth subsystem version 2.22                               0.809182
> > > = New Index: 00:16:A4:4A:2D:27 (Primary,UART,hci0)              [hci0] 0.809187
> > > = Open Index: 00:16:A4:4A:2D:27                                 [hci0] 0.809190
> > > = Index Info: 00:16:A4:4.. (Cypress Semiconductor Corporation)  [hci0] 0.809194
> > > @ MGMT Open: bluetoothd (privileged) version 1.14             {0x0002} 0.809200
> > > @ MGMT Open: bluetoothd (privileged) version 1.14             {0x0001} 0.809203
> > > @ MGMT Open: btmon (privileged) version 1.14                  {0x0003} 0.809276
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 8                   #1 [hci0] 4.543721
> > >       ATT: Handle Value Notification (0x1b) len 3
> > >         Handle: 0x0016
> > >           Data: 64
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 11                  #2 [hci0] 6.883753
> > >       ATT: Read By Group Type Request (0x10) len 6
> > >         Handle range: 0x0001-0xffff
> > >         Attribute group type: Primary Service (0x2800)
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 30                  #3 [hci0] 6.884412
> > >       ATT: Read By Group Type Response (0x11) len 25
> > >         Attribute data length: 6
> > >         Attribute group list: 4 entries
> > >         Handle range: 0x0001-0x0005
> > >         UUID: Generic Access Profile (0x1800)
> > >         Handle range: 0x0006-0x0009
> > >         UUID: Generic Attribute Profile (0x1801)
> > >         Handle range: 0x0234-0x023c
> > >         UUID: Heart Rate (0x180d)
> > >         Handle range: 0x023d-0x0240
> > >         UUID: Battery Service (0x180f)
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 11                  #4 [hci0] 6.944638
> > >       ATT: Read By Group Type Request (0x10) len 6
> > >         Handle range: 0x0241-0xffff
> > >         Attribute group type: Primary Service (0x2800)
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 26                  #5 [hci0] 6.945293
> > >       ATT: Read By Group Type Response (0x11) len 21
> > >         Attribute data length: 20
> > >         Attribute group list: 1 entry
> > >         Handle range: 0x0241-0x0250
> > >         UUID: Vendor specific (12345678-1234-5678-1234-56789abcdef0)
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 11                  #6 [hci0] 7.004723
> > >       ATT: Read By Group Type Request (0x10) len 6
> > >         Handle range: 0x0251-0xffff
> > >         Attribute group type: Primary Service (0x2800)
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 9                   #7 [hci0] 7.005369
> > >       ATT: Error Response (0x01) len 4
> > >         Read By Group Type Request (0x10)
> > >         Handle: 0x0251
> > >         Error: Attribute Not Found (0x0a)
> > > > HCI Event: Number of Completed Packets (0x13) plen 5       #8 [hci0] 7.005549
> > >         Num handles: 1
> > >         Handle: 65
> > >         Count: 2
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 11                  #9 [hci0] 7.064450
> > >       ATT: Read By Type Request (0x08) len 6
> > >         Handle range: 0x0234-0x023c
> > >         Attribute type: Characteristic (0x2803)
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 27                 #10 [hci0] 7.065112
> > >       ATT: Read By Type Response (0x09) len 22
> > >         Attribute data length: 7
> > >         Attribute data list: 3 entries
> > >         Handle: 0x0235
> > >         Value: 123602372a
> > >         Handle: 0x0238
> > >         Value: 123902382a
> > >         Handle: 0x023b
> > >         Value: 083c02392a
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 11                 #11 [hci0] 7.124428
> > >       ATT: Read By Type Request (0x08) len 6
> > >         Handle range: 0x023d-0x0240
> > >         Attribute type: Characteristic (0x2803)
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 13                 #12 [hci0] 7.125226
> > >       ATT: Read By Type Response (0x09) len 8
> > >         Attribute data length: 7
> > >         Attribute data list: 1 entry
> > >         Handle: 0x023e
> > >         Value: 123f02192a
> > > > HCI Event: Number of Completed Packets (0x13) plen 5      #13 [hci0] 7.125376
> > >         Num handles: 1
> > >         Handle: 65
> > >         Count: 2
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 11                 #14 [hci0] 7.184416
> > >       ATT: Read By Type Request (0x08) len 6
> > >         Handle range: 0x0241-0x0250
> > >         Attribute type: Characteristic (0x2803)
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 69                 #15 [hci0] 7.185101
> > >       ATT: Read By Type Response (0x09) len 64
> > >         Attribute data length: 21
> > >         Attribute data list: 3 entries
> > >         Handle: 0x0242
> > >         Value: 8a4302f1debc9a785634127856341278563412
> > >         Handle: 0x0247
> > >         Value: 8a4802f3debc9a785634127856341278563412
> > >         Handle: 0x024c
> > >         Value: 8a4d02f5debc9a785634127856341278563412
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 11                 #16 [hci0] 7.244526
> > >       ATT: Read By Type Request (0x08) len 6
> > >         Handle range: 0x024e-0x0250
> > >         Attribute type: Characteristic (0x2803)
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 9                  #17 [hci0] 7.246144
> > >       ATT: Error Response (0x01) len 4
> > >         Read By Type Request (0x08)
> > >         Handle: 0x024e
> > >         Error: Attribute Not Found (0x0a)
> > > > HCI Event: Number of Completed Packets (0x13) plen 5      #18 [hci0] 7.246564
> > >         Num handles: 1
> > >         Handle: 65
> > >         Count: 2
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 9                  #19 [hci0] 7.304500
> > >       ATT: Find Information Request (0x04) len 4
> > >         Handle range: 0x0237-0x0237
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 10                 #20 [hci0] 7.305951
> > >       ATT: Find Information Response (0x05) len 5
> > >         Format: UUID-16 (0x01)
> > >         Handle: 0x0237
> > >         UUID: Client Characteristic Configuration (0x2902)
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 9                  #21 [hci0] 7.364540
> > >       ATT: Find Information Request (0x04) len 4
> > >         Handle range: 0x023a-0x023a
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 10                 #22 [hci0] 7.366242
> > >       ATT: Find Information Response (0x05) len 5
> > >         Format: UUID-16 (0x01)
> > >         Handle: 0x023a
> > >         UUID: Client Characteristic Configuration (0x2902)
> > > > HCI Event: Number of Completed Packets (0x13) plen 5      #23 [hci0] 7.366660
> > >         Num handles: 1
> > >         Handle: 65
> > >         Count: 2
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 9                  #24 [hci0] 7.424617
> > >       ATT: Find Information Request (0x04) len 4
> > >         Handle range: 0x0240-0x0240
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 10                 #25 [hci0] 7.426085
> > >       ATT: Find Information Response (0x05) len 5
> > >         Format: UUID-16 (0x01)
> > >         Handle: 0x0240
> > >         UUID: Client Characteristic Configuration (0x2902)
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 9                  #26 [hci0] 7.484523
> > >       ATT: Find Information Request (0x04) len 4
> > >         Handle range: 0x0244-0x0246
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 10                 #27 [hci0] 7.486104
> > >       ATT: Find Information Response (0x05) len 5
> > >         Format: UUID-16 (0x01)
> > >         Handle: 0x0244
> > >         UUID: Characteristic Extended Properties (0x2900)
> > > > HCI Event: Number of Completed Packets (0x13) plen 5      #28 [hci0] 7.486520
> > >         Num handles: 1
> > >         Handle: 65
> > >         Count: 2
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 9                  #29 [hci0] 7.544546
> > >       ATT: Find Information Request (0x04) len 4
> > >         Handle range: 0x0245-0x0246
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 24                 #30 [hci0] 7.546011
> > >       ATT: Find Information Response (0x05) len 19
> > >         Format: UUID-128 (0x02)
> > >         Handle: 0x0245
> > >         UUID: Vendor specific (12345678-1234-5678-1234-56789abcdef2)
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 9                  #31 [hci0] 7.604713
> > >       ATT: Find Information Request (0x04) len 4
> > >         Handle range: 0x0246-0x0246
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 10                 #32 [hci0] 7.606323
> > >       ATT: Find Information Response (0x05) len 5
> > >         Format: UUID-16 (0x01)
> > >         Handle: 0x0246
> > >         UUID: Characteristic User Description (0x2901)
> > > > HCI Event: Number of Completed Packets (0x13) plen 5      #33 [hci0] 7.606747
> > >         Num handles: 1
> > >         Handle: 65
> > >         Count: 2
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 9                  #34 [hci0] 7.664243
> > >       ATT: Find Information Request (0x04) len 4
> > >         Handle range: 0x0249-0x024b
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 10                 #35 [hci0] 7.665862
> > >       ATT: Find Information Response (0x05) len 5
> > >         Format: UUID-16 (0x01)
> > >         Handle: 0x0249
> > >         UUID: Characteristic Extended Properties (0x2900)
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 9                  #36 [hci0] 7.724603
> > >       ATT: Find Information Request (0x04) len 4
> > >         Handle range: 0x024a-0x024b
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 24                 #37 [hci0] 7.726315
> > >       ATT: Find Information Response (0x05) len 19
> > >         Format: UUID-128 (0x02)
> > >         Handle: 0x024a
> > >         UUID: Vendor specific (12345678-1234-5678-1234-56789abcdef4)
> > > > HCI Event: Number of Completed Packets (0x13) plen 5      #38 [hci0] 7.726625
> > >         Num handles: 1
> > >         Handle: 65
> > >         Count: 2
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 9                  #39 [hci0] 7.784545
> > >       ATT: Find Information Request (0x04) len 4
> > >         Handle range: 0x024b-0x024b
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 10                 #40 [hci0] 7.785996
> > >       ATT: Find Information Response (0x05) len 5
> > >         Format: UUID-16 (0x01)
> > >         Handle: 0x024b
> > >         UUID: Characteristic User Description (0x2901)
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 9                  #41 [hci0] 7.844187
> > >       ATT: Find Information Request (0x04) len 4
> > >         Handle range: 0x024e-0x0250
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 10                 #42 [hci0] 7.845777
> > >       ATT: Find Information Response (0x05) len 5
> > >         Format: UUID-16 (0x01)
> > >         Handle: 0x024e
> > >         UUID: Characteristic Extended Properties (0x2900)
> > > > HCI Event: Number of Completed Packets (0x13) plen 5      #43 [hci0] 7.846215
> > >         Num handles: 1
> > >         Handle: 65
> > >         Count: 2
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 9                  #44 [hci0] 7.904466
> > >       ATT: Find Information Request (0x04) len 4
> > >         Handle range: 0x024f-0x0250
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 24                 #45 [hci0] 7.906160
> > >       ATT: Find Information Response (0x05) len 19
> > >         Format: UUID-128 (0x02)
> > >         Handle: 0x024f
> > >         UUID: Vendor specific (12345678-1234-5678-1234-56789abcdef6)
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 9                  #46 [hci0] 7.964493
> > >       ATT: Find Information Request (0x04) len 4
> > >         Handle range: 0x0250-0x0250
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 10                 #47 [hci0] 7.966067
> > >       ATT: Find Information Response (0x05) len 5
> > >         Format: UUID-16 (0x01)
> > >         Handle: 0x0250
> > >         UUID: Characteristic User Description (0x2901)
> > > > HCI Event: Number of Completed Packets (0x13) plen 5      #48 [hci0] 7.966489
> > >         Num handles: 1
> > >         Handle: 65
> > >         Count: 2
> > > > HCI Event: Number of Completed Packets (0x13) plen 5      #49 [hci0] 8.203559
> > >         Num handles: 1
> > >         Handle: 65
> > >         Count: 1
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 7                 #50 [hci0] 11.833674
> > >       ATT: Read Request (0x0a) len 2
> > >         Handle: 0x0236
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 7                 #51 [hci0] 11.840770
> > >       ATT: Read Response (0x0b) len 2
> > >         Value: 0663
> > > > HCI Event: Number of Completed Packets (0x13) plen 5     #52 [hci0] 12.078687
> > >         Num handles: 1
> > >         Handle: 65
> > >         Count: 1
> > > > ACL Data RX: Handle 65 flags 0x02 dlen 9                 #53 [hci0] 14.055212
> > >       ATT: Write Request (0x12) len 4
> > >         Handle: 0x0237
> > >           Data: 0100
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 5                 #54 [hci0] 14.056230
> > >       ATT: Write Response (0x13) len 0
> > > > HCI Event: Number of Completed Packets (0x13) plen 5     #55 [hci0] 14.329045
> > >         Num handles: 1
> > >         Handle: 65
> > >         Count: 1
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 11                #56 [hci0] 15.078671
> > >       ATT: Handle Value Notification (0x1b) len 6
> > >         Handle: 0x0236
> > >           Data: 0e750000
> > > > HCI Event: Number of Completed Packets (0x13) plen 5     #57 [hci0] 15.330353
> > >         Num handles: 1
> > >         Handle: 65
> > >         Count: 1
> > > < ACL Data TX: Handle 65 flags 0x00 dlen 9                 #58 [hci0] 16.071839
> > >       ATT: Handle Value Notification (0x1b) len 4
> > >         Handle: 0x0236
> > >           Data: 066e
> > > > ACL Data RX: H
> > >
> > > On Mon, Jan 25, 2021 at 9:59 AM Luiz Augusto von Dentz
> > > <luiz.dentz@xxxxxxxxx> wrote:
> > > >
> > > > Hi Kenny,
> > > >
> > > > On Sun, Jan 24, 2021 at 10:42 PM Kenny Bian <kennybian@xxxxxxxxx> wrote:
> > > > >
> > > > > Hi Luiz,
> > > > >
> > > > > Thank you so much for your reply. I appreciate it.
> > > > >
> > > > > By "registering the services", do you mean "RegisterApplication()" in
> > > > > https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/example-gatt-server#n656?
> > > > > If that is the case, I believe I already registered the services.
> > > > > I checked the files in /var/lib/bluetooth. According to
> > > > > https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/settings-storage.txt#n321,
> > > > > there should be a "[ServiceChanged]" section in the "info" file. But I
> > > > > don't see it in the "info" file. Is there a way to tell the "Service
> > > > > Changed Indication" is actually working?
> > > > > Let's suppose the "Service Changed Indication" is already enabled, is
> > > > > there a way for the mobile app to check on their side to tell which
> > > > > service(s) got changed?
> > > >
> > > > HCI traces (btmon) should be able to tell you if it has been
> > > > subscribed or not, if there is an Indication in it it probably means
> > > > the remote has subscribed.
> > > >
> > > > > Thanks again for your help.
> > > > >
> > > > > On Sun, Jan 24, 2021 at 7:35 PM Luiz Augusto von Dentz
> > > > > <luiz.dentz@xxxxxxxxx> wrote:
> > > > > >
> > > > > > Hi Kenny,
> > > > > >
> > > > > > On Sun, Jan 24, 2021 at 12:45 AM Kenny Bian <kennybian@xxxxxxxxx> wrote:
> > > > > > >
> > > > > > > Hello,
> > > > > > >
> > > > > > > We implemented a GATT server on Linux in Python. The code is based on
> > > > > > > the code sample(https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test/example-gatt-server).
> > > > > > > The BlueZ version is 5.48. But we found a problem. The cached data in
> > > > > > > /var/lib/bluetooth caused the mobile app to crash if some
> > > > > > > characteristics are changed. After some research, we found "Under BLE
> > > > > > > standard 'Generic Attribute'(0x1801), there is a Characteristic
> > > > > > > 'Service Changed' (0x2A05) with 'indicate' property", see
> > > > > > > https://github.com/espressif/esp-idf/issues/1777.
> > > > > > >
> > > > > > > The questions we have:
> > > > > > > How to enable the "Service Changed Indication"(0x2A05) in the
> > > > > > > bluetooth? Is there any code example in Python?
> > > > > >
> > > > > > If you are registering the services with Bluetoothd then it should
> > > > > > generate the service change automatically:
> > > > > >
> > > > > > https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/gatt-database.c#n1185
> > > > > >
> > > > > > When a new service is registered it is indicated here:
> > > > > >
> > > > > > https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/gatt-database.c#n1452
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Luiz Augusto von Dentz
> > > >
> > > >
> > > >
> > > > --
> > > > Luiz Augusto von Dentz

Attachment: btmon_notify.log
Description: Binary data


[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