Hi Emil, Martin, On Tue, Nov 13, 2018 at 12:47 PM Emil Lenngren <emil.lenngren@xxxxxxxxx> wrote: > > Hi, > > Den mån 12 nov. 2018 kl 17:19 skrev Martin Townsend <mtownsend1973@xxxxxxxxx>: > > I've just been reading the 4.1 spec on GAP and on page 224 it states: > > > > > > "In LE, GAP defines four specific roles: Broadcaster, Observer, Peripheral, and > > Central. A device may support multiple LE GAP roles provided that the underly- > > ing Controller supports those roles or role combinations. However, only one LE > > GAP role may be supported at a given time. Each role specifies the require- > > ments for the underlying Controller. This allows for Controllers to be optimized > > for specific use cases." > > > > Now to me that says a device can support being a central and > > peripheral but doesn't have to support them concurrently so I'm > > guessing if the device is in the peripheral role and then wanted to > > connect to another device you would have to stop being a peripheral > > (ie drop this connection) and then become a central, make the > > connection and when finished disconnect and become a peripheral again > > and wait for the other devices to reconnect to you. Or am I > > mis-reading this? > > This restriction is lifted in newer versions of the spec. The same > section in version 4.2 says this: > "In LE, GAP defines four specific roles: Broadcaster, Observer, Peripheral, and > Central. A device may support multiple LE GAP roles provided that the > underlying Controller supports those roles or role combinations. Each role > specifies the requirements for the underlying Controller. This allows for > Controllers to be optimized for specific use cases." > > If you use the btmon tool you can easily see what combination of > supported states the controller supports. If you have btmon running > while you initiate bluetoothd you will see the packet LE Read > Supported States Command, which contains this info. In that case we should definitely use these states to determine instead of assuming the controller don't support Master & Slave state, though it would be great if Martin provides the HCI traces where it is failing and if indeed is the controller not support it or some other bug. -- Luiz Augusto von Dentz