Core Bluetooth

RSS for tag

Communicate with Bluetooth 4.0 low energy devices using Core Bluetooth.

Core Bluetooth Documentation

Posts under Core Bluetooth tag

207 Posts
Sort by:
Post not yet marked as solved
0 Replies
137 Views
After updating a device to iOS 16 beta 1, I've noticed some changes to how Bluetooth profiles behave for certain functions. Specific examples include: Message Access Profile -> The SetMessageStatus function returns "OBEX_BAD_REQUEST" where it didn't before 02-00-4E-01-00-23-00-42-00-36-00-42-00-38-00-42-00-37-00-30-00-37-00-42-00-39-00-41-00-38-00-34-00-33-00-45-00-00-42-00-16-78-2D-62-74-2F-6D-65-73-73-61-67-65-53-74-61-74-75-73-00-49-00-04-30-4C-00-09-17-01-00-18-01-01-CB-08-60-5E-20 Message Access Profile -> Getting Message Listings from the sent folder...previously I was able to retrieve messages here but am no longer able to. It would be nice if the details of any changes were noted so appropriate updates can be made. Would also be nice if Apple finally moved off of version 1.2 or whatever so I can get Conversation Listings/Conversation ID from the device. We can dream, can't we? Thanks, -Drew
Posted
by
Post not yet marked as solved
3 Replies
298 Views
Device Info:- Bluetooth version: - 4.0 Communication Protocol: UART 3.3V TTL Device is Weight Scale We already tried using their mac address .but as per our knowledge we are unable to do that using core Bluetooth. we are attaching Bluetooth device service and characteristics here. Are we able to connect this Bluetooth Device using Core Bluetooth? * *
Posted
by
Post not yet marked as solved
0 Replies
112 Views
I am working on an app built in Swift and UIKit that uses audio playback over bluetooth. I am finding different amounts of latency for different devices, and it seems consistent across a given make/model. For instance, using an iPhone XR as the source, Bose On-Ear lags at 0.45 secs, Sony Pros lag at 0.3 secs and AirPods Pro lat at under 0.1 secs. I'd like to adjust latency based on collected data for "known" devices, but need a way (w/out asking the user for input) to detect the make and model of their bluetooth audio device Is this possible to do, maybe using core Bluetooth, or not?
Posted
by
Post not yet marked as solved
2 Replies
175 Views
We have a custom designed device that contains nRF51822 System on Chip from Nordic and we want to be able to exchange the data with it over Bluetooth Low Energy (BLE) link. We are using Apple Notification Center Service (ANCS) so our custom device can wake up our app from sleep after receiving a notification, so we need to look for and subscribe to the ANCS primary service on our custom designed device to start this process. nRF51822 SoC on our custom device can successfully discover ANCS Service on the iPhone (UUID = 0xF431) and explicitly enable Notification Source Notifications and Data Source Notifications on the custom device side. What is not clear to us is whether our custom device can successfully become a Notification Consumer (NC) and get notified by the iPhone (Notification Provider) of incoming notifications without the Bluetooth Pairing Request popup. As the documentation says, "All these characteristics require authorization for access.". Is this authorization shown through the Bluetooth Pairing Request system popup? We asked Nordic about that (link) but they did not have a right answer and suggested to contact Apple.
Posted
by
Post not yet marked as solved
0 Replies
140 Views
I have a crash in an app made in SwiftUI and using Core Bluetooth. I didn't have any UI, just the WindowGroup with an EmptyView, in this crash log. I was just sending some data in the EmptyView's .onAppear modifier to the peripheral and when I got the response and disconnect I get the following crash. I don't know what is going on. Can anyone help me please? Incident Identifier: 0A33C23B-6EB3-4137-92BE-A76DFB446558 CrashReporter Key: 47afebdb13773bf8c6112096dc5c4bf106cc22a1 Hardware Model: iPhone12,1 Process: App Clavier [331] Path: /private/var/containers/Bundle/Application/F88A8F58-D219-4991-8356-337BD96CFAC8/App Clavier.app/App Clavier Identifier: com.winerim.giltza Version: 1.0 (2) Code Type: ARM-64 (Native) Role: Foreground Parent Process: launchd [1] Coalition: com.winerim.giltza [519] Date/Time: 2022-06-02 10:12:07.1258 +0200 Launch Time: 2022-06-02 10:11:49.3838 +0200 OS Version: iPhone OS 15.4.1 (19E258) Release Type: User Baseband Version: 3.02.01 Report Version: 104 Exception Type: EXC_BAD_ACCESS (SIGBUS) Exception Subtype: KERN_PROTECTION_FAILURE at 0x00000027fffff9a0 Exception Codes: 0x0000000000000002, 0x00000027fffff9a0 VM Region Info: 0x27fffff9a0 is in 0x1000000000-0x7000000000; bytes after start: 103079213472 bytes before end: 309237646943 REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL commpage (reserved) fc0000000-1000000000 [ 1.0G] ---/--- SM=NUL ...(unallocated) ---> GPU Carveout (reserved) 1000000000-7000000000 [384.0G] ---/--- SM=NUL ...(unallocated) UNUSED SPACE AT END Exception Note: EXC_CORPSE_NOTIFY Termination Reason: SIGNAL 10 Bus error: 10 Terminating Process: exc handler [331] Triggered by Thread: 0 Kernel Triage: VM - pmap_enter failed with resource shortage Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 libswiftCore.dylib 0x19f027cb8 swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1> >::incrementSlow(swift::RefCountBitsT<(swift::RefCountInlinedness)1>, unsigned int) + 60 1 libswiftCore.dylib 0x19efef0d0 swift_retain + 124 2 libswiftCore.dylib 0x19efef0d0 swift_retain + 124 3 SwiftUI 0x1a1db2f54 ViewGraph.timeDidChange() + 88 4 SwiftUI 0x1a1db3868 GraphHost.setTime(_:) + 168 5 SwiftUI 0x1a1dcb1dc ViewGraph.beginNextUpdate(at:) + 28 6 SwiftUI 0x1a1dc51c8 closure #1 in ViewRendererHost.render(interval:updateDisplayList:) + 2280 7 SwiftUI 0x1a1e8cd5c ViewRendererHost.render(interval:updateDisplayList:) + 388 8 SwiftUI 0x1a1dd816c _UIHostingView.layoutSubviews() + 256 9 SwiftUI 0x1a1ddbfcc @objc _UIHostingView.layoutSubviews() + 28 10 UIKitCore 0x19c794844 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 2592 11 QuartzCore 0x19df0a1c0 CA::Layer::layout_if_needed(CA::Transaction*) + 532 12 QuartzCore 0x19defc5fc CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 136 13 QuartzCore 0x19df10f70 CA::Context::commit_transaction(CA::Transaction*, double, double*) + 452 14 QuartzCore 0x19df19e78 CA::Transaction::commit() + 704 15 QuartzCore 0x19defbd7c CA::Transaction::flush_as_runloop_observer(bool) + 88 16 CoreFoundation 0x19a1d9bb4 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 36 17 CoreFoundation 0x19a1a8b70 __CFRunLoopDoObservers + 592 18 CoreFoundation 0x19a1a3c2c __CFRunLoopRun + 1052 19 CoreFoundation 0x19a1b76b8 CFRunLoopRunSpecific + 600 20 GraphicsServices 0x1b6251374 GSEventRunModal + 164 21 UIKitCore 0x19cb1ce88 -[UIApplication _run] + 1100 22 UIKitCore 0x19c89e5ec UIApplicationMain + 364 23 SwiftUI 0x1a1fee640 closure #1 in KitRendererCommon(_:) + 164 24 SwiftUI 0x1a1f1c524 runApp<A>(_:) + 252 25 SwiftUI 0x1a1efd810 static App.main() + 128 26 App Clavier 0x10507b5f8 static App_ClavierApp.$main() + 40 27 App Clavier 0x10507b774 main + 12 28 dyld 0x1058a5ce4 start + 520
Posted
by
Post not yet marked as solved
0 Replies
153 Views
I'm developing a BLE app with the guideline below. (https://developer.apple.com/accessories/Accessory-Design-Guidelines.pdf) According to section 40.3 in the guideline, the use of ADV_DIRECT_IND is not a good idea. I'm not sure the reason but it seems to be the rule for peripheral devices. I think it's okay to connect my app(central device) to peripheral devices that transmit ADV_DIRECT_IND in an advertising packet. Is my understanding correct?
Posted
by
Post not yet marked as solved
1 Replies
193 Views
Am new to objective c I need to set a characteristic data which I get from a Bluetooth using CB read to Byte array then return a byte buffer. the same is written in java how can I do the same in objective c dataArray = characteristic.getValue(); tsLong = System.currentTimeMillis() - tsStart; float timeSeconds = (float) ((float) tsLong / 1000.0); String timerstring = String.format("%.2f", timeSeconds); message = convertByteToChannelData(ByteBuffer.wrap(dataArray), timerstring, 0); this is the convertByteToChannelData method public String convertByteToChannelData(ByteBuffer wrap,String timerString, int stimulus){ wrap.order(ByteOrder.LITTLE_ENDIAN); // Set 1 Channels // Channels 1, 5, 6, 11, 16, 17 ch1R = (float) ((wrap.getShort(0) / 4095.) * 3.3); ch1Rs = (float) ((wrap.getShort(4) / 4095.) * 3.3); ch5R = (float) ((wrap.getShort(12) / 4095.) * 3.3); ch5Rs = (float) ((wrap.getShort(4) / 4095.) * 3.3); ch6R = (float) ((wrap.getShort(6) / 4095.) * 3.3); }
Posted
by
Post not yet marked as solved
1 Replies
195 Views
Dear I want to ask the functionality of below function API: knownPeripherals = [myCentralManager retrievePeripheralsWithIdentifiers:savedIdentifiers to consider the following case: if A peer BLE device had been connected and all the services and characteristics had been discovered and read. and saved this peripherals object with the NSobject Identity. and then IOS disconnected with this peer BLE device. after a few hours or days or minutes, if call retrievePeripheralsWithIdentifiers can retrive the Peripherals object, does it mean that all the services uuid and characteristics attribute are available from the cached as well? just connect to the ble device identified by this peripherals object, no need to find services and characteristics for second time.
Posted
by
Post not yet marked as solved
0 Replies
209 Views
hi, I am developing an accessory device which iphone connects to over BLE. meaning the accessory device is a peripheral and the mobile is central. I would like to enable the user to rename the GAP name of the accessory via IOS bluetooth settings. As seen in the link below. I have verified that I have write permissions for the gap name charecteristic on the accessory. I connect to the peripheral, press "i" on IOS bluetooth settings but am unable to rename (as if I have only read permissions). what am I missing? what else need to be configured? Is this option only available for bluetooth classic devices? thanks alot in advance! https://www.businessinsider.com/how-to-change-bluetooth-name-on-iphone
Posted
by
Post not yet marked as solved
1 Replies
155 Views
Hello! I've seen a few users with bluetooth connectivity problems since the update to Monterey. I have had the update since 2021 and not had an issue before. Until today, while working on my iMac (2017 21.5") for a few hours, suddenly all my bluetooth devices disconnected at the same time (I have a pair of JBL headphones, my iMac keyboard and magic mouse). The bluetooth was still on, but when I went to go into Bluetooth Preferences menu, the devices appear (all unconnected) on the listed devices for a few seconds, then the entire lists disappears alotgether. Then after a few seconds they appear again, but they disappear again before I can do anything to the devices. When trying to turn the bluetooth on or off, it freezes for a bit then eventually turns on/off. I have tried restarting the computer, killing the Bluetooth via the terminal, deleting the bluetooth preference folder in my Library, but so far nothing has worked. I am not able to remove all the devices to try to reconnect because they disappear too quickly. I have just tried updating to the latest Monterey OS (12.4), but still no avail. Has anyone else experienced this problem? Thank you in advance!
Posted
by
Post not yet marked as solved
0 Replies
111 Views
I found this statement under the "Use Background Execution Modes Wisely" header:  Upon being woken up, an app has around 10 seconds to complete a task. Ideally, it should complete the task as fast as possible and allow itself to be suspended again. Apps that spend too much time executing in the background can be throttled back by the system or killed. I understand that the statement above applies to your app when you set the appropriate background mode. However, does the information above apply to Bluetooth events that your app handles during iOS state restoration (when your app is relaunched)?
Posted
by
Post not yet marked as solved
0 Replies
149 Views
First, thanks for your time ! I'm trying to code my own app, she had to link 2 iPhone with Bluetooth. The first iPhone had to send live camera flow to the other with Bluetooth link when the app is running in sender mode. The second iPhone had to show the live, and offer the possibility to take instant photos when the app is running in receiver mode. I don't want to install an app because I want to include other special actions in the future. First question : May I use swift or C ? If you need more details, don't hesitate! Arthur
Posted
by
Post not yet marked as solved
0 Replies
146 Views
Hello, I have a general question to ask about an implementation of a protocol my company will need. On a high level, we're implementing an update system for a device that will have a Bluetooth connection with the phone. To update the firmware of the device, we will send a HTTP request to a server and the server will respond with the new firmware of the device. Then to minimise the complexity we would want to simply parse the response and immediately transmit it as a byte array over a Bluetooth connection to the device. The size of this updated firmware would be around 40MB. My question is do you think this type of data transfer could be done easily using swift, and if it can be done easily. Could you point to some examples where it has been done since I was struggling to find something similar online? Thank you for your answers in advance.
Posted
by
Post not yet marked as solved
2 Replies
182 Views
Hello, We have a non-Apple, non-MFi hardware device with bluetooth capability. Is it possible for an iOS app to connect to our hardware device over bluetooth for serial communication without the hardware device being MFi certified? thanks.
Posted
by
Post not yet marked as solved
0 Replies
143 Views
Hi, i'm quite new to iOS Development and i'm looking for some useful informations for my project. The phone connects to a device via BLE and receives data from it at an high rate ( 4x hundreds data points per seconds) [--> Thread 1 ] and this data need to be analyzed in real time [--> Thread 2]. The app has to work for between 1 to 8 hours and all of this needs to work both when the phone is in the foreground and when is in the background (Background Task). Can you help me with any useful tips / information on how to accomplish this? Thank you
Posted
by
Post not yet marked as solved
0 Replies
105 Views
Can the iOS transport bridging feature bring up an iAP connection (in addition to A2DP/AVRCP/HFP) over BT classic? It seems like it's a given that it should, but was hoping someone could confirm this just in case I'm missing something.
Posted
by
Post not yet marked as solved
0 Replies
203 Views
Hello, we develop a BLE device that users connect to through our mobile app. The app uses RSSI signal strength to determine if the user is still near the beacon. If a specific RSSI value is reached the app ends the connection. Example. we wish to disconnect the connection if an RSSI value of -85 is reached for 3 seconds. This all works well when the app is running in the foreground. When the app is placed in background mode this is not the case. The connection with the BLE beacon goes to standard BLE stack connection maintenance and the app is forced to sleep in the background. How can we continue to monitor connected device RSSI value in an app that is now in the background? Thank you
Posted
by
Post not yet marked as solved
0 Replies
150 Views
Hi, I'm working with a BLE device manufacturer on a new device for which I'm tasked with developing the iOS app. The hardware developer told me: "In response to a Scan request (from a phone or other device) the BLE stack is configured to include a device identifier". The device identifier is something I need to see in the advertising packet before I connect to the device. I don't know what a "Scan request" is. Is this something I have to specifically ask for in my app? Is it something iOS does automatically? Thanks, Frank
Posted
by