XIAO BLE (nrf52840) ArduinoBLE.h - unsupported board

I’m trying to use XIAO BLE (nrf52840) as a BLE central device.
Trying to compile a small example I get unsupported board error.

Here is the message:

WARNING: library ArduinoBLE claims to run on samd, megaavr, mbed, apollo3, mbed_nano, mbed_portenta, mbed_nicla, esp32, mbed_giga, renesas, renesas_portenta architecture(s) and may be incompatible with your current board which runs on nrf52 architecture(s).
c:\Users\szabo\OneDrive\Documents\Arduino\libraries\ArduinoBLE\src\utility\HCIUartTransport.cpp:35:2: error: #error “Unsupported board selected!”
35 | #error “Unsupported board selected!”
| ^~~~~
c:\Users\szabo\OneDrive\Documents\Arduino\libraries\ArduinoBLE\src\utility\HCIUartTransport.cpp:101:40: error: ‘SerialHCI’ was not declared in this scope; did you mean ‘Serial’?
101 | HCIUartTransportClass HCIUartTransport(SerialHCI, 912600);
| ^~~~~~~~~
| Serial

exit status 1

Compilation error: exit status 1

The code is really simple (the SCAN scketch from the example set:



This example scans for Bluetooth® Low Energy peripherals and prints out their advertising details:

address, local name, advertised service UUID’s.

The circuit:

  • Arduino MKR WiFi 1010, Arduino Uno WiFi Rev2 board, Arduino Nano 33 IoT,

    Arduino Nano 33 BLE, or Arduino Nano 33 BLE Sense board.

This example code is in the public domain.


#include <ArduinoBLE.h>

void setup() {


while (!Serial);

// begin initialization

if (!BLE.begin()) {

Serial.println("starting Bluetooth® Low Energy module failed!");

while (1);


Serial.println(“Bluetooth® Low Energy Central scan”);

// start scanning for peripheral



void loop() {

// check if a peripheral has been discovered

BLEDevice peripheral = BLE.available();

if (peripheral) {

// discovered a peripheral

Serial.println("Discovered a peripheral");


// print address

Serial.print("Address: ");


// print the local name, if present

if (peripheral.hasLocalName()) {

  Serial.print("Local Name: ");



// print the advertised service UUIDs, if present

if (peripheral.hasAdvertisedServiceUuid()) {

  Serial.print("Service UUIDs: ");

  for (int i = 0; i < peripheral.advertisedServiceUuidCount(); i++) {


    Serial.print(" ");




// print the RSSI

Serial.print("RSSI: ");





To use ArduinoBLE.h, the board service package must be “Seeed nRF52 mbed-enabled Boards”.

Thanks for the quick answer! Yes it compiles - it would work - just I tried to use yesterday the nordic sdk and now arduino senses incorrect bootloader - I have to figure out how to resolve this and I can confirm hopefully afterwards that this resolves my issue. ( I spent soo much time with this BLE on that board - tried bluefruit - scan was OK, but service identification not, tried NimBLEDevice - no successs, afterwards the nordic thread…
Thanks for your hint. I hope I can resolve the bootloader issue…