Summary:
EASession initialization consistently returns nil on iOS 27 when connecting to a MFi-certified USB accessory. The same code and accessory work correctly on iOS 26. Apple's official EADemo sample code also fails on iOS 27.
Steps to Reproduce:
Connect MFi-certified USB accessory to iOS 27 device via Lightning/USB-C
Observe that EAAccessory is detected: connected=YES, connectionID=34951162
Confirm protocol string is in accessory.protocolStrings
Call [[EASession alloc] initWithAccessory:accessory forProtocol:@"*******"]
EASession returns nil
Expected Results:
EASession should be created successfully, allowing input/output stream configuration. This works correctly on iOS 26 with identical code and accessory.
Actual Results:
EASession returns nil. System log shows:
"[#ExternalAccessory] ERROR - .../EASession.m:-[EASession dealloc] - 212 unable to close session for _accessory=0x1513d3bb0 and sessionID=65536"
Note: sessionID=65536 indicates EASession was partially created but immediately deallocated.
Configuration:
Device: 所有机型
iOS Version: 27.0 beta
Xcode Version: 26.3 (17C529)
Build SDK: iOS 26 SDK
Accessory PPID: cfc
Accessory Firmware: L.B.1
Accessory Hardware: 1.0.1
App: Both our production app and Apple's official EADemo sample code
Info.plist Configuration:
UISupportedExternalAccessoryProtocols includes "*****"
UIBackgroundModes includes "external-accessory"
Device Settings:
Settings > Privacy & Security > Security > Wired Accessories: "Automatically Allow When Unlocked"
Additional Notes:
EAAccessory object is properly created and accessible
Accessory protocol string matches exactly
All MFi certificates present (certSerial: 16 bytes, certData: 608 bytes)
Issue reproduced with Apple's official EADemo sample code, confirming this is not an application-level bug
Issue does NOT occur on iOS 26 with same device and accessory
Regression:
iOS 26: Works correctly
iOS 27: Fails consistently
1
1
582