On a Mac, MacOS 10.13 (High Sierra) or newer may be required

Once you have the Bluefruit nRF52 BSP setup on your system, you need to select the appropriate board, which will determine the compiler and expose some new menus options:

1. Select the Board Target

  • Go to the Tools menu
  • Select Tools > Board > Adafruit Bluefruit nRF52 Feather for nRF52832-based boards
  • Select Tools > Board > Adafruit Bluefruit nRF52840 Feather Express for nRF52840-based boards
  • Select Tools > Board > Adafruit CLUE for the Adafruit CLUE

2. Select the USB CDC Serial Port

Finally, you need to set the serial port used by Serial Monitor and the serial bootloader:

  • Go to Tools > Port and select the appropriate device

2.1 Download & Install CP2104 Driver (nRF52832)

For Feather nRF52832 If you don't see the serial ports device listed, you may need to install the SiLabs CP2104 driver on your system.

On MacOS If you see this dialog message while installing driver

On MacOS If you see this dialog message while installing driver, System Extension Blocked


And cannot find the serial port of CP2104, it is highly possible that driver is blocked.

To enable it go to System Preferences -> Security & Privacy and click allow if you see Silab in the developer name.

After installing cp210x driver, If feather nRF52832 appear as 2 serial ports on your macos. e.g "/dev/cu.SLAB_USBtoUART" and "/dev/cu.usbserial-1234", the correct port to use is "/dev/cu.usbserial-1234"

2.2 Download & Install Adafruit Driver (nRF52840 Windows)

For Feather nRF52840, If you are using Windows, you will need to follows Windows Driver Installation to download and install driver.

3. Update the bootloader (nRF52832 Feather Only)

To keep up with Nordic's SoftDevice advances, you will likely need to update your bootloader

Follow this link for instructions on how to do that

This step is only necessary on the nRF52832-based devices, NOT on the newer nRF52840 Feather Express.

4. Run a Test Sketch

At this point, you should be able to run a test sketch from the Examples folder, or just flash the following blinky code from the Arduino IDE:

#include <Adafruit_TinyUSB.h> is required when using with nRF52840 based board for Serial port implementation.
#if defined(USE_TINYUSB)
#include <Adafruit_TinyUSB.h> // for Serial

void setup() {

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second

This will blink the red LED beside the USB port on the Feather, or the red LED labeled "LED" by the corner of the USB connector on the CLUE.

Arduino sketch failed to compile with error: ld returned 1 exit status

If the sketch fails to compile and reports an error message like this:

collect2.exe: error: ld returned 1 exit status

exit status 1

Compilation error: exit status 1

Look in the rest of the compile message output (turn on verbose output if needed) and check if the actual error(s) look something like:

undefined reference to `Adafruit_USBD_CDC::begin(unsigned long)

undefined reference to `Adafruit_USBD_CDC::write(unsigned char const*, unsigned int)

If so, the required #include is missing. See the example code above and add the required lines to your sketch.

If Arduino failed to upload sketch to the Feather

If you get this error:

Timed out waiting for acknowledgement from device.

Failed to upgrade target. Error is: No data received on serial port. Not able to proceed.
Traceback (most recent call last):
  File "nordicsemi\__main__.py", line 294, in serial
  File "nordicsemi\dfu\dfu.py", line 235, in dfu_send_images
  File "nordicsemi\dfu\dfu.py", line 203, in _dfu_send_image
  File "nordicsemi\dfu\dfu_transport_serial.py", line 155, in send_init_packet
  File "nordicsemi\dfu\dfu_transport_serial.py", line 243, in send_packet
  File "nordicsemi\dfu\dfu_transport_serial.py", line 282, in get_ack_nr
nordicsemi.exceptions.NordicSemiException: No data received on serial port. Not able to proceed.

This is probably caused by the bootloader version mismatched on your Feather and installed BSP. Due to the difference in flash layout (more details) and Softdevice API (which is bundled with bootloader), sketch built with selected bootloader can only upload to board having the same version. In short, you need to upgrade/burn bootloader to match on your Feather, follow above Update The Bootloader guide

It only has to be done once to update your Feather

On Linux I'm getting 'arm-none-eabi-g++: no such file or directory', even though 'arm-none-eabi-g++' exists in the path specified. What should I do?

This is probably caused by a conflict between 32-bit and 64-bit versions of the compiler, libc and the IDE. The compiler uses 32-bit binaries, so you also need to have a 32-bit version of libc installed on your system (details). Try running the following commands from the command line to resolve this:

sudo dpkg --add-architecture i386

sudo apt-get update

sudo apt-get install libc6:i386

This guide was first published on Feb 08, 2020. It was last updated on Jul 24, 2024.

This page (Arduino Board Testing) was last updated on Mar 08, 2024.

Text editor powered by tinymce.