All of lore.kernel.org
 help / color / mirror / Atom feed
* GATT server
@ 2016-02-09 21:03 Miklós Fazekas
  2016-02-10 11:08 ` Luiz Augusto von Dentz
  0 siblings, 1 reply; 2+ messages in thread
From: Miklós Fazekas @ 2016-02-09 21:03 UTC (permalink / raw)
  To: linux-bluetooth

Hi

I'm trying to develop a GATT server with bluez on a raspberry to
communicate with iOS via BLE.

I've managed to get one working with bluez 5.28 based on
plugins/gatt-example.c (gatt_service_add). But i have some weird
issues when sending more 70 bytes in a packet to iOS devices - not
always but sometimes.

So i try to upgrade bluez to investigate on the latest version. My
understanding is that while the plugins/gatt_service_add is still in
5.37 repo, and they compile fine, they are now depreacted, and dbus is
the replacement.

I'm a dbus newby. I configured/running with experimental. Moreover
python example (../test/example-gatt-server) seems to work fine. But
running C example (tools/gatt-service) gives me this error:

   RegisterService: Method "RegisterService" with signature "oa{sv}"
on interface "org.bluez.GattManager1" doesn't exist

But my limited dbus fu on python showed this signature for the method.
Does the example tools/gatt-service works? Can anyone give me pointer
to figure out the RegisterService issue above?

Thanks,
Miklós


http://permalink.gmane.org/gmane.linux.bluez.kernel/55510
Linux raspberrypi 4.1.13-v7+


When running the python example:

sudo ../test/example-gatt-server
GetManagedObjects
GetManagedObjects
GetManagedObjects
GATT service registered
GATT service registered
GATT service registered


And in bluetoothd log i see services registered:

Feb 09 20:44:13 raspberrypi bluetoothd[353]:
src/gatt-database.c:client_ready_cb() GATT service registered:
/org/bluez/example/service2

sudo dbus-monitor --system

signal sender=org.freedesktop.DBus -> dest=:1.19 serial=2
path=/org/freedesktop/DBus; interface=org.freedesktop.DBus;
member=NameAcquired
   string ":1.19"
signal sender=org.freedesktop.DBus -> dest=(null destination)
serial=54 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus;
member=NameOwnerChanged
   string ":1.20"
   string ""
   string ":1.20"
signal sender=:1.2 -> dest=(null destination) serial=297
path=/org/bluez/hci0; interface=org.freedesktop.DBus.Properties;
member=PropertiesChanged
   string "org.bluez.Adapter1"
   array [
      dict entry(
         string "UUIDs"
         variant             array [
               string "00001801-0000-1000-8000-00805f9b34fb"
               string "00001200-0000-1000-8000-00805f9b34fb"
               string "00001800-0000-1000-8000-00805f9b34fb"
               string "0000180d-0000-1000-8000-00805f9b34fb"
            ]
      )
   ]
   array [
   ]

For the C program i see this in dbus monitor:

signal sender=org.freedesktop.DBus -> dest=:1.22 serial=2
path=/org/freedesktop/DBus; interface=org.freedesktop.DBus;
member=NameAcquired

   string ":1.22"

signal sender=org.freedesktop.DBus -> dest=(null destination)
serial=59 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus;
member=NameOwnerChanged

   string ":1.23"

   string ""

   string ":1.23"

signal sender=:1.23 -> dest=(null destination) serial=6 path=/;
interface=org.freedesktop.DBus.ObjectManager; member=InterfacesAdded

   object path "/service1"
   array [
      dict entry(
         string "org.freedesktop.DBus.Introspectable"
         array [
         ]
      )

      dict entry(
         string "org.bluez.GattService1"
         array [
            dict entry(
               string "UUID"
               variant                   string
"00001802-0000-1000-8000-00805f9b34fb"
            )
         ]
      )

      dict entry(
         string "org.freedesktop.DBus.Properties"
         array [
         ]
      )
   ]

signal sender=:1.23 -> dest=(null destination) serial=7 path=/;
interface=org.freedesktop.DBus.ObjectManager; member=InterfacesAdded
   object path "/service1/characteristic1"
   array [
      dict entry(
         string "org.freedesktop.DBus.Introspectable"
         array [
         ]
      )
      dict entry(
         string "org.bluez.GattCharacteristic1"
         array [
            dict entry(
               string "UUID"
               variant                   string
"00002a06-0000-1000-8000-00805f9b34fb"
            )
            dict entry(
               string "Value"
               variant                   array of bytes [
                     00
                  ]
            )
            dict entry(
               string "Flags"
               variant                   array [
                     string "write-without-response"
                  ]
            )
         ]
      )

      dict entry(
         string "org.freedesktop.DBus.Properties"
         array [
         ]
      )
   ]

signal sender=:1.23 -> dest=(null destination) serial=8 path=/;
interface=org.freedesktop.DBus.ObjectManager; member=InterfacesAdded

   object path "/service1/characteristic1/descriptor2"
   array [
      dict entry(
         string "org.freedesktop.DBus.Introspectable"
         array [
         ]
      )

      dict entry(
         string "org.bluez.GattDescriptor1"
         array [
            dict entry(
               string "UUID"
               variant                   string
"8260c653-1a54-426b-9e36-e84c238bc669"
            )

            dict entry(
               string "Value"
               variant                   array [
                  ]
            )
         ]
      )
      dict entry(
         string "org.freedesktop.DBus.Properties"
         array [
         ]
      )
 ]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: GATT server
  2016-02-09 21:03 GATT server Miklós Fazekas
@ 2016-02-10 11:08 ` Luiz Augusto von Dentz
  0 siblings, 0 replies; 2+ messages in thread
From: Luiz Augusto von Dentz @ 2016-02-10 11:08 UTC (permalink / raw)
  To: Miklós Fazekas; +Cc: linux-bluetooth

Hi Miklós,



On Tue, Feb 9, 2016 at 11:03 PM, Miklós Fazekas <mfazekas@szemafor.com> wrote:
> Hi
>
> I'm trying to develop a GATT server with bluez on a raspberry to
> communicate with iOS via BLE.
>
> I've managed to get one working with bluez 5.28 based on
> plugins/gatt-example.c (gatt_service_add). But i have some weird
> issues when sending more 70 bytes in a packet to iOS devices - not
> always but sometimes.
>
> So i try to upgrade bluez to investigate on the latest version. My
> understanding is that while the plugins/gatt_service_add is still in
> 5.37 repo, and they compile fine, they are now depreacted, and dbus is
> the replacement.
>
> I'm a dbus newby. I configured/running with experimental. Moreover
> python example (../test/example-gatt-server) seems to work fine. But
> running C example (tools/gatt-service) gives me this error:
>
>    RegisterService: Method "RegisterService" with signature "oa{sv}"
> on interface "org.bluez.GattManager1" doesn't exist
>
> But my limited dbus fu on python showed this signature for the method.
> Does the example tools/gatt-service works? Can anyone give me pointer
> to figure out the RegisterService issue above?

The API has changed to RegisterApplication, apparently I forgot to
update all the tools, I will fix it asap. Btw, do you have any logs
regarding the iOS problem?

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-02-10 11:08 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-09 21:03 GATT server Miklós Fazekas
2016-02-10 11:08 ` Luiz Augusto von Dentz

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.