Re: GATT Server: DBus GATT Services not advertised/exported

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

 



Hello Olivier,


On 14 April 2017 at 12:01, Olivier MARTIN <olivier@xxxxxxxxxxxx> wrote:
> You are right Barry, `example-advertisement` seems to work well (I installed
> and tried Nordic nRF Connect and I can see the expected advertisemet data).

Excellent!


> But I cannot still manage to get `example-gatt-server` :-(
> I am sure I got it working last year with an older version of Bluez. But I
> cannot make it work with Bluez v5.44.

OK, I've taken a look at "example-gatt-server" and have it working...

>
> My testing procedure:
>
> 1. [Laptop] First terminal: Start `sudo ./src/bluetoothd -E -n -d`
> 2. [Laptop] Second terminal: Start unmodified Bluez
> ./test/example-gatt-server
> 3. [Laptop] Third terminal: Ensure the adapter is "Powered: yes" and
> "Discoverable: yes"

OK, I've done this slightly different (details below). However, the
first thing I did was edit "/etc/bluetooth/main.conf"
I added the following line to the end of the file:

ControllerMode = le

Then I did the following:
1. [SBC1:T1] sudo ./src/bluetoothd -E -n -d
2. [SBC1:T2] ./example-gatt-server
3. [SBC1:T3] ./example-advertisement


>
> 4. [Android] Connect using Nordic nRF Connect (I also tried with "BLE
> Scanner") and check I see the exposed GATT services by `example-gatt-server`
> Unfortunately, I can only see:
> - Generic Access Service (0x1800)
> - Generic Attribute Service (0x1801)
>

I've used bluetoothctl on SBC2 to connect and read the battery values
that the GATT server is counting down.

$ bluetoothctl
[NEW] Controller 00:00:00:00:5A:AD linaro-alip [default]
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:00:00:00:5A:AD Discovering: yes
[NEW] Device B8:27:EB:22:57:E0 BluezeroLight
[bluetooth]# scan off
Discovery stopped
[CHG] Controller 00:00:00:00:5A:AD Discovering: no
[bluetooth]# connect B8:27:EB:22:57:E0
Attempting to connect to B8:27:EB:22:57:E0
[CHG] Device B8:27:EB:22:57:E0 Connected: yes
Connection successful
[...snip...]
[NEW] Primary Service
/org/bluez/hci0/dev_B8_27_EB_22_57_E0/service000a
0000180f-0000-1000-8000-00805f9b34fb
Battery Service
[NEW] Characteristic
/org/bluez/hci0/dev_B8_27_EB_22_57_E0/service000a/char000b
00002a19-0000-1000-8000-00805f9b34fb
Battery Level
[...snip...]
[CHG] Device B8:27:EB:22:57:E0 ServicesResolved: yes
[BluezeroLight]# select-attribute
/org/bluez/hci0/dev_B8_27_EB_22_57_E0/service000a/char000b
[BluezeroLight:/service000a/char000b]# read
Attempting to read /org/bluez/hci0/dev_B8_27_EB_22_57_E0/service000a/char000b
[CHG] Attribute
/org/bluez/hci0/dev_B8_27_EB_22_57_E0/service000a/char000b Value: 0x46
  46                                               F
[BluezeroLight:/service000a/char000b]# notify on
[CHG] Attribute
/org/bluez/hci0/dev_B8_27_EB_22_57_E0/service000a/char000b Notifying:
yes
Notify started
[CHG] Attribute
/org/bluez/hci0/dev_B8_27_EB_22_57_E0/service000a/char000b Value: 0x46
[CHG] Attribute
/org/bluez/hci0/dev_B8_27_EB_22_57_E0/service000a/char000b Value: 0x44
[CHG] Attribute
/org/bluez/hci0/dev_B8_27_EB_22_57_E0/service000a/char000b Value: 0x42
[CHG] Attribute
/org/bluez/hci0/dev_B8_27_EB_22_57_E0/service000a/char000b Value: 0x40
[CHG] Attribute
/org/bluez/hci0/dev_B8_27_EB_22_57_E0/service000a/char000b Value: 0x3e
[BluezeroLight:/service000a/char000b]# notify off
[CHG] Attribute
/org/bluez/hci0/dev_B8_27_EB_22_57_E0/service000a/char000b Notifying:
no
Notify stopped


That seems to be working then. When I didn't have "ControllerMode =
le" set then I did see it be unpredictable if it successfully
connected or not.
This also worked connecting with the nRF app.


Does that work for you?




> If I had to suspect Bluez code, I will guess there is something missing
> around here:
>
> bluetoothd[20429]: src/device.c:gatt_server_init() # gatt_server_init
> bluetoothd[20429]: src/device.c:gatt_debug() Primary services found: 2
> bluetoothd[20429]: src/device.c:gatt_debug() start: 0x0001, end: 0x0005,
> uuid: 00001801-0000-1000-8000-00805f9b34fb
> bluetoothd[20429]: src/device.c:gatt_debug() start: 0x0014, end: 0xffff,
> uuid: 00001800-0000-1000-8000-00805f9b34fb
> bluetoothd[20429]: src/device.c:gatt_debug() Registered handler for "Service
> Changed": 0
> bluetoothd[20429]: src/device.c:gatt_client_ready_cb() status: success,
> error: 0
>
> As Bluez daemon does not get the GATT services from Buez GATT Database. But
> it might be me who miss a step...
>
>
> On 14.04.2017 12:37, Barry Byford wrote:
>>
>> example-advertisementHello Oliver,
>>
>>
>> On 14 April 2017 at 11:03, Olivier MARTIN <olivier@xxxxxxxxxxxx> wrote:
>>>
>>> Thanks for replying my message Barry,
>>>
>>> Sorry, I forgot to mention but I start Bluez daemon with `sudo
>>> ./src/bluetoothd -E -n -d` (after stopping the bluetooth service). So I
>>> already run it with sudo and experimental option.
>>>
>>> I am not sure to understand what you mean by "this kind of error
>>> message".
>>> Because I do not see any error message in the log I provided.
>>
>>
>> OK, that was bad on my part. I read it as complaining that there were
>> too many advertisements. Looking again that wasn't what it was say.
>> Apologies.
>>
>>>
>>> Any other idea?
>>
>>
>> I am by Linux Single Board Computers (SBC) today so I'm able to run
>> what you are running and can show you what I'm seeing. I'll focus on
>> example-advertisement first as example-gatt-server doesn't change the
>> advertisements.
>>
>> I've started the BlueZ daemon with "./src/bluetoothd -E -n -d"
>>
>> In another shell when I start "./example-advertisement" I see the
>> following in the output:
>>
>> bluetoothd[2325]: src/adapter.c:property_set_mode() sending Set
>> Powered command for index 0
>> bluetoothd[2325]: src/adapter.c:property_set_mode_complete() Success
>> (0x00)
>> bluetoothd[2325]: src/adapter.c:new_settings_callback() Settings:
>> 0x00000ad1
>> bluetoothd[2325]: src/adapter.c:settings_changed() Changed settings:
>> 0x00000001
>> bluetoothd[2325]: src/adapter.c:adapter_start() adapter
>> /org/bluez/hci0 has been enabled
>> bluetoothd[2325]: src/adapter.c:trigger_passive_scanning()
>> bluetoothd[2325]: src/advertising.c:register_advertisement()
>> RegisterAdvertisement
>> bluetoothd[2325]: src/advertising.c:client_create() Adding proxy for
>> /org/bluez/example/advertisement0
>> bluetoothd[2325]: src/advertising.c:register_advertisement()
>> Registered advertisement at path /org/bluez/example/advertisement0
>> bluetoothd[2325]: src/advertising.c:parse_service_uuids() Adding
>> ServiceUUID: 180D
>> bluetoothd[2325]: src/advertising.c:parse_service_uuids() Adding
>> ServiceUUID: 180F
>> bluetoothd[2325]: src/advertising.c:parse_manufacturer_data() Adding
>> ManufacturerData for ffff
>> bluetoothd[2325]: src/advertising.c:parse_service_data() Adding
>> ServiceData for 9999
>> bluetoothd[2325]: src/advertising.c:refresh_advertisement() Refreshing
>> advertisement: /org/bluez/example/advertisement0
>> bluetoothd[2325]: src/advertising.c:add_adv_callback() Advertisement
>> registered: /org/bluez/example/advertisement0
>>
>>
>> On a second SBC, at the command line I run "bluetoothctl" and do "scan
>> on". Once my first SBC is found I do "scan off". I then do "info
>> B8:27:EB:22:57:E0" (this is the address of the first SBC) which gives
>> the following output:
>>
>> [bluetooth]# info B8:27:EB:22:57:E0
>> Device B8:27:EB:22:57:E0
>> Alias: B8-27-EB-22-57-E0
>> Paired: no
>> Trusted: no
>> Blocked: no
>> Connected: no
>> LegacyPairing: no
>> UUID: Heart Rate                (0000180d-0000-1000-8000-00805f9b34fb)
>> UUID: Battery Service           (0000180f-0000-1000-8000-00805f9b34fb)
>> ManufacturerData Key: 0xffff
>> ManufacturerData Value: 0x00
>> ManufacturerData Value: 0x01
>> ManufacturerData Value: 0x02
>> ManufacturerData Value: 0x03
>> ManufacturerData Value: 0x04
>> ServiceData Key: 00009999-0000-1000-8000-00805f9b34fb
>> ServiceData Value: 0x00
>> ServiceData Value: 0x01
>> ServiceData Value: 0x02
>> ServiceData Value: 0x03
>> ServiceData Value: 0x04
>>
>>
>> I've also done a scan from my Android phone (using the Nordic nRF
>> Connect app) and can see the advertisements also (just hard to share
>> that information on here).
>>
>> Does that help?
>>
>>
>>>
>>>
>>> On 13.04.2017 19:59, Barry Byford wrote:
>>>>
>>>>
>>>> Hello Olivier,
>>>>
>>>>
>>>> On 13 April 2017 at 12:14, Olivier MARTIN <olivier@xxxxxxxxxxxx> wrote:
>>>>>
>>>>>
>>>>> Hi all,
>>>>> I am having issue to advertise/export GATT services exposed through
>>>>> DBus
>>>>> API. I tried `./test/example-gatt-server`. And I also tried to merge
>>>>> `./test/example-advertisement` into `./test/example-gatt-server`. But
>>>>> in
>>>>> both cases I only see the two compulsory GATT services:
>>>>> - Generic Access Service (0x1800)
>>>>> - Generic Attribute Service (0x1801)
>>>>>
>>>>> I am using Bluez v5.44. And I also tried Bluez v5.37.
>>>>>
>>>>> GATT Services seem to be discovered by Bluez (note: I added additional
>>>>> debug
>>>>> statement all prefixed with '#'):
>>>>>
>>>>> bluetoothd[16877]: src/gatt-database.c:manager_register_app() #
>>>>> manager_register_app
>>>>> bluetoothd[16877]: src/gatt-database.c:create_app() # create_app
>>>>> bluetoothd[16877]: src/gatt-database.c:manager_register_app()
>>>>> Registering
>>>>> application: :1.404:/
>>>>> bluetoothd[16877]: src/advertising.c:register_advertisement()
>>>>> RegisterAdvertisement
>>>>> bluetoothd[16877]: src/advertising.c:client_create() Adding proxy for
>>>>> /org/bluez/example/advertisement0
>>>>> bluetoothd[16877]: src/advertising.c:register_advertisement()
>>>>> Registered
>>>>> advertisement at path /org/bluez/example/advertisement0
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service0/char2, iface: org.bluez.GattCharacteristic1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service2/char0/desc0, iface:
>>>>> org.bluez.GattDescriptor1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service2/char2/desc3, iface:
>>>>> org.bluez.GattDescriptor1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service2/char2, iface: org.bluez.GattCharacteristic1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service1/char0, iface: org.bluez.GattCharacteristic1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service2/char1, iface: org.bluez.GattCharacteristic1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service0/char1, iface: org.bluez.GattCharacteristic1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service2/char1/desc3, iface:
>>>>> org.bluez.GattDescriptor1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service2/char1/desc2, iface:
>>>>> org.bluez.GattDescriptor1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service0/char0, iface: org.bluez.GattCharacteristic1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service2, iface: org.bluez.GattService1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service1, iface: org.bluez.GattService1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service0, iface: org.bluez.GattService1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service2/char0/desc1, iface:
>>>>> org.bluez.GattDescriptor1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service2/char2/desc2, iface:
>>>>> org.bluez.GattDescriptor1
>>>>> bluetoothd[16877]: src/gatt-database.c:proxy_added_cb() Object
>>>>> received:
>>>>> /org/bluez/example/service2/char0, iface: org.bluez.GattCharacteristic1
>>>>> bluetoothd[16877]: src/gatt-database.c:client_ready_cb() #
>>>>> client_ready_cb
>>>>> bluetoothd[16877]: src/gatt-database.c:create_service() #
>>>>> create_service
>>>>> from /org/bluez/example/service2
>>>>> bluetoothd[16877]: src/gatt-database.c:create_service() #
>>>>> create_service
>>>>> from /org/bluez/example/service1
>>>>> bluetoothd[16877]: src/gatt-database.c:create_service() #
>>>>> create_service
>>>>> from /org/bluez/example/service0
>>>>> bluetoothd[16877]: src/gatt-database.c:database_add_app() #
>>>>> database_add_app
>>>>> bluetoothd[16877]: src/gatt-database.c:database_add_service() #
>>>>> database_add_service
>>>>> bluetoothd[16877]: src/gatt-database.c:cep_write_cb() Stored CEP value
>>>>> in
>>>>> the database
>>>>> bluetoothd[16877]: src/gatt-database.c:database_add_cep() Created CEP
>>>>> entry
>>>>> for characteristic
>>>>> bluetoothd[16877]: src/gatt-database.c:cep_write_cb() Stored CEP value
>>>>> in
>>>>> the database
>>>>> bluetoothd[16877]: src/gatt-database.c:database_add_cep() Created CEP
>>>>> entry
>>>>> for characteristic
>>>>> bluetoothd[16877]: src/gatt-database.c:cep_write_cb() Stored CEP value
>>>>> in
>>>>> the database
>>>>> bluetoothd[16877]: src/gatt-database.c:database_add_cep() Created CEP
>>>>> entry
>>>>> for characteristic
>>>>> bluetoothd[16877]: src/gatt-database.c:gatt_db_service_added() #
>>>>> gatt_db_service_added: GATT Service added to local database
>>>>> bluetoothd[16877]: src/gatt-database.c:database_add_service() #
>>>>> database_add_service
>>>>> bluetoothd[16877]: src/gatt-database.c:database_add_ccc() Created CCC
>>>>> entry
>>>>> for characteristic
>>>>> bluetoothd[16877]: src/gatt-database.c:gatt_db_service_added() #
>>>>> gatt_db_service_added: GATT Service added to local database
>>>>> bluetoothd[16877]: src/gatt-database.c:database_add_service() #
>>>>> database_add_service
>>>>> bluetoothd[16877]: src/gatt-database.c:database_add_ccc() Created CCC
>>>>> entry
>>>>> for characteristic
>>>>> bluetoothd[16877]: src/gatt-database.c:gatt_db_service_added() #
>>>>> gatt_db_service_added: GATT Service added to local database
>>>>> bluetoothd[16877]: src/gatt-database.c:client_ready_cb() GATT
>>>>> application
>>>>> registered: :1.404:/
>>>>> bluetoothd[16877]: src/advertising.c:parse_service_uuids() Adding
>>>>> ServiceUUID: 180D
>>>>> bluetoothd[16877]: src/advertising.c:parse_service_uuids() Adding
>>>>> ServiceUUID: 180F
>>>>> bluetoothd[16877]: src/advertising.c:parse_manufacturer_data() Adding
>>>>> ManufacturerData for ffff
>>>>> bluetoothd[16877]: src/advertising.c:parse_service_data() Adding
>>>>> ServiceData
>>>>> for 9999
>>>>> bluetoothd[16877]: src/advertising.c:refresh_advertisement() Refreshing
>>>>> advertisement: /org/bluez/example/advertisement0
>>>>> bluetoothd[16877]: src/advertising.c:add_adv_callback() Advertisement
>>>>> registered: /org/bluez/example/advertisement0
>>>>>
>>>>> I start `./test/example-gatt-server` as a normal user. But Bluez does
>>>>> not
>>>>> seem to have any permission issue with it.
>>>>
>>>>
>>>>
>>>> Building from source I've seen something similar if I've used sudo for
>>>> the
>>>> make.
>>>>
>>>> To compile and install I use sudo for the install only:
>>>>
>>>> make -j 4 && sudo make install
>>>>
>>>>
>>>>
>>>>>
>>>>> I am using 'BLE scanner' on Android to discover the GATT services. But
>>>>> I
>>>>> think the problem is coming from Bluez. When I connect the Android
>>>>> device
>>>>> to
>>>>> Bluez, I can see this log:
>>>>>
>>>>> bluetoothd[16877]: src/adapter.c:connected_callback() hci0 device
>>>>> 98:D6:F7:31:7B:0D connected eir_len 14
>>>>> bluetoothd[16877]: src/gatt-database.c:connect_cb() New incoming BR/EDR
>>>>> ATT
>>>>> connection
>>>>> bluetoothd[16877]: attrib/gattrib.c:g_attrib_ref() 0x98cd908:
>>>>> g_attrib_ref=1
>>>>> bluetoothd[16877]: src/device.c:load_gatt_db() # load_gatt_db:
>>>>> Restoring
>>>>> 98:D6:F7:31:7B:0D gatt database from file
>>>>> '/var/lib/bluetooth/5C:F3:70:6A:D9:3C/cache/98:D6:F7:31:7B:0D'
>>>>> bluetoothd[16877]: src/device.c:load_gatt_db_impl() # load_gatt_db_impl
>>>>> bluetoothd[16877]: src/device.c:load_service() # load_service: loading
>>>>> service: 0x0001, end: 0x0005, uuid:
>>>>> 00001801-0000-1000-8000-00805f9b34fb
>>>>> bluetoothd[16877]: src/device.c:load_service() # load_service: loading
>>>>> service: 0x0014, end: 0xffff, uuid:
>>>>> 00001800-0000-1000-8000-00805f9b34fb
>>>>> bluetoothd[16877]: src/device.c:load_chrc() loading characteristic
>>>>> handle:
>>>>> 0x0002, value handle: 0x0003, properties 0x0020 uuid:
>>>>> 00002a05-0000-1000-8000-00805f9b34fb
>>>>> bluetoothd[16877]: src/device.c:load_chrc() loading characteristic
>>>>> handle:
>>>>> 0x0015, value handle: 0x0016, properties 0x0002 uuid:
>>>>> 00002a00-0000-1000-8000-00805f9b34fb
>>>>> bluetoothd[16877]: src/device.c:load_chrc() loading characteristic
>>>>> handle:
>>>>> 0x0017, value handle: 0x0018, properties 0x0002 uuid:
>>>>> 00002a01-0000-1000-8000-00805f9b34fb
>>>>> bluetoothd[16877]: src/device.c:load_gatt_db() List GATT Primaries
>>>>> before
>>>>> being free:
>>>>> bluetoothd[16877]: src/device.c:print_primary() - Primary UUID:
>>>>> 00001801-0000-1000-8000-00805f9b34fb
>>>>> bluetoothd[16877]: src/device.c:print_primary() - Primary UUID:
>>>>> 00001800-0000-1000-8000-00805f9b34fb
>>>>> bluetoothd[16877]: src/device.c:add_primary() # add_primary
>>>>> bluetoothd[16877]: src/device.c:add_primary() # add_primary
>>>>> bluetoothd[16877]: profiles/gap/gas.c:gap_accept() GAP profile accept
>>>>> (98:D6:F7:31:7B:0D)
>>>>> bluetoothd[16877]: src/service.c:change_state() 0x98c98e0: device
>>>>> 98:D6:F7:31:7B:0D profile gap-profile state changed: disconnected ->
>>>>> connected (0)
>>>>> bluetoothd[16877]: src/gatt-client.c:btd_gatt_client_connected() Device
>>>>> connected.
>>>>> bluetoothd[16877]: src/device.c:gatt_server_init() # gatt_server_init
>>>>> bluetoothd[16877]: src/device.c:gatt_debug() Primary services found: 2
>>>>> bluetoothd[16877]: src/device.c:gatt_debug() start: 0x0001, end:
>>>>> 0x0005,
>>>>> uuid: 00001801-0000-1000-8000-00805f9b34fb
>>>>> bluetoothd[16877]: src/device.c:gatt_debug() start: 0x0014, end:
>>>>> 0xffff,
>>>>> uuid: 00001800-0000-1000-8000-00805f9b34fb
>>>>> bluetoothd[16877]: src/device.c:gatt_debug() Registered handler for
>>>>> "Service
>>>>> Changed": 0
>>>>> bluetoothd[16877]: src/device.c:gatt_client_ready_cb() status: success,
>>>>> error: 0
>>>>> bluetoothd[16877]: src/device.c:register_gatt_services() #
>>>>> register_gatt_services
>>>>> bluetoothd[16877]: src/device.c:add_primary() # add_primary
>>>>> bluetoothd[16877]: src/device.c:add_primary() # add_primary
>>>>> bluetoothd[16877]: src/device.c:add_gatt_service() # add_gatt_service:
>>>>> UUID:00001801-0000-1000-8000-00805f9b34fb
>>>>> bluetoothd[16877]: src/gatt-client.c:btd_gatt_client_ready() GATT
>>>>> client
>>>>> ready
>>>>> bluetoothd[16877]: src/gatt-client.c:create_services() Exporting
>>>>> objects
>>>>> for
>>>>> GATT services: 98:D6:F7:31:7B:0D
>>>>> bluetoothd[16877]: src/gatt-client.c:service_create() Exported GATT
>>>>> service:
>>>>> /org/bluez/hci0/dev_98_D6_F7_31_7B_0D/service0001
>>>>> bluetoothd[16877]: src/gatt-client.c:characteristic_create() Exported
>>>>> GATT
>>>>> characteristic:
>>>>> /org/bluez/hci0/dev_98_D6_F7_31_7B_0D/service0001/char0002
>>>>> bluetoothd[16877]: src/device.c:device_svc_resolved()
>>>>> /org/bluez/hci0/dev_98_D6_F7_31_7B_0D err 0
>>>>> bluetoothd[16877]: src/device.c:store_gatt_db() # store_gatt_db
>>>>> bluetoothd[16877]: src/device.c:store_service() # store_service
>>>>> bluetoothd[16877]: src/device.c:store_service() # store_service
>>>>> bluetoothd[16877]: profiles/gap/gas.c:read_device_name_cb() GAP Device
>>>>> Name:
>>>>> Nexus 4
>>>>> bluetoothd[16877]: profiles/gap/gas.c:read_appearance_cb() GAP
>>>>> Appearance:
>>>>> 0x0000
>>>>>
>>>>> I also reduced DBus 'TestAdvertisement' interface to only expose one
>>>>> GATT
>>>>> Service as many BLE adapter got a limitation in the size of the
>>>>> advertisement packet:
>>>>> class TestAdvertisement(Advertisement):
>>>>>
>>>>>     def __init__(self, bus, index):
>>>>>         Advertisement.__init__(self, bus, index, 'peripheral')
>>>>>         #self.add_service_uuid('180D') # HeartRate
>>>>>         self.add_service_uuid('180F') # Battery
>>>>>         #self.add_manufacturer_data(0xffff, [0x00, 0x01, 0x02, 0x03,
>>>>> 0x04])
>>>>>         #self.add_service_data('9999', [0x00, 0x01, 0x02, 0x03, 0x04])
>>>>>         self.include_tx_power = True
>>>>>
>>>>> My concern is mainly these lines:
>>>>>
>>>>> bluetoothd[16877]: src/device.c:gatt_debug() Primary services found: 2
>>>>> bluetoothd[16877]: src/device.c:gatt_debug() start: 0x0001, end:
>>>>> 0x0005,
>>>>> uuid: 00001801-0000-1000-8000-00805f9b34fb
>>>>> bluetoothd[16877]: src/device.c:gatt_debug() start: 0x0014, end:
>>>>> 0xffff,
>>>>> uuid: 00001800-0000-1000-8000-00805f9b34fb
>>>>>
>>>>
>>>> I've seen this kind of error message when I've had a failure of a
>>>> previous script and the Bluetooth daemon is in some unknown state. At
>>>> this point it is worth restarting the bluetooth service with:
>>>>   sudo service bluetooth restart
>>>>
>>>> You will see in the advertising DBus API documentation that it is
>>>> still in experimental mode in 5.44.
>>>>
>>>>
>>>> https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/advertising-api.txt#n78
>>>>
>>>> This means that you need to make sure bluetoothd is started in
>>>> experimental mode. Have you done this?
>>>>  You can check with "sudo service bluetooth status"
>>>>
>>>> Experimental can be switched on by default in the bluetooth.service file
>>>>
>>>> Edit /lib/systemd/system/bluetooth.service file to add --experimental
>>>> flag
>>>> e.g:
>>>>
>>>> sudo sed -i '/^ExecStart.*bluetoothd\s*$/ s/$/ --experimental/'
>>>> /lib/systemd/system/bluetooth.service
>>>>
>>>>
>>>>
>>>>
>>>>> I have not found the code that export GATT Services from GATT Database
>>>>> to
>>>>> the BLE central.
>>>>>
>>>>> From my search on Internet, it looks I am not the only one who is
>>>>> having
>>>>> this issue
>>>>> I am happy to share/test anything that could help to make some
>>>>> progress.
>>>>>
>>>>> Thanks,
>>>>> Olivier
>>>>> --
>>>>> To unsubscribe from this list: send the line "unsubscribe
>>>>> linux-bluetooth"
>>>>> in
>>>>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>>>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>
>>>
>>>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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