Things have moved several times, google doesn't help. How do I get to the MFi developer tech support site?
External Accessory
RSS for tagCommunicate with accessories connected to a device by the Apple Lightning connector or through Bluetooth using External Accessory.
Posts under External Accessory tag
44 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
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?
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!
In the YouTube video
WWDC24: Meet AccessorySetupKit | Apple
two apps are demonstrated to showcase the functionality of AccessorySetupKit. Does anyone know where I can find the source code for these demo apps?
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.
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.
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?
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!
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?
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.
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
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 ?
My installed CarPlay that my son put in worked flawlessly until I updated to ios18. Now it won’t recognize my phone at all. It’s like CarPlay is dead! So frustrating!! Nothing works, no maps, messages, music, etc. PLEASE fix!! I LOVED my CarPlay!!
Hello.
Is it possible to control the iPhone 16 Camera Control Button via HID (Bluetooth/USB) command?
Thanks
I have a solution where my application should scan the Bluetooth enabled Beacon devices in the foreground, background, locked mode for the iphone.
Currently we have built the project, which is working fine in foreground mode. We have tried exploring multiple options to enable the feature in background and locked mode.
As of now, we have come up with the solution which implements Picture in Picture mode in the application and once the application is minimized. The PIP window opens which solves our problem. But the problem stays with locked mode. The scanning is not working in locked mode.
So can we know how the bluetooth scanning will work in background and locked mode. Please also mention the alternative solutions to the problem statement if background and locked mode scanning is not possible.
I have attached the project source code for reference.
This project is being built for Google, so it is bit urgent.
Can I expect a quick response to this query?
as part of the iOS 17 apple added Network details capability to the shortcut app
is there any update about the ability of getting the Network details such as RSSI , PHY in iOS 18?
Apple developer support could not answer my question which is the following:
How are Matter developers supposed to test accessory pairing, accessory communication and accessory discovery if the Console logs provided by Apple (iOS, MacOS, iPadOS) are encrypted, incomplete or straight up non-existent.
Current issue is mDNS-SD discovery, pairing and PAKE requests initialisation. Impossible to figure out why X or Y stopped on the Apple Device.
Chip-tool (provided by PROJECT-CHIP) acts 100% differently than iOS (Home) or iPadOS(Home).
Thank you
We are encountering an issue with the MFi modal in our iOS application. Occasionally, when attempting to display the MFi modal, it either loads completely empty or shows the WiFi Network field as empty. This issue seems to occur intermittently.
Hi,
I want to develop an application with service can discover neighbors devices bluetooth in background, this service can run even app was killed.
The scan of bluetooth start every 5 sec as service, and find Bluetooth device and can read data from BLE device.
It's possible with IOS?
any limitations?
Thank you
Regads,
Thuyet
Are there any cases where when connected to a specific Bluetooth device on an iPhone or iPad, the Bluetooth device connected at the same time is frequently disconnected or the app connected via CoreBluetooth is disconnected?
Our app connects to an iPhone or iPad and connects to CoreBluetooth API to perform specific functions or operations.
When a JBL Bluetooth speaker is connected, the connection is automatically disconnected during operation.
When the JBL Bluetooth speaker is disconnected, the Bluetooth connection between our apps is not disconnected.
It does not happen on all iPhones or iPads, but it seems to happen on some devices.
Our app users are experiencing this issue with JBL Bluetooth speakers. So we are trying to replicate this phenomenon with our Bluetooth speaker, but it doesn't work.
Has anyone else experienced something similar?
I am wondering if this phenomenon can occur.