Linux bluetooth development
 help / color / mirror / Atom feed
From: Olivier MARTIN <olivier@labapart.com>
To: Barry Byford <31baz66@gmail.com>
Cc: Bluez mailing list <linux-bluetooth@vger.kernel.org>
Subject: Re: GATT Server: DBus GATT Services not advertised/exported
Date: Fri, 14 Apr 2017 13:01:33 +0200	[thread overview]
Message-ID: <7e78e5e8a8340ee2b459d0cd2f645712@labapart.com> (raw)
In-Reply-To: <CAAu3APYtfEsmu4WREo=V=VtgxCd3tjj0+1J4HcqD0asN8boOxg@mail.gmail.com>

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).
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.

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"

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)

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@labapart.com> 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@labapart.com> 
>>> 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@vger.kernel.org
>>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> 
>> 

  reply	other threads:[~2017-04-14 11:01 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-13 11:14 GATT Server: DBus GATT Services not advertised/exported Olivier MARTIN
2017-04-13 17:59 ` Barry Byford
2017-04-14 10:03   ` Olivier MARTIN
2017-04-14 10:37     ` Barry Byford
2017-04-14 11:01       ` Olivier MARTIN [this message]
2017-04-14 12:30         ` Barry Byford
2017-04-14 18:14           ` Olivier MARTIN
2017-04-14 18:31             ` Barry Byford
2017-04-15 11:11               ` Olivier MARTIN
2017-04-19 23:20               ` Olivier MARTIN
2017-04-20 11:31                 ` Luiz Augusto von Dentz
2017-04-21 17:22                   ` Olivier MARTIN
2017-04-24 21:23                   ` Olivier MARTIN

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7e78e5e8a8340ee2b459d0cd2f645712@labapart.com \
    --to=olivier@labapart.com \
    --cc=31baz66@gmail.com \
    --cc=linux-bluetooth@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox