EASession initWithAccessory:forProtocol: returns nil on iOS 27 with MFi-certified USB accessory (works on iOS 26)

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:

  1. Connect MFi-certified USB accessory to iOS 27 device via Lightning/USB-C
  2. Observe that EAAccessory is detected: connected=YES, connectionID=34951162
  3. Confirm protocol string is in accessory.protocolStrings
  4. Call [[EASession alloc] initWithAccessory:accessory forProtocol:@"*******"]
  5. 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
EASession initWithAccessory:forProtocol: returns nil on iOS 27 with MFi-certified USB accessory (works on iOS 26)
 
 
Q