Posts

Post not yet marked as solved
7 Replies
4.7k Views
Hi,I am trying to scan for extended advertising packets using my iPad Air (A2152). I've noticed that my device supports Bluetooth 5.0 but I can't find my BLE 5.0 peripheral using Core Bluetooth. I have found an API to test if my devices support this feature and I have written code to test its. if (@available(iOS 13.0, *)) { if ([CBCentralManager supportsFeatures:CBCentralManagerFeatureExtendedScanAndConnect]) { NSLog(@"YES"); } else { NSLog(@"NO"); } } else { NSLog(@"Not iOS 13"); }I get answer "NO".More over, I was trying to use the PacketLogger for Xcode to find out the problem. My investigation has gone to place when I see that there are sending packets to set extended scan parameters with code "Reserved for future use". It's strange for me why this value is set. It is looking like software issues (with Core Bluetooth) rather than the unability by my device to scan for advertising extensions.What you can see at attached image. Next one, I don't know about if my device is supports "LE 2 Mbps bitrate". We can see that iPad is scanning using LE 1 Mbps. How to check if it's possible to scanning using LE 2 Mbps? It seems to me each device which supports Bluetooth 5.0 should be able to scan using LE 2 Mbps.To sum up, I have a several questions for you.1. About Core Bluetooth, is there any API which should I use to enable scanning for extended advertising? I haven't found any but I would like to be certain about its.2. If first question has negative answer. What is problem with my device or framework or something else? What is caused that scanning for extended advertising is impossible using my iPad A2152?3. I'm wondering about how to check Bluetooth bitrate in my device. How to do it? Is it possible by users? Or maybe anywhere in product's specification exists this information?4. Last one, maybe there are any devices which supports extended advertising. Could you tell which ones?Best Regards
Posted
by lapwingg.
Last updated
.
Post not yet marked as solved
0 Replies
320 Views
I was working last time with data that the Core Bluetooth is providing after just its discovers a peripheral. I mean about "advertisementData" dictionary from callback centralManager:didDiscoverPeripheral:advertisementData:RSSI.I was surprised why mentioned above dictionary doesn't provide the values for each of the data types from Bluetooth documentation.https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile/Moreover, appending for example Flags (data type 0x01) don't cause any error, it works well. Instead of data connected with flags are ignored. So I suppose that the Core Bluetooth internally is parsing them properly but doesn't provide that result for programmers.My question is WHY?Why can't we have access to the values of each data type from Bluetooth documentation?Is possible to grant access to this data in a future version?A simple example of this problem:Advertisement packet : 0x02010603020518 < 0x02, 0x01, 0x06, 0x03, 0x02, 0x05, 0x18 >is parsed and then is provided as{ CBAdvertisementDataServiceUUIDsKey: { "Current Time Service" }}instead of ->{ FLAGS_KEY: "LE General Discoverable Mode, BR/ERD Not Supported", CBAdvertisementDataServiceUUIDsKey: { "Current Time Service" }}"FLAGS_KEY" is bolded because it doesn't exist, but maybe should?
Posted
by lapwingg.
Last updated
.