AccessorySetupKit: Can I use bluetoothNameSubstring be used without bluetoothCompanyIdentifier?

I'm integrating AccessorySetupKit for BLE earbuds discovery and running into an issue with ASDiscoveryDescriptor configuration.

Our earbuds don't have a fixed Bluetooth SIG company identifier. So I'm trying to use bluetoothNameSubstring + bluetoothServiceUUID instead.

However, this combination never discovers any devices. The picker appears but stays empty. As soon as I add a bluetoothCompanyIdentifier, the device is found instantly. I reproduced this with my Bose QC35 II as well, so it's not specific to our hardware.

My configuration:

  • bluetoothServiceUUID: set to our custom UUID
  • bluetoothNameSubstring: set to a substring matching the advertised device name
  • NSAccessorySetupBluetoothServices + NSAccessorySetupBluetoothNames both set in Info.plist
  • supportedOptions: .bluetoothPairingLE
  • iOS 26.3.1, iPhone 11

The documentation doesn't mention that bluetoothCompanyIdentifier is required.

Is bluetoothCompanyIdentifier actually required for BLE discovery? If so, is there a recommended approach for devices that don't have a fixed company identifier?

ASDiscoveryDescriptor documentation does say either bluetoothServiceUUID OR bluetoothCompanyIdentifier is required.

The service UUID needs to be advertised for AccessorySetupKit to detect it. Having it in the GATT table is not enough, if not being advertised.

Otherwise, your bluetoothNameSubstring + bluetoothServiceUUID should be working.

AccessorySetupKit: Can I use bluetoothNameSubstring be used without bluetoothCompanyIdentifier?
 
 
Q