https://git.tcrez.dev/tcrez/micropython/src/branch/main/temp...
Building a GATT Server on Pi Pico W
11–18 of 18 posts
Re: Building a GATT Server on Pi Pico W
#12When I last look at the description of the Pi Pico W from adafruit https://www.adafruit.com/product/5544 it says: "Bluetooth Low Energy - note this isn't supported in software yet, its just a hardware capability." Yet this blog discusses BTStack so it must work at some level ... Can anyone clarify: if you want to use BLE on this device, is BTStack the only option or is this outdated info?
Re: Building a GATT Server on Pi Pico W
#13I'm trying to understand what GATT is. From what I've found in the links below, it looks Bluetooth 5.4 spec contains an Attribute Protocol (ATT) that allows for sharing of custom attributes between bluetooth devices. Attributes have a type identified by UUID, a server-specific 16-bit handle, a higher-level handle group, a value, and then permissions. Permissions specify read/write capability and requirements for encr…
GATT, at the lowest level, is a spec that allows you to access what is substantially a key-value store over bluetooth. It was part of the 4.0 spec. Keys are 16-bit "handles", values are arbitrary byte bags. Handles may change between connections and are not considered stable, which is why there is a higher level of abstraction used. Each K-V pair is called an attribute. On top of that simple kv-store, are built highe…
Re: Building a GATT Server on Pi Pico W
#14Earlier quoted context omitted.
GATT, at the lowest level, is a spec that allows you to access what is substantially a key-value store over bluetooth. It was part of the 4.0 spec. Keys are 16-bit "handles", values are arbitrary byte bags. Handles may change between connections and are not considered stable, which is why there is a higher level of abstraction used. Each K-V pair is called an attribute. On top of that simple kv-store, are built highe…
I had a play with BLE a few years ago but found the entry point too high to get started with - do you know of any high-level introductions to the terminology and concepts (possibly illustrated or animated, as that seems make the data flows easier to grasp)?
Re: Building a GATT Server on Pi Pico W
#15I'm trying to understand what GATT is. From what I've found in the links below, it looks Bluetooth 5.4 spec contains an Attribute Protocol (ATT) that allows for sharing of custom attributes between bluetooth devices. Attributes have a type identified by UUID, a server-specific 16-bit handle, a higher-level handle group, a value, and then permissions. Permissions specify read/write capability and requirements for encr…
https://learn.adafruit.com/introduction-to-bluetooth-low-ene...
Re: Building a GATT Server on Pi Pico W
#16I'm trying to understand what GATT is. From what I've found in the links below, it looks Bluetooth 5.4 spec contains an Attribute Protocol (ATT) that allows for sharing of custom attributes between bluetooth devices. Attributes have a type identified by UUID, a server-specific 16-bit handle, a higher-level handle group, a value, and then permissions. Permissions specify read/write capability and requirements for encr…
Re: Building a GATT Server on Pi Pico W
#17Re: Building a GATT Server on Pi Pico W
#18I'm trying to understand what GATT is. From what I've found in the links below, it looks Bluetooth 5.4 spec contains an Attribute Protocol (ATT) that allows for sharing of custom attributes between bluetooth devices. Attributes have a type identified by UUID, a server-specific 16-bit handle, a higher-level handle group, a value, and then permissions. Permissions specify read/write capability and requirements for encr…
I spent a good part of a year working specifically with the Bluetooth GATT spec designing my own client and servers which would try to function as close to the spec as possible. The spec is very bad, I'm sorry but I understand the amount of effort that must have gone into building it. There are blatant holes in the entire spec, documents are broken apart in some chaotic pattern where to implement a single ATT you nee…
Sorry, I’m part of the problem. ^_^; If you read the BLE Developers Handbook, it paints a beautiful picture of a mesh of low power sensor devices that periodically advertise information, and it helped put the design of GATT into context for me. Of course, we had no interest in using GATT in that manner - we just wanted the other features of BLE. One fundamental issue is that if you want E2E transport encryption to a specific mobile app, LE bonding is no longer sufficient. So you start rolling your own crypto only to realize that negotiated MTU means your max datagram size is variable and dynamic. From there, you’re well on your way to implementing a custom transport layer on top of GATT. If you don’t horribly abuse GATT and use it for its intended purpose (like some of the standardized profiles on top of GATT), it works fairly decently.