I can't get the Xiao board appearing in IOS Blutooth settings

Hi there,

Ok Good,
So iOS Bluetooth Settings is not a general BLE scanner. That tutorial works because it uses an Apple-recognized BLE profile (HID) and advertises in a way iOS chooses to surface in Settings. Android and nRF Connect will show “normal” BLE devices all day long; iOS Settings often won’t.

The sketch is BLE-only, but iOS Settings mostly shows “classic-ish” / Apple-recognized stuff

iOS Settings will reliably show:

  • Classic Bluetooth devices
  • BLE HID devices (keyboard/media controller), when advertised correctly
  • A few Apple-friendly categories (audio accessories, etc.)

If your code is just a custom BLE service, it will show in nRF Connect but not in Settings. That’s expected.

  • ESP32 BLE Arduino (Bluedroid) + an HID wrapper library (often what Adafruit tutorials assume)

For a Media Controller visible to iOS Settings, you typically want an ESP32 HID library that emits proper BLE HID descriptors + appearance + flags.

Even if the device is a real HID service, iOS can ignore it in Settings if the advertising payload is “wrong-ish”.
Key bits that help:

  • Include HID service UUID (0x1812) in advertising (not only in scan response)
  • Set Appearance to HID (keyboard/remote control)
  • Set flags properly (LE General Discoverable, BR/EDR not supported)
  • Don’t hide the name in scan response only (some iOS behavior differs)

To appear in Settings, you must advertise as an Apple-recognized profile, typically BLE HID (0x1812), and your advertising must include the HID UUID and correct appearance/flags. the XIAO port probably changed BLE library/stack and lost HID-correct advertising.

Action plan (fastest path)

  1. Confirm the sketch is truly BLE HID (not just “media control over BLE UART”).
  2. Switch to a known-good ESP32 HID library/example:
  • Look for an ESP32-S3 BLE HID Consumer Control example (play/pause/next/prev).
  • Many people use ESP32-BLE-Keyboard / BleKeyboard style libs, but for media keys you need Consumer Control support, not just keyboard.
  1. Ensure the advertising includes 0x1812 and device name in the primary ADV packet.

Post up the code YOU are trying, Use the code tags above" </> " We can look and be certain.

HTH
GL :slight_smile: PJ :v:

FYI,

NimBleLib works well I see and I have used it with great success for multiple BLE concurrent connections. works very well with Xiao ESP32S3 There is a demo with code on here also.

1 Like