Nordic offers two production SDKs for its wireless SoCs โ and they are architecturally very different. nRF5 SDK is the mature bare-metal path; nRF Connect SDK is the Zephyr-based strategic platform. The right answer for your product depends on lifecycle stage, target hardware, and team priorities โ not on which SDK gets better marketing. This guide gives you the honest engineering view, informed by shipped products on both stacks.


Nordic's original production SDK, in active use since the nRF51 era. It is built for bare-metal development on nRF51 and nRF52 SoCs, using Nordic's SoftDevice architecture โ a precompiled BLE (or ANT) stack that runs at a higher ARM exception priority than your application, managing radio timing without direct application involvement. Hardware configuration lives in per-project C headers (sdk_config.h, custom_board.h). The build system is GCC Makefiles or Segger Embedded Studio project files.
nRF5 SDK is mature and widely deployed. There is a large body of reference code, forum history, and application notes across the embedded industry. Nordic continues to issue bug fixes, but new features are no longer being added and new chip support goes exclusively to nRF Connect SDK. It is in maintenance mode โ stable, not evolving.
Nordic's strategic platform for all new development. Built on Zephyr RTOS โ the Linux Foundation's embedded OS โ with Nordic's extensions, protocol stacks, and drivers layered on top. Hardware is described in .dts / .overlay devicetree files. Build configuration uses Kconfig (prj.conf). Repository management uses the west tool. The BLE stack is Zephyr's Bluetooth subsystem, which calls into Nordic's own softdevice controller underneath. It supports nRF51, nRF52, nRF53, nRF54, and the nRF7002 Wi-Fi companion IC. Nordic's own documentation is direct: nRF Connect SDK is the recommended SDK for new designs. For the broader RTOS selection question โ when Zephyr is the right choice versus FreeRTOS or bare-metal C โ our embedded RTOS decision guide covers that across all embedded platforms.
| Attribute | nRF5 SDK | nRF Connect SDK |
|---|---|---|
| Architecture | Bare-metal + SoftDevice | Zephyr RTOS |
| Build system | GCC Makefiles / Segger SES | west + CMake + Kconfig |
| Hardware config | C header defines | Devicetree (.dts / .overlay) |
| Feature config | sdk_config.h | Kconfig (prj.conf) |
| nRF51 / nRF52 | Yes | Yes |
| nRF53 / nRF54 | No meaningful support | Yes (required for nRF53) |
| Wi-Fi (nRF7002) | No | Yes |
| BLE + Thread + Matter | Limited | Yes |
| Nordic's strategic focus | Maintenance only | Active development |
| Learning curve (from bare-metal) | Lower | Higher (Zephyr + west + DTS) |
Fig. 1 โ SDK stack architecture comparison. The key differences: nRF Connect SDK's multi-protocol support (L3), board-agnostic HAL via devicetree (L2), and broader hardware support including nRF53 / nRF54 multi-core parts (L1).
In nRF5 SDK, hardware configuration lives in C code. Your UART peripheral assignment, GPIO pin numbers, interrupt priorities, and SPI bus configuration are defined in sdk_config.h or directly in application structs. This works for a single board with a fixed schematic. The problem surfaces when you need a hardware variant โ a new PCB revision with different pin assignments, or a second product in the same family targeting a slightly different SoC. You end up editing C code, hunting across files for hardcoded peripheral definitions.
Zephyr's devicetree separates hardware description from application logic entirely. A .dts file describes your board: "UART0 is on pin P0.06 (TX) and P0.08 (RX), at 115200 baud; SPI1 has chip select on P0.17; the RGB LED is on GPIO P0.22." Your application code uses symbolic references โ DT_ALIAS(uart0), DEVICE_DT_GET(DT_NODELABEL(spi1)) โ and the build system resolves these to the correct peripheral instances and pin assignments at compile time. No pin number appears in application code.
The practical payoff is board portability. When you fork the firmware for a hardware revision with different pin assignments, you write a .overlay file โ typically a dozen lines โ rather than hunting through application code. When you move from nRF52832 to nRF52840 for additional GPIOs, the SoC-level DTS changes and your overlay adapts; the application layer is largely untouched. When you share a driver across three products with different board layouts, the driver is written once to the Zephyr API and each board gets its own devicetree.
compatible string and binding system, and the way overlays compose with board and SoC base files are not intuitive coming from a header-based background. Most engineers need focused hands-on time before it clicks. The overhead pays off as soon as you have more than one board variant to maintain โ and compounds further across a product family.nRF5 SDK uses sdk_config.h โ a large C header with hundreds of #define CONFIG_SOMETHING 1 flags. Enable a feature by setting its flag; disable by clearing it. This works, but it scales poorly. The header grows large. Merge conflicts in a shared sdk_config.h are common on teams with more than one engineer. There is no build-system-level enforcement that your configuration is consistent โ a missing or mismatched define often surfaces as a runtime failure rather than a build error.
nRF Connect SDK inherits Zephyr's Kconfig system โ the same configuration infrastructure used by the Linux kernel. Each software component declares its configuration options in a Kconfig file with explicit dependency declarations: depends on BT_GATT ensures you cannot enable GATT without Bluetooth, and the build system enforces this. Your project configuration lives in prj.conf, a clean version-controlled file that contains only the options you have set. Board-level configuration lives separately in board.conf.
west build -t menuconfig opens an interactive menu browser โ navigate the full configuration tree, view dependencies, and toggle subsystems without reading source files. This is genuinely useful for onboarding engineers who need to understand which Kconfig flags control which features. The dependency tracking is the key improvement over sdk_config.h: Kconfig catches configuration errors at build time rather than at runtime.
nRF Connect SDK uses Zephyr's Hardware Abstraction Layer with Nordic's nrfx drivers underneath. Your application calls Zephyr's generic peripheral APIs โ gpio_pin_set(), spi_transceive(), i2c_write() โ and Zephyr resolves these to the correct nrfx calls for the target SoC, as described by the devicetree. In nRF5 SDK you call nrfx directly: nrfx_spi_init(), nrfx_uart_tx() โ with hardware-specific parameters embedded in the call.
The Zephyr HAL benefit is real for product families. If you maintain three hardware variants of the same product, peripheral configuration differences live in devicetree overlays. Driver code is shared without modification. For a single one-off product that will never change hardware, the HAL abstraction adds learning overhead without a direct return โ the abstraction is overhead until it is not. The benefit compounds when you are managing a product line or planning hardware revisions.
Before the SDK choice comes the chip choice. If you are still evaluating which Nordic SoC to build on, our nRF52 vs nRF53 vs nRF54L hardware comparison covers power budget, protocol support, and cost โ with an interactive flowchart.
The nRF5340 โ Nordic's first nRF53 series device โ has two ARM Cortex-M33 cores: an application core running at 128 MHz for user application logic, and a network core running at 64 MHz dedicated to radio protocol execution. This architecture isolates radio timing from application scheduling, eliminating a class of BLE latency and timing conflicts that can affect single-core designs running both stacks on the same core. The nRF54 family (nRF54L15, nRF54H20) extends multi-core further.
nRF5 SDK was designed for single-core nRF51 and nRF52 parts. It does not support the nRF5340's dual-core architecture in any meaningful way. If you are targeting nRF53 or nRF54 hardware, the SDK choice is effectively made: nRF Connect SDK is the only supported path.
Zephyr handles multi-core natively. On the nRF5340, you build separate firmware images for the application core (nrf5340_dk_nrf5340_cpuapp) and the network core (nrf5340_dk_nrf5340_cpunet). Inter-processor communication uses the IPC service โ built on Zephyr's OpenAMP/RPMsg framework โ allowing the two cores to exchange messages, share memory regions, and synchronise state without you implementing IPC primitives from scratch. The nRF Connect SDK includes pre-built network core images for BLE, Bluetooth LE Audio, Thread, and other radio stacks, so most projects only need to build and customise the application core image.
For teams evaluating the nRF5340 for a new design: the app-core / network-core split affects your entire firmware architecture. Budget time to understand IPC messaging and the separate build image model before committing to nRF5340 in production. The investment is worth it for the architectural separation โ but it is a real learning cost that should be scoped into your project timeline.
We have shipped production firmware on both nRF5 SDK and nRF Connect SDK. Three projects are relevant here โ two SDKs, three shipped products.
A BLE-based golf tracking system built around a custom circular PCB engineered for a golf ball form factor, using an nRF52840 built on nRF5 SDK. At the time this product was developed, nRF5 SDK was the proven production path for nRF52840 BLE peripheral devices โ mature SoftDevice BLE stack, well-documented advertising and connection management API, large reference codebase. It shipped as a complete, working product. The power engineering behind it โ 3.8 ยตA sleep current, interrupt-driven wake, and BLE duty cycling โ is documented in our nRF52840 power optimization guide.
nRF52840nRF5 SDKBLECustom PCBA motion-triggered haptic feedback device built directly on nRF Connect SDK and Zephyr. The Zephyr threading model โ separating the sensor sampling thread from the haptic output thread โ was the right fit for this application's real-time requirements. PWM driver configuration via devicetree kept the hardware binding clean and the application layer portable. Shipped on nRF Connect SDK from the start. BLE command interfaces of this kind โ write-without-response commands with notify-based acknowledgement โ are covered in our custom GATT services guide for Nordic platforms.
nRF Connect SDKZephyrHapticsMotion SensingA wearable Nordic device for sports performance tracking, built on nRF Connect SDK. The Kconfig system made managing sensor driver dependencies, BLE service stack configuration, and power management flags meaningfully cleaner than sdk_config.h would have been at this complexity level. Shipped on nRF Connect SDK from the start.
If you are weighing a migration from nRF5 SDK to nRF Connect SDK for an existing product, the following is general engineering guidance for teams thinking through the decision โ informed by our experience with both stacks, not a personal migration story.
In this case you have no choice โ nRF Connect SDK is the only supported path. The migration is really a greenfield build on new hardware rather than a port.
BLE + Thread + Matter, or Wi-Fi via the nRF7002 companion IC. For protocol combinations that cross Nordic's product lines, nRF Connect SDK is the only supported option. See also our Wi-Fi vs BLE vs LoRa protocol comparison for guidance on the wireless selection decision before committing to a stack.
Security patches, protocol updates, and new regulatory certifications will come to nRF Connect SDK first. For products with a multi-year service life in regulated markets, this matters.
If the product meets its requirements and the nRF5 SDK version is sufficient, migration is significant cost and risk with limited upside. Rewriting working production firmware rarely pays off unless there is an architectural reason.
Absorbing the Zephyr learning curve under deadline pressure is a reliable way to miss both the deadline and the quality bar. Use the SDK your team already knows if the timeline cannot absorb ramp-up.
If the product is straightforward, protocol requirements are met by nRF5 SDK, and there are no hardware variants to maintain, the nRF Connect SDK overhead exceeds any benefit.
Migration is not a porting exercise โ it is rebuilding on a different architecture. Hardware configuration moves from C headers to devicetree. The build system changes from GCC Makefiles or Segger Embedded Studio to west + CMake + Kconfig. Application architecture changes from a bare-metal event loop to Zephyr threads, work queues, and the Zephyr kernel API. BLE application code changes from the SoftDevice API to Zephyr's Bluetooth API โ different call signatures and connection management model, even though Nordic's softdevice controller is still underneath.
For new production designs โ especially anything targeting nRF53 (nRF5340) or nRF54 hardware โ nRF Connect SDK with Zephyr is the right choice. It is Nordic's recommended SDK, it is where all new chip support and active development live, and the architectural investments (devicetree, Kconfig, multi-core IPC) compound in value over a product's lifecycle. If you are starting a new Nordic design today, nRF Connect SDK is the correct default.
For existing nRF5 SDK products in stable volume production, the calculation is different. If the product meets its requirements, the nRF5 SDK version covers your needs, and there is no architectural reason to migrate โ no nRF53/54 target, no multi-protocol requirement beyond what nRF5 SDK can support โ then leaving it on nRF5 SDK is not a mistake. It is the pragmatic call. Migration has real engineering cost and real risk; it needs a real reason.
The honest framing: nRF Connect SDK is the future of Nordic development. nRF5 SDK can still ship real products today. Know which situation your project is actually in.
We have shipped production firmware on both nRF5 SDK and nRF Connect SDK. That is not a documentation claim โ it is experience with the actual friction points of each stack under production conditions. The Golf Ball project taught us where nRF5 SDK's BLE stack is solid and where it constrains you. The haptic and wearable projects taught us where Zephyr's threading model and Kconfig genuinely win over the bare-metal approach. Both experiences inform how we advise clients on the SDK decision.
If you are evaluating the SDK choice for a new Nordic design โ or weighing whether a migration makes sense for an existing product โ our nRF Connect SDK developers can work through the specifics: hardware requirements, protocol stack, timeline, and team background. We give you an honest recommendation, not a default to whatever is newest.
For teams already committed to nRF Connect SDK, we can accelerate the Zephyr ramp-up. For teams continuing on nRF5 SDK, we support that work too. We are nRF firmware developers who work across the full Nordic stack.
Production nRF5 SDK and nRF Connect SDK experience. BLE, multi-protocol, wearables, and custom PCB design. UK, US, and India.
DigitalMonk has shipped production firmware on both nRF5 SDK and nRF Connect SDK. We can give you an honest assessment of which SDK fits your product โ and support the build either way.
Talk to our Nordic team โ