Post not yet marked as solved
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
Post not yet marked as solved
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?
*
*
Post not yet marked as solved
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?
Post not yet marked as solved
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.
Post not yet marked as solved
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
Post not yet marked as solved
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?
Post not yet marked as solved
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);
}
Post not yet marked as solved
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.
Post not yet marked as solved
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
Post not yet marked as solved
Hi,
Trying to auto pair a Ble device in iOS app with Just works kind of approach. Requires a secure connection with device but the pairing process should happen without user interference like skipping entering pin or auto entering pin in background to pair a device.
Post not yet marked as solved
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!
Post not yet marked as solved
How can I relaunch my app when I get close to my bluetooth device
Post not yet marked as solved
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)?
Post not yet marked as solved
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
Post not yet marked as solved
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.
Post not yet marked as solved
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.
Post not yet marked as solved
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
Post not yet marked as solved
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.
Post not yet marked as solved
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
Post not yet marked as solved
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