External Accessory

RSS for tag

Communicate with accessories connected to a device by the Apple Lightning connector or through Bluetooth using External Accessory.

Posts under External Accessory tag

41 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

How Does iPhone 15+ (USB-C) Support UVC Devices? Is MFi Certification Required?
In the past, when using Lightning, many external devices had to go through MFi certification. However, since the iPhone 15 switched from Lightning to USB-C, is MFi certification still required? Our company has developed several UVC devices, and we have confirmed that iPads can read frames from external cameras through the external device type in AVFoundation. However, this is not supported on iPhones. We are currently exploring feasible ways to enable UVC device support on iPhones. Is MFi certification the only option? If so, is the MFi certification process for USB-C the same as it was for Lightning? Does it still require purchasing an MFi chip and manufacturing specially designed USB-C cables?
2
0
96
6d
BLE iOS in background (app collapsed)
Hello. In my app, I need to implement the following mechanism: I need to collect data from nearby Bluetooth devices, process them, and send this information to the server at short intervals, including when the app is minimized. Is this possible on iOS? BGProcessingTask has restrictions related to battery saving policies and does not guarantee task execution at specific intervals. Additionally, there is a limitation on background task execution, which can occur no more frequently than every 15 minutes. However, some apps, such as Google Maps, work in the background and update geolocation data. Could you suggest a solution for this task? Thanks for any help on this topic
2
0
351
Jan ’25
MFi - ATS iAP2 Session Test Crash
We just updated our ATS to the latest 8.3.0 version and tried to run the iAP2 Session Test via BPA100 Bluetooth Analyzer and we are experiencing this EXC_BAD_INSTRUCTION. This same test still seems to work on ATS version 6. Please advise. Process: ATS [1782] Path: /private/var/folders/*/ATS.app/Contents/MacOS/ATS Identifier: com.apple.ATSMacApp Version: 8.3.0 (1826) Build Info: ATSMacApp-1826000000000000~2 (1A613) Code Type: X86-64 (Native) Parent Process: launchd [1] User ID: 501 Date/Time: 2025-01-27 11:05:21.1334 -0800 OS Version: macOS 15.2 (24C101) Report Version: 12 Bridge OS Version: 9.2 (22P2093) Anonymous UUID: 098E2BB5-CB98-CA1C-CEFE-188AF6EFE8CF Time Awake Since Boot: 9700 seconds System Integrity Protection: enabled Crashed Thread: 2 com.apple.ATSMacApp.FrontlineFrameworkInterface Exception Type: EXC_BAD_INSTRUCTION (SIGILL) Exception Codes: 0x0000000000000001, 0x0000000000000000 Termination Reason: Namespace SIGNAL, Code 4 Illegal instruction: 4 Terminating Process: exc handler [1782]
1
0
367
1w
Support for attachments in Message Access Profile
We are using an application that implements Handsfree Profile and Message Access Profile to retrieve and send SMS and MMS to and from an iPhone over Bluetooth. We are trying to retrieve Attachments by specifying GetMessage with the attachment Parameter set to 1, but we are not getting the attachments from the iPhone. Does iOS support sending attachments over Message Access Profile? Or do plan to support it in the near future?
2
0
373
Jan ’25
AccessorySetupKit - Accessory not found on some iPhones
Hi there, we're developing a Bluetooth LE device and are using the AccessorySetupKit to connect the device to our iOS application. We are a registered member of the Bluetooth SIG and are advertising our company id over BLE. Setting up the device works on most iPhones we've tested with, but not all. Here's an example of some of the devices we've tested: iPhone 12 mini: Not working, tried both iOS 18.1.1 and 18.1.1 iPhone 13 mini: Working, iOS 18.1.1 iPhone 15: Not working, iOS 18.1.1 iPhone 15: Works now, didn't work a few weeks ago iPhone 15 Pro: Works iPhone 16 Pro: Works Looking through the logs of the iPhone 12 mini while scanning I see some things that might be related in the logs (I've removed potentially identifying data). It seems to me that it's detecting the device, but not showing it in the UI: error 11:43:54.792877+0100 bluetoothd canSessionScanForMFGRData <our company ID> <private> there:1 default 11:43:54.795685+0100 deviceaccessd ### appBundleHasASKEnabled <our app bundle> supports Bluetooth default 11:43:54.795730+0100 deviceaccessd ### _reportDiscoveredBTDevice DADevice: ID <removed ID>, name '<ASPickerDisplayItem.name>', btID <removed ID>, flags AccessorySetup, type Hi-Fi Speaker <CBPeripheral: 0x4b8164540, identifier = <removed ID>, name = (null), mtu = 23, state = disconnected> has no bluetooth name We get no callbacks while the picker UI is displayed. Opening the picker on another device at the same time immediately shows our accessory. This seems like a bug in the AccessorySetupKit too me, but I'm not sure. Could we be doing something wrong?
5
0
576
3w
Apple CarPlay not working in Range Rover velar
After buying iPhone 16 pro max I’ve had glitches with many things, including carplay, eventually it stopped working altogether. Now it says charging but wont connect to carplay. Ive downloaded the new 18.1.1 reset my velar to factory infotainment, bought new cables, restarted the car, forget car etc. Nothing helps- this se ems to be a theme- including keyboard glitches? I NEED CarPlay as I travel often!! Please fix this- or give me some ideas on how I can!
0
0
519
Dec ’24
Horizontal and Vertical Accuracy for CoreLocation
We’re implementing a feature in our app that allows a certified MFi GPS device to act as the default location source for user positioning, replacing the internal GPS when connected. However, we’re noticing a significant discrepancy between the accuracy values reported by iOS and those directly available from the GPS device. Here’s the issue: When the MFi GPS is in use, it transmits standard NMEA messages (GGA, GSA, RMC, etc.) to the iOS device (providing HDOP and VDOP). However, the accuracy reported by iOS for this “location-system” seems to be less precise than what the GPS device itself reports. For example, here are the readings we observe: Location from iOS device (systemLocation): Position: <+41.4, +1.8> +/- 5.00m (speed 0.05 m/s / course 329.40) Timestamp: 6/11/24, 12:01:50 Central European Standard Time Horizontal Accuracy (from systemLocation): 5.0 meters (16 ft) Vertical Accuracy (from systemLocation): 9.5 meters (31 ft) Location from GPS device directly: Horizontal Accuracy: 9.1 ft Vertical Accuracy: 10.3 ft It’s evident that the accuracy values displayed by iOS differ from the values available from the GPS device, especially in terms of horizontal and vertical accuracy. Question: Is there a known reason for this discrepancy in accuracy values? Is there a way to obtain the GPS device’s native accuracy values in iOS, or is iOS applying additional filtering or adjustments that might explain this difference? If additional filtering is applied can be disabled? Any insights would be greatly appreciated, as accurate location reporting is critical for our app’s functionality.
1
0
555
Nov ’24
I am unable to add my Apple MagSafe Wallet to my iPhone
Exact same issues on my old leather MagSafe wallet, so I brought a new one from the Apple Store ‘blackberry’ colour. Yep that’s a word we don’t hear often in tech anymore. Anyway, I’ve reported it in all versions of iOS 18.1 when in beta and they still exist in iOS 18.2 beta 1. I’ve removed them, restarted phone to no avail unfortunately.
1
0
499
Nov ’24
InputStream and OutputStream from EASession is not ready for use if accessory was connected when app is not launched
Hi everyone. I have an iOS application for work with an MFi-certified device connected to the iPhone via USB-C. When I launch the app and attach the device, I can create an EASession and use the InputStream and OutputStream as usual. But if I attach the device before launching the app I can't use the InputStream and OutputStream, because the hasBytesAvailable and hasSpaceAvailable properties are always false. The NSStreamEventHasBytesAvailable and NSStreamEventHasSpaceAvailable events will never be triggered. After I re-attach the device, the streams open fine and I can interact with the device. What can be wrong with the case of attaching the device before the app launches?
1
0
566
Nov ’24
Battery Displays for Custom Hardware
I am having difficulty figuring out two indicators for a custom piece of battery hardware. Firstly, on the home screen, scrolling all the way to the left in the widget screen, you can see the battery for connected wireless devices, electronic pencils, etc. Additionally, when you use Apple battery packs, you can see the battery for it on the top right of your phone I am wondering where I should look to see how I could integrate both of these. I have searched the documentation for a while, and I am having a hard time knowing where to start. If anyone can point me to something, it would be very appreciated. Thank you!
0
0
480
Oct ’24
EASession return nil on iOS18
On iOS 18.x when try to create EASession we get nil, but on iOS 17.x everything works. We have app which use USB cable for connecting external accessories. Scenario is when we have fresh instal, connecting with accessory work fine, EASession is created, streams are opened. When we unplug USB, we close streams, remove any reference to session and accessory, remove accessory delegate. When plug it again, creating EASession is returning nil. Only after restarting iPhone, we can create new EASession with appropriate protocol and accessory. Every next attempt without reseting iPhone is failing. Logs from accessory is following: 00:05:51.811000 : onUSBDeviceFound(pDevice=0xffc818)) iPhone USB device already in the device list w/id=1 -> update status now[21;1H 00:05:51.830000 : setConnectionStatus(status=connected) [devId=1] state updated -> forward[21;1H Capabilities indicate HostMode possibility => role switch is triggered 00:05:52.848000 : updateDIPODeviceConnections() iPhoneUSB w/caps=5 (=CarPlay or HostMode), deviceTag=2 in Device mode -> request role switch[21;1H Role switch seems to be successful 00:05:54.914000 : setSwitching('stable') changed[21;1H 00:05:54.915000 : updateDIPODeviceConnections() iPhoneUSB w/caps=2, id=1, deviceTag=2 and native transport -> request app launch and call connectUSB[21;1H 00:05:54.967000 : ConnectiAP2(05ac:12a8, s/n='00008101000160921E90801E', writeFD='/dev/ffs/ep3', readFD='/dev/ffs/ep4', hostMode){3}[21;1H Native transport should become available but does not (the following line is not present for failed case. Taken from successful case) 00:05:24.983000 : OnDBusPropChanged_NativeTransport(): deviceId=2, started=1, iAP2iOSAppIdentifier=1, sinkEndpoint=3, sourceEndpoint=4, TransactionID=1 EAP Start event not received (trace line from success try) 00:05:25.057000 : EAPSessionStart(ctx=0x74e0b800){2} called[21;1H Is there any braking change on iOS 18 considering EASession? Also what is strange is that it works on fresh instal/restart iPhone, but not working on second attempt?
11
7
910
3w
EAAccessoryManager crashes
Hi, The company produces MFI-certified devices. A lot of users are affected. it happens when users are in the background. The crash happens in NSArray; it looks like the array is out of bounds to which EAAccessoryManager tries to access. The only assumption I have is that something is wrong with Threads. Maybe we are blocking a Thread somewhere, or EAAccessory should always work on the Main Thread but we switch streams to another thread. It is hard to believe that Apple could have such a simple bug. If it were Apple's bug, other companies who produce MFI devices could also experience the identical bug, but I don't see anyone raising the identical issue. The issues don't have a relation to iOS versions; it happens for us from iOS 13 till iOS 18. Thanks in advance, Eugene.
7
0
755
Oct ’24
Bluetooth pairing problems (iPhone 16 Pro with Sony WH-1000XM5)
Upgraded from an iPhone 13 Pro Max to an iPhone 16 Pro a week ago. Both running on latest iOS 18 and data transfer was done manually Bluetooth pairing seems to be facing a problem. I have been trying to pair up with my Sony WH-1000XM5 but somehow the phone fails to detect the headphones on Bluetooth. Today I tested with my spare earbuds Bose Soundsport Wireless and faced exactly the same problem. Strange Carplay and my home JVC home player don‘t have this problem
3
1
2.5k
Oct ’24
Unexpected behavior when iPad is unlock and the application goes to Foreground. something happens and the application goes to background and foreground in a small period of time.
I have the our device connected , with Assistive Touch enabled and the application running in the foreground. At this point, I place the screen on standby and leave the device unattended for 10 minutes. After this period, I return, unlock the screen, and observe that our app is still running, and the connection with the device is re-initiated. However, something occurs at this stage that causes the application to briefly switch to the background and then immediately return to the foreground. This behavior leads to system instability. Ideally, once the application is running in the foreground, it should not transition to the background automatically. However, it seems to be doing so for a short duration—momentarily switching from the foreground to the background, then back to the foreground—which is causing the observed instability. OK, the iPad screen is unlocked AND App Appears. 2024-10-01 13:15:55 LOG: APP > Scene did become active 2024-10-01 13:15:55 LOG: APP > Init device Suddenly the application goes to background by itself?!?!?! 2024-10-01 13:15:55 LOG: APP > Scene will change from Foreground to Background 2024-10-01 13:15:55 LOG: APP > Scene changed to Background 2024-10-01 13:15:56 LOG: APP > Scene Will Enter to Foreground 2024-10-01 13:15:56 LOG: APP > Nib Name previous load : Home Other example OK, the iPad screen is unlocked AND App Appears. 2024-10-01 11:23:55 LOG: APP > Scene Will Enter to Foreground 2024-10-01 11:23:56 LOG: APP > Scene did become active 2024-10-01 11:23:56 LOG: APP > Init connection Suddenly the application goes to background by itself?!?!?! 2024-10-01 11:23:56 LOG: APP > Scene will change from Foreground to Background 2024-10-01 11:23:56 LOG: APP > Scene changed to Background 2024-10-01 11:23:56 LOG: APP > Scene Will Enter to Foreground 2024-10-01 11:23:56 LOG: APP > Scene did become active 2024-10-01 11:23:56 LOG: APP > Scene will change from Foreground to Background 2024-10-01 11:23:56 LOG: APP > Scene changed to Background 2024-10-01 11:23:56 LOG: APP > Scene Will Enter to Foreground 2024-10-01 11:23:56 LOG: APP > Nib Name previous load : Home FA FB15345245 this is happening under iPadOS18.1 beta5 and iPad12.9" 6th gen. Would you mind taking a look at this issue ?
2
0
591
Oct ’24