The "Getting started" wiki page for XIAO nRF52840 has invalid / outdated instructions


I recently purchased the XIAO nRF52840 board (the basic version, not Sense) to develop a BLE beacon. However I hit a major roadblock trying to set up the board in Arduino Studio using the instructions in the “Getting started” wiki page for the board.

I was able to upload and run the basic “Blink” example on the board, but when I tried the “Control built-in LED using a smartphone” example on the Bluetooth Usage for XIAO nRF52840 wiki page, I was not able to use the ArduinoBLE library with the board! Here’s the error message I received:

library arduino_410772 claims to run on samd, megaavr, mbed, apollo3, mbed_nano, mbed_portenta, mbed_nicla architecture(s) and may be incompatible with your current board which runs on nrf52 architecture(s).

After spending around 3 hours trying to figure this out, I finally found the solution.

The problem was the follow instruction in Step 3 on the “Getting started” page:

type the keyword "seeed nrf52 " in the search box, select the latest version of Seeed nRF52 Boards , and install it.

The image following this line shows one package with this name - it has version number 2.6.1.

When I did the search, I got two results, the “Seeed nRF52 Boards” package, and the “Seeed nRF52 mbed-enabled Boards” package. The first package’s info mentions it supports “Seeed XIAO nRF52840 Sense” as well as “Seeed XIAO nRF52840”, and it has no version info. The second package does allow you to select the version, with 2.6.1 being available, but the info mentions that it only supports “Seeed XIAO nRF52840 Sense”. I went with the first package because of it mentioning support for the board without Sense.

This was the wrong package and caused this problem.

If you take a closer look at the boards manager json URL for seeeduino boards, you can see that the package listed as “Seeed nRF52 Boards” has architecture listed as “nrf52” which the ArduinoBLE library does not support (also notice it is version 1.0.0):

“name”: “Seeed nRF52 Boards”,
“architecture”: “nrf52”,
“version”: “1.0.0”,

Whereas the package listed as “Seeed nRF52 mbed-enabled Boards” has architecture set to “mbed”, which is indeed supported by ArduinoBLE. Also, this package has version 2.7.2 as well as 2.6.1 available:

“name”: “Seeed nRF52 mbed-enabled Boards”,
“architecture”: “mbed”,
“version”: “2.7.2”,

I got the BLE example to work after removing the “Seeed nRF52 Boards” package, installing the “Seeed nRF52 mbed-enabled Boards” package followed by setting the Board type to “Seeed XIAO BLE - nRF52840” which this package supports (the information in the json for this package seems to imply it does not).

Please update the wiki pages to prevent other developers from running into this issue.

Credit to the following comment in a blog post which pointed me towards the right solution:

Thank you very much for your feedback and detailed description and apologise for any inconvenience you may have experienced. This issue started when we learned that different users would have different requirements for TinyML and BLE, but the R&D department worked on the underlying framework of the code and found that there was indeed no way to use the same version of the on-board files to be compatible with both. Therefore, we had no choice but to release the XIAO nrf52840 and XIAO nrf52840 mbed packages in the Development Board Manager.
We also have plans to improve the XIAO nrf52840 Wiki by separating the different on-board packages and giving our users an overview of how they are used and which one is suitable for which package.
Finally, we apologise again for any inconvenience caused by our untimely work.

1 Like

No worries at all! Just wanted to let you know so that other people don’t experience the same problem. Also, in case they do, they might be able to Google the error and hopefully this post shows up :blush:

1 Like