Adafruit nRF52 Arduino core: a board support package for Bluefruit boards
Adafruit code for the Nordic nRF52 BLE SoC on Arduino
At a glance
- What is it?
- The Adafruit nRF52 Arduino core is the board support package that lets the Arduino IDE compile, flash and debug Nordic nRF52 BLE SoCs on Adafruit boards, from the CLUE to the Circuit Playground Bluefruit and the Feather and ItsyBitsy nRF52840. It is installed through the Board Manager or cloned for development, and the bootloader tooling is the fiddly part.
- Who is it for?
- The Adafruit nRF52 Arduino core suits a maker who wants to program a Bluefruit board from the Arduino IDE without setting up an ARM toolchain and Nordic SDK by hand, and it suits a vendor who wants the same arrangement for their own nRF52 board. It does not suit a production firmware project, where the Arduino abstraction is the wrong layer, and it is a hobby board package rather than a maintained SDK, with the last push on 2026-05-12.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 165 days ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A board support package, with the board list that matters
The Adafruit nRF52 Arduino core is the Arduino BSP for the Adafruit Bluefruit nRF52 series, and the board list is the first thing to check.
The officially supported boards are the CLUE nRF52840, the Circuit Playground Bluefruit, the Feather nRF52832, the Feather nRF52840 Express, the Feather nRF52840 Sense, the ItsyBitsy nRF52840 Express, the LED Glasses Driver nRF52840, the Metro nRF52840 Express and the Raytac MDBT50Q-RX Dongle.
Two more are included but explicitly not officially supported, the Nordic nRF52840DK PCA10056 and the Particle Xenon. That distinction matters more than it looks: a board in the list is one Adafruit will fix problems on, while an included board is one that happens to work.
The repository layout is the standard Arduino BSP shape. There is a boards.txt and a platform.txt, which are how the IDE learns about the boards and the toolchain settings, a programmers.txt describing the programmers, a cores/ directory with the core implementation, variants/ with the per board pin definitions, a bootloader/ directory, a libraries/ directory for the bundled libraries, a tools/ directory holding the flashing tools, a scripts/ directory, and a keywords.txt for syntax highlighting.
The core is written in C, and it is not written from scratch. The credits section states that it is based on Arduino-nRF5 by Sandeep Mistry, which is in turn based on the Arduino SAMD Core. So the layering runs from the vendor board package down to the Nordic-supported core and then to the Arduino SAMD core, which is where the generic Cortex-M support lives.
The libraries used underneath are named in the credits as well: FreeRTOS as the operating system, LittleFS for the internal file system, and nrfx from Nordic for the peripherals.
Two install paths, and the documentation tells you which to take
The BSP can be installed two ways, and the documentation is unusually direct about the choice.
The recommended route is the Board Manager inside the Arduino IDE. The steps are: install the Arduino IDE, at least version 1.6.12, then in Preferences add https://adafruit.github.io/arduino-board-index/package_adafruit_index.json as an Additional Board Manager URL, restart the IDE, and open the Boards Manager from the Tools and Board menu to install the board package named Adafruit nRF52 by Adafruit. Once that is in place, selecting the Feather nRF52840 Express from the Tools and Board menu updates your system configuration to use the right compiler and settings for the nRF52.
The optional route is a git clone, and it is labelled as being for core development, with the caveat that it is only for people who wish to participate in active development of the codebase via GitHub.
The git route has a specific sequence. You install the BSP via the Board Manager first, to get the compiler and the tools, and then you delete the core folder that the Board Manager installed. The paths differ per operating system, and they are worth writing down because the Arduino 15 packages directory is easy to get wrong. On macOS it is under the Library folder in the Arduino15 packages directory, on Linux it is the dot-prefixed variant in the home directory, and on Windows it is under the local AppData directory.
Then you create a hardware folder named adafruit inside your sketchbook, clone the repository and its submodules into it, and restart the IDE. The clone command and the submodule update are:
git clone https://github.com/adafruit/Adafruit_nRF52_Arduino.git
cd Adafruit_nRF52_Arduino
git submodule update --initThe submodule step is not optional, because the nrfx and the toolchain pieces are submodules.
Flashing over serial needs nrfutil, and Linux installs it separately
Uploading a sketch over the serial port requires a utility that is not part of the standard Arduino toolchain.
adafruit-nrfutil is needed, and it is derived from Nordic's own pc-nrfutil. On Windows and macOS, pre-built executables are bundled in the BSP at the tools/adafruit-nrfutil/ directory, and the documentation says it should work out of the box. Linux users have to install it from PyPI themselves:
$ pip3 install adafruit-nrfutil --userThe asymmetry between platforms is the kind of detail that costs an afternoon if it is not documented, so it is good that it is.
There is also a driver requirement. The Silicon Labs CP2104 USB to serial bridge driver is required for the USB to serial connection when using the Feather nRF52832, so on a machine where the board enumerates as an unknown serial device, that driver is the missing piece rather than a broken board.
The build tooling in the repository matches the same story. The tools/ directory holds the flashing utilities alongside the pre-built nrfutil, and the tools/adafruit-nrfutil path is referenced directly in the documentation, which means the binaries ship with the package rather than being downloaded at install time.
The bootloader is where the risk is, and the docs say so loudly
Updating the bootloader has two documented paths, and the DFU one carries an explicit warning about bricking the device.
The UF2 path works only on the nRF52840 and requires an existing bootloader version of at least 0.4.0. You double tap the reset button to put the board into bootloader mode, at which point a mass storage device named FTHR840BOOT appears. You then download the latest UF2 file for your board, with a name like update-{BOARD}-{version}_nosd.uf2, from the Adafruit nRF52 Bootloader release page, and drag and drop it onto the FTHR840BOOT drive to perform the update, then wait for the board to reset.
The DFU path upgrades to the latest bootloader and softdevice through the serial port from within the Arduino IDE. You select the Feather nRF52840 Express board, then the programmer named Bootloader DFU for Bluefruit nRF52, then Burn Bootloader, and wait about 30 seconds.
The warning is specific and worth repeating. You should close the Serial Monitor before clicking Burn Bootloader, and afterwards you should not close the Arduino IDE, unplug the Feather, launch the Serial Monitor or do anything else that would abort the process, because there is a high chance it will brick the device.
Burning a bootloader to a blank chip is a third path, and it needs external tools on the system path: the Segger JLink software pack and Nordic's nRF5x command line tools, with the check that nrfjprog runs from the terminal. On macOS the documentation adds that you need to create a symlink into the local bin directory, giving the example:
$ ln -s $HOME/prog/nordic/nrfjprog/nrfjprog /usr/local/bin/nrfjprogThe manual nrfjprog sequence for the bootloader hex file from the bin/bootloader directory is three commands:
$ nrfjprog -e -f nrf52
$ nrfjprog --program feather_nrf52832_bootloader.hex -f nrf52
$ nrfjprog --reset -f nrf52The first erases the chip, the second programs the hex file and the third resets. If you want a different bootloader, the project points at the Adafruit nRF52 Bootloader repository.
Where this core is the wrong layer to build on
The honest limitation is about the layer, not the quality.
This is an Arduino board support package, and everything it does is oriented around the Arduino IDE: the Board Manager, the boards menu, the Tools and Programmer menus, the Burn Bootloader button. That is exactly right if your goal is to sketch a Bluetooth device in the Arduino IDE, and it is exactly wrong if your goal is to ship firmware.
The reason is the abstraction itself. The Arduino core gives you a setup and loop, digital and analog I/O mapped to pin names, and a serial port. A production nRF52 product usually needs the Nordic SDK directly, with its own toolchain, its own build system, power management, radio configuration and a certified BLE stack. A BSP that maps a Feather board to Arduino pin names does not give you any of that, and its toolchain settings exist to serve the IDE rather than your own build.
There is also the licensing picture to note. The repository records a custom licence that GitHub cannot classify, with a LICENSE file at the root, so the terms are in that file rather than in a standard permissive licence you can assume. A hardware vendor shipping a commercial product needs to read it.
The maintenance facts are modest. The repository is not archived, the default branch is master, and the last push was on 2026-05-12, five months before the current date. The three most recent releases are 1.7.0 from 2025-05-30, 1.6.1 from 2024-05-17 and 1.6.0 from 2023-11-30, with a changelog.md at the root.
So the sensible framing is that this is a well-supported hobby and prototyping package, current enough to build a new project on, and not a foundation for a product.
Editorial conclusion
The Adafruit nRF52 Arduino core suits a maker who wants to program a Bluefruit board from the Arduino IDE without setting up an ARM toolchain and Nordic SDK by hand, and it suits a vendor who wants the same arrangement for their own nRF52 board. It does not suit a production firmware project, where the Arduino abstraction is the wrong layer, and it is a hobby board package rather than a maintained SDK, with the last push on 2026-05-12. Before installing it, get the Board Manager route working first, because the git route is explicitly for core development, and read the bootloader section carefully, because the documented DFU path warns that aborting it can brick the board.
Frequently asked questions
How do I install the Adafruit nRF52 Arduino core?
The recommended way is through the Arduino IDE Board Manager. Add https://adafruit.github.io/arduino-board-index/package_adafruit_index.json as an Additional Board Manager URL in Preferences, restart the IDE, then install Adafruit nRF52 by Adafruit from the Tools and Board menu. The git route is for core development only.
Which boards does the Adafruit nRF52 core support?
Officially, the CLUE nRF52840, Circuit Playground Bluefruit, Feather nRF52832, Feather nRF52840 Express, Feather nRF52840 Sense, ItsyBitsy nRF52840 Express, LED Glasses Driver nRF52840, Metro nRF52840 Express and the Raytac MDBT50Q-RX Dongle. The Nordic nRF52840DK and the Particle Xenon are included but not officially supported.
What do I need to upload a sketch over the serial port?
The adafruit-nrfutil tool, derived from Nordic pc-nrfutil. Pre-built executables are bundled at tools/adafruit-nrfutil/ for Windows and macOS, and Linux users install it with pip3 install adafruit-nrfutil --user. The Feather nRF52832 also needs the Silicon Labs CP2104 driver.
How do I update the bootloader on a Bluefruit board?
On the nRF52840 with a bootloader of at least 0.4.0, double tap reset, wait for the FTHR840BOOT drive to appear and drop the update UF2 file onto it. Alternatively use Tools and Programmer in the Arduino IDE with the Bootloader DFU option and Burn Bootloader, which the documentation warns can brick the device if interrupted.
What is the Adafruit nRF52 core based on?
It is based on Arduino-nRF5 by Sandeep Mistry, which is in turn based on the Arduino SAMD Core. The libraries used include FreeRTOS as the operating system, LittleFS for the internal file system and nrfx from Nordic for the peripherals.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/adafruit-adafruit-nrf52-arduino)Was this useful?