LTEM · nRF Connect SDK · NRF5 Series · NRF91 · Segger Embedded Studio

Build your customer board on the Zephyr / nRF Connect SDK

This blog is to show to use your own custom board instead of original developer board from zephyr. You don’t need to use any overlay on the zephyr configuration. For example, if you use the zephyr or Nordic nRF Connect SDK (NCS), you need to check which boards are available by west boards.

Basically you can also refer to the URL (Board Porting Guide).

west boards

Or you can browse two directories to store the boards information.

  1. ncs\v1.5.1\nrf\boards\arm
  2. ncs\v1.5.1\zephyr\boards\arm

In this blog, nrf9160dk_nrf9160 would be used as the example and modify for the customer board (place at the local folder).

For example, there is all the board configuration for nrf9160dk_nrf9160 Development Board.

You can find the CONFIG_BOARD_NRF9160DK_NRF9160 on the configuration file.

How to use the local custom board instead of using original DK board at the NCS / Zephyr

For all the DK boards, they would have some defaults HW configuration which is specified at the *.dts file.

If nRF9160, all the default HW configuration are defined at nrf9160dk_nrf9160_common.dts.

If you use the overlay approach, you need to provide the HW configuration of .overlay. But if you use the local board, you just need to modify *.dts.

Step 1:

Create the local board directory under the working project such as mqtt_simple\boards\arm (copy the nrf9160dk_nrf9160 from ncs\v1.5.1\zephyr\boards\arm)

Step 2:

Duplicate the folder (nrf9160dk_nrf9160) to create the nf9160dk_nrf9160_customer

Step 3:

Rename all the filenames to add *_customer_*.

Step 4:

Rename all the BOARD_NRF9160DK_NRF9160 to BOARD_NRF9160DK_NRF9160_CUSTOMER.

Step 5:

Modify the CMakeLists.txt to add the local board information.


Or When using “-DBOARD_ROOT=<board-root> both absolute and relative paths can be used.

Compilation / Build the custom board

Segger Embedded Studio IDE

Select the local board folder of the nRF9160dk_nrf9160_customer

2. West / Ninja Command line

west build -d build_nrf9160dk_nrf9160_customerns -b nrf9160dk_nrf9160_customerns -p
  • -d build directory folder
  • -b build option of board
  • -p pristine (clear up the previous build folder)

Here are the example folder code of MQTT_sample (download)

Welcome to give any comment.

3 thoughts on “Build your customer board on the Zephyr / nRF Connect SDK

  1. Thanks! I used your guide to define a custom board using a nrf52840 for Zephyr. Got the project to compile, but BLE doesn’t seem to work using the custom board .dts file. (The project compiles, and runs, but I don’t see BLE advertisements!) I don’t see anything in the .dts that should affect BLE… Any suggestions on what to look at?


      1. Thanks. I assume you are referring to zephyr.dts I did check that and see that it correctly reflects the new board .dts (with appropriate peripherals turned on/off and appropriate pin assignments). But BLE doesn’t advertise, even though BLE is initialized and advertisement is enabled (with no error reported). This is the same code as used with nrf52840dk_nrf52840 with an overlay (where BLE works). I’m trying to figure out what is different between the custom .dts and the nrf52840dk_nrf52840 .dts with overlay (is there some peripheral needed for BLE that is turned off?), but they appear to be the same. Or is there some other reference in some other file in the original board folder (that was edited to point to the new board) that shouldn’t have changed?



Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.