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 19:14, Olivier MARTIN <olivier@xxxxxxxxxxxx> wrote:
> Thanks Barry, setting 'ControllerMode = le' in /etc/bluetooth/main.conf
> fixed my issue. I can now see the GATT services.

Good news!

> But I guess my adapter now only works as BLE adapter and will ignore the
> non-LE devices.
> In the comment of /etc/bluetooth/main.conf it is written the adapter should
> be by default set as 'dual'.
>
> Is it a bug in Bluez? Why GATT services are not exposed while using the
> default value for 'ControllerMode'?

This issue has come up before and was discuss here:
http://marc.info/?l=linux-bluetooth&m=146071596012263&w=2




> On 14.04.2017 14:30, Barry Byford wrote:
>>
>> 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