Air Quality WingAir Quality WingFeathering for Air Quality Monitoring
nRF9160 FeathernRF9160 FeatherFeather using nRF9160 to connect via LTE CAT M1 or CAT NB1.

Introduction to the nRF9160 Feather

The nRF9160 Feather by Jared Wolff (aka Circuit Dojo LLC) is an electronics development board. It features a Nordic Semiconductor nRF9160-SICA part. This part is capable of both CAT M1 LTE and NB-IoT for communication with the outside world. It's compatible primarily with Zephyr via the nRF Connect SDK. Other toolchains and languages coming soon to a Github repository near you.

Air Quality Wing Board

Glamour Shots

nRF9160 Feather with OSHWA nRf9160 Feather Trimmed nRf9160 Feather Back



This board can be powered several ways. The most popular way to power Feather boards is by using the USB port. This board is no exception. It works well across both USB and LiPoly batteries.

The board is designed from the ground up to be power efficient at the most used power state: standby. That's right, if you're developing something that's battery powered, your most used state will usually be standby mode. As of this writing the estimated current draw in this state should be about 2µA. That's approximately 8.5 years on a 150mAH cell!

Speaking of power, this board also has a fully fledged DC/DC Buck Boost. That whether your input voltage is 5.5 or 2.8V you'll get a nice stable 3.3V at the output.

This board also sports some external flash for storing your application data. Use it with the built in support for LittleFS in Zephyr. Or, use one of your choice! What ever tickles your fancy.

Finally, but not least, the nRF9160. I've been watching this part very carefully since the CEO had it locked in a mysterious black case years back. It's here and it's real and the module is half the price of other modules. I won't bore you with all the technical details. (Technical details get you excited? Go here.) Needless to say, it's awesome.


I'll be launching in collaboration with the awesome folks at and GroupGets. We're all very excited to bring these boards to you!

If you want real-time updates, sign up here and i'll stay in touch. I can't wait to share more with you!

Specifications and Requirements

Specs photo

Technical Details

  • Nordic nRF9160*
    • Microcontroller
      • ARM Cortex M33
      • 1MB Flash
      • 256kB RAM
      • ARM® TrustZone®
      • ARM® Cryptocell 310
      • Up to 4x SPI, I2C and UART with Easy DMA
      • I2S w/ EasyDMA
      • 4x PWM with EasyDMA
      • 12bit SADC with EasyDMA
      • 2x RTC
      • PPI (Programmable peripheral interconnect) interface
    • Radio
      • Transceiver and baseband
      • 3GPP LTE release 13 Category M1 and NB1 compliant
      • 3GPP release 14 NB2 compliant
      • GPS receiver (GPS L1 C/A supported) - Active antenna only.
      • RF Transceiver for global coverage supporting bands:
        • Cat-M1: B1, B2, B3, B4, B5, B8, B12, B13, B14, B17, B18, B19, B20, B25, B26, B28, B66
        • Cat-NB1/NB2: B1, B2, B3, B4, B5, B8, B12, B13, B17, B18, B20, B25, B26, B28, B66
      • Supports 4FF Nano SIM
  • Micro USB connection for USB-to-Serial and DFU
  • Pre-programmed MCUBoot bootloader
  • External NOR Flash by Winbond
    • 2MB 4MB of space (Upgraded for all boards as of August 2, 2020!)
    • Max bus speed of 133MHz
    • Standard SPI
  • Power supply
    • 3.3V Buck/Boost up to 0.9A of current draw
    • Operating range 2.8 to 5.5V
    • External LiPoly battery connection (JST SPH type)
    • LiPoly set to 300mA with indication
  • Programmer
    • Capable of interfacing with Jlink and CMSIS-DAP based programmers
    • Use with a Tag Connect TC2030-CTX-NL over Serial Wire Debug (SWD)
  • Low Power RTC on board for time keeping and as a low power wakeup source.
  • User I/O
    • Standard feather form factor GPIOs (0.1" pitch)
    • 2x buttons (1 Reset, 1 General Purpose)
    • 1x Blue LED connected to D7
  • Antenna connections:
    • 1x U.FL for LTE with matching network
    • 1x U.FL for active GPS antennas
  • Feather form factor
    • 50.8mm x 22.86mm (2" x 0.9")

* nRF9160 tech specs provided from the nRF9160 Product Specification


Here are the elctrical specifications for the nRF9160 Feather. Most of the specifications here are based on the nRF9160 Product Specification. You can get the latest version of the nRF9160 Product Specification here. All previous versions can be found here.

Board Supply

  • Output voltage: 3.3V ± 0.3V
  • Max output current: 800mA
  • Off current w/ Low Power RTC: < 3µA

Pin Ratings (MD/A0-A5/D0-D8/TX/RX/CIPO/COPI/SCK/RST)

  • Max input voltage: 3.6V

Enable Pin

  • Max input voltage: 8V¹

¹Enable pin is active low.

External Power Supply

The nRF9160 Feather can be powered via battery or USB. See below for the specifics for each power source

USB Requirements

  • Operating range: 5V ± 0.2V
  • Current requirements: >500mA

Battery Requirements

  • Battery type: LiPoly
  • Operating range: 2.8-5.5V
  • Current/power rating: Able to support at least 2W of power
  • Battery capacity: > 300mAH²
  • Charging current: 294mA ± 10%

²Batteries below this capacity are not recommended nor supported.

GPS Antenna

GPS Antenna

The U.FL port on the nRf9160 Feather is to be used with an active GPS antenna only.

  • Antenna supply voltage: 3.3V ± 0.3V
  • Antenna current rating: 15mA

The port works with most U.FL based active antenna parts. The nRF9160 Feather has been tested and verified with the following parts:

Part NumberManufacturererDatasheetNotes
ACTPAT182-01-IPInventek SystemsLinkOffered w/ GroupGets

Cellular Antenna

The nRF9160 Feather has been tested with these approved antennas. They're chosen specifically to match the FCC requirements as indicated here.

Part NumberManufacturererDatasheetNotes
FH2B4MH1F2F0100Unictron TechnologiesLinkIncluded

Only tested antennas are supported. If you choose to use a different one, proceed at your own risk!

Getting Started

Start here

🚨Read this first🚨

There are some important things about the nRF9160 Feather before you get started:

  1. The nRF9160 Feater shouldn't be used with a battery less than 300mAH. More information in the specs section.

  2. If you need to debug your nRF9160 Feather, it requires an external programmer. More information on that in the Requirements for external programming section

What's included

nRF9160 Feather

  • 1x nRF9160 Feather board
  • 1x set of male headers (16 pin and 12 pin)
  • 1x wide-band LTE antenna

Getting Started Sections

More coming soon..

Programming and Debugging

There are currently two ways of programming the nRF9160 Feather. You can use the built-in bootloader or use an external programmer.

Booloader use

Currently the nRF9160 Feather uses the MCUBoot bootloader which comes standard with the nRF Connect SDK. It is the recommended way to load new firmware onto your nRF9160 Feather.

In order to utilize the bootloader, you'll ned to install newtmgr (AKA mcumgr). Here's how below:

IMPORTANT: updates above ~192kB will not work with the current version of the bootloader. Examples like the asset_tracker require a programmer.

Binary Download

Download one of the binary files below. (Install script coming soon...)

Then place that file in your $PATH. On Linux and OSX that location will be /usr/local/bin. On Windows you can place the file in a location of your choice. Then, you'll have to update your $PATH. If you're unfamailiar with the process check out this guide.

Setting your connection configuration (one time only)

In order to easily work with newtmgr you'll need to make a one-time connection profile.

For Mac OS

newtmgr conn add serial type=serial connstring='dev=/dev/tty.SLAB_USBtoUART,baud=1000000'

For Linux

sudo newtmgr conn add serial type=serial connstring="dev=/dev/ttyUSB0,baud=1000000"

Depending on your system, the serial port may show up differently. Replace /dev/ttyUSB0 with the serial port name. Also, sudo is required for Linux to access the serial port properly.

For Windows

newtmgr conn add serial type=serial connstring="dev=COM3,baud=1000000"

In all three cases above you've created a connection called serial. We'll be using that when issuing commands to the nRF9160 Feather.

Using newtmgr

Pre-check: MCUBoot needs to be enabled in your project before you can use it! Make sure that you have CONFIG_BOOTLOADER_MCUBOOT=y in your prj.conf

  1. Put your nRF9160 Feather into DFU mode.
    1. Hold the MODE button
    2. Then tap the RST button while holding mode
    3. Let go of the MODE button
  2. Building your application if you haven't already with west build. It will create a folder called build. The file we care about is build/zephyr/app_update.bin
  3. Load the file using newtmgr
    1. Load the binary file using: newtmgr -c serial image upload build/zephyr/app_update.bin
    2. Reset your board using newtmgr -c serial reset or hit the RST button. Full process below:


  1. The transfer process is limited to 1M BAUD. In most cases it takes about 8 seconds to transfer application code.
  2. The nRF9160 Feather does not respond to newtmgr commands unless it's in DFU mode. (See step 1 above to get it into DFU mode.)

Requirements for external programming

You can also use external programmers with the nRF9160 Feather. Here are the current supported external programmers:

  1. nRF5340-PDK
  2. nRF9160-DK

Note: Most commercial J-Link programmers *should* work with the nRF9160 Feather. In particular the J-Link EDU Mini is a great choice if you're building non-commercial products. (Supports Cortex M33 processors. Untested at this time.)

🚨Important: the nRF52 and nRF51 based development kits do not work with the nRF9160 Feather!

👉Additionally, you'll also need a Tag-Connect cable. The nRF9160 Feather was designed to use the TC2030-CTX-NL. For more information check out Tag-Connect's product page.

Installing programmer software

In this next section, I'll be focusing on using the nRF5340-PDK as the programmer of choice. These steps should not be different from other J-Link supported boards.

  1. Download your version of the nRF Command Line Tools


  1. Then, run the .exe that was downloaded. It will do all the heavy lifting for you.
  2. Run nrfjprog in a cmd window to make sure your install is working.


  1. First run nRF-Command-Line-Tools_10_9_0_OSX.pkg
  2. Once that install is done, run JLink_MacOSX_V680a.pkg
  3. Open a fresh terminal window and run nrfjprog to make sure your install is complete.

Setting up the nRF5340-PDK

Here are a couple of close up shots of how to connect the nRF5340-PDK:


nRF9160 Feather w/ USB

nRF9160 Feather w/ Tag Connect

nRF9160 Feather w/ Tag Connect Connected

I highly recommend you jump SB47 on your nRF5380-PDK with some solder. This forces the debugger to think an external devices is permanently connected. If you're only doing external debugging, this is very useful.

nRF5340-DK jumper highlighted

After hooking things up, It's time to do a quick smoke test. Running nrfjprog -r in a terminal should show this result:

$ nrfjprog -r
Applying system reset.


Note: these pictures are with an early version of the nRF9160 Feather. The procedure is the same. The orientation of the Tag-Connect though is horizontal not vertical as seen in the pictures.

Programming with the nRF5340-PDK

Programming with the nRF5340-PDK is straight forward in Zephyr using west. Here's what it looks like:

west build -b circuitdojo_feather_nrf9160ns -p
west flash --runner nrfjprog
nrfjprog -r

In the above, i'm:

  1. Doing a pristine build of my application with the nRF9160 Feather as the target.
  2. Then flashing using the nrfjprog runner option. This is preferred for all J-Link boards.
  3. Resetting the board using nrfjprog -r. As of this writing, west does not reset the board after programming.

Getting a modem trace

Sometimes, you may be requested to get a modem trace of your device. This section will focus on helping you get one for your nRF9160 Feather.

In order to get a modem trace, the TX and RX pins on your board need to be free. You'll also need a UART to USB adapter of some type. I used an FTDI one that has each of the lines broken out.

  1. First, set your prj.conf to include the following lines:

    # Enable modem trace
    # AT host library
  2. Then, create a folder in your project/sample called boards and add a new file called circuitdojo_feather_nrf9160ns.overlay We'll want to enable the UART1 interface on pins 23 and 24 like below:

    * Copyright (c) 2020 Circuit Dojo LLC
    * SPDX-License-Identifier: Apache-2.0
    &uart1 {
    status = "okay";
    current-speed = <115200>;
    tx-pin = <24>;
    rx-pin = <23>;
  3. Connect your USB to UART adatper. I've used clips from my logic analyzer to hold the wires in place. Connect the yellow RX wire to the TX on the board. Connect the orange wire to the RX on the board.


  4. Then, inside LTE link monitor enable the process with AT%XMODEMTRACE=1,2. Then execute AT+CFUN=0. This will perpetually save and keep modem traces on.

  5. Then open the serial port in the modem trace App and click start.


    1. Then run your app as normal. You should see the Trace size go up little by little as connections are made, etc.


    1. Then grab the file according to the log output. For example: Tracefile created: /Users/jaredwolff/Library/Application Support/nrfconnect/pc-nrfconnect-tracecollector/trace-2020-09-16T20-47-19.741Z.bin

    For more information, check out Nordic's original article on the subject.

Debug Serial Usage

The nRF9160 Feather comes with an on-board Silicon Labs CP2102 USB-to-UART chip. You can use it with most serial terminal viewers. If you have an older version of Windows you will have to install the driver. The download is located here.

Here's some recommendations for software to communicate with the nRF9160 Feather. No matter what program you use, the standard baud rate for the console is 115200. All other options are standard/default (8 bits, oon-pairty, 1 stop bit).




CoolTerm has been my go-to for testing and debugging. Fortunately it's also multi-platform! You can download it by going here:

Mac OSX & Linux


You can use screen to view your debug output. Here's a typical command:

screen /dev/tty.SLAB_USBtoUART 115200

The major drawback of using screen is that it does not save your history. It's better to use other utilities for that purpose.

Note: depending on your system your serial port may be named something different from /dev/tty.SLAB_USBtoUART. You can check your dev folder like this to check which one may be it:

ls -l /dev | grep SLAB


You can also use cu to display your debug output. Here's an example:

sudo cu -l /dev/tty.SLAB_USBtoUART -s 115200

If you notice, it requires super user permissions. (This is the only drawback to it IMHO)

To escape from your session type ~.

nRF Connect Desktop

nRF Connect Desktop

nRF Connect Desktop is the utility that you can use to manipulate your nRF9160 Feather. In this section we'll be focusing on two apps that will affect you the most:

  1. LTE Link Monitor
  2. Programmer

You can find the download page for nRF Connect Desktop here.

LTE Link Monitor

The best way to debug anything cellular-related is to use the LTE Link Monitor. You will need to install a special one that I compiled specifically for the nRF9160 Feather. Here's the LTE Link Monitor download (Version 1.1..1)

What's the difference you ask?

My version of LTE Link Monitor has flow control turned off. I hope in future versions of LTE Link Montior it will have this option to turn it on and off on the fly.

To install:

  1. Install nRF Connect Desktop app
  2. Copy the LTE Link Monitor .tgz file to %USERPROFILE%\.nrfconnect-apps\local (on Windows) or $HOME/.nrfconnect-apps/local (on Linux/macOS). Here's an example of where it is on Windows: Location on windows
  3. Close and re-open nRF Connect Desktop (if it's open)
  4. Then click Open next to the v1.1.1 version of LTE Link Monitor. It will also have local written underneath it.

Local version of LTE Link Monitor

For more information check out Nordic's Documentation.


The programmer is excellent for updating your application firmware. The most important function it provides is updating the modem firmware.

Updating Application Firmware

Another way of programming your application other firmware images is to use the nRF Connect Desktop Programmer App.

  1. First, you'll need to install it if you haven't already.
  2. Then open it up and select your programmer Port choices
  3. Then add a hex file using the button on the right side. Add a hex file
  4. Click Browse to loook for your file Add a hex file
  5. Browse your Nordic Connect SDK repo for your file. For instance the at_client hex image is: ncs/nrf/samples/nrf9160/at_client/build/zephyr/merged.hex Add a hex file
  6. Hit write to start the writing process. Remember your programmer has to be connected to the nRF910 Feather for this to work! Add a hex file

Handy trick! Since the nRF Connect Desktop app is web based, you can use (Command) ⌘ + R to refresh the program. (or CTRL + R on Windows/Linux) This is great when the app goes into a weird state or if your serial device/programmer is now showing up.

Updating Modem Firmware

Your modem firmware plays an important role in the nRF9160. The easiest way, as of this writing, to update is to use the Programmer's Update modem function. It's important to note that not all firmware is certified to work on every provider. For a full up-to-date list, check out Nordic's documentation.

Here are the instructions for updating your modem firmware:

  1. Download the modem firmware you need.
  2. Next, open up the Programmer in nRF Connect Desktop. (You may need to open it first)
  3. Then open up a connection to your programmer. (Your programmer should be connected to USB and attached to your nRF9160 Feather) Port choices
  4. Once opened, the program will read the memory contents of your device and display it. Reading non-volatile mem
  5. To update the modem firmware, scroll down to the bottom right and click Update modem Update modem button
  6. Find your modem firmware Find modem firmware
  7. Start the DFU process by clicking Write! Start the process

Example Code


Approved/pre-tested Examples

nRF Cloud AGPS Sample

The nrf_cloud_agps sample is the easiest way to get started with generating GPS coordinates with your nRF9160 Feather.

Programming nrf_cloud_apgs Sample

  • [] TODO

Setting Up nRF Cloud

During factory test, your nRF9160 Feather is added to nRF Cloud for your immediate use! The only thing you'll need, other than your nRF9160 Feather, SIM and antenna is your getting started card:

[] Picture of card.

Every nRF9160 Feather has a device ID generated based on the IMEI. Your full device ID will look something like:

feather-<IMEI> where <IMEI> is the IMEI tied to your specific device. You'll need this in a moment.

Here are the steps to get you the rest of the way.

  1. First, program your device with the nrf_cloud_agps sample.
  2. Then, power up and confirm that the device can connect to the cloud.
  3. Create an nRF Cloud Account Add new device
  4. Once created, go to the top left and click the big + icon. Add LTE device
  5. Then skip the iBasis setup since we're using Hologram. Skip iBasis
  6. Enter the Device ID and the PIN provided on your card. Enter device ID and pin
  7. Once you press Add Device, nRF Cloud should notify you that your device has been added!
  8. Navigate to Devices and click on the device you're working wtih! Devices

That's it!

Your device screen will adapt to the example code that you're using. For example, it should display a map when you begin to publish GPS data.


There are some things that can go wrong here. They're usually related to your nRF Cloud certs.

  • [] Discuss downloading the certs again.
  • [] Removing
  • [] Reloading

All of this information is based on the tutorial here.

Cellular Provider Matrix


Here are some results from recent testing of the nRF9160 Feather. As of this writing, the nRF9160 Fether is not an end certified deivce. That means there is limited support for all the known networks in the USA.

Note: End device certification is underway with Verizon! Estimated completion is mid to late August.

In order to use a provider below you'll likely have to set the PDP context. This can be done in your project's prj.conf in Zephyr. Here's an example of setting the PDP context to use Hologram.

# Set the PDP context

Simply replace hologram with a provider specific APN and you'll be good to go.

Some providers also require a username and password. For example, here's what Soracom's looks like:


Here's a full working list of what plays nicely with the nRF9160 Feather. This list is subject to change at any time.


Provider NameConnected ToNotesWorkingAPN
HologramSprint/AT&TThe first SIM to get working out of the box. Also supports T-Mobile and Verizon connections. Recommended 🌟hologram
SoracomAT&TTested previously with a different module in this location. Will test again with the nRF9160. Requires a PDN setting of sora/
VerizonVerizonWorks greaet once the IMEI is cleared with Verizon. More to come here..
Twilio (Standard Wireles)T-MobileT-Mobile does not support the nRF9160.🔴
Twilio (Super Sim)?Fails to make a full connection. May work with future nRF9160 modem firmware.🔴super


Provider NameConnected ToNotesWorkingAPN
Twilio (Standard Narrowband)T-MobileT-Mobile does not support the nRF9160.🔴

Emoji usage chart:

Tested and working
🔶In progress
🔴Tested. Does not work!

💡Side note: unless otherwise noted these are tested along the shoreline of Connecticut. Your mileage may vary so make sure you do your own testing before adopting a provider.

For the latest information on which providers support the nRF9160 SiP check out Nordic's nRF9160 certification page.



Hardware Related

TypeDonwload Link
DocumentationLink to Github
HardwareLink to Github
Bill of MaterialsLink to Aligni
3D ModelLink to Github
EnclosureLink to Grabcad

Software Related

TypeDonwload Link
Bootloader (v1)Link
newtmgr CLI (v1)Link


All hardware related files are available under the CERN v1.2 license. Click here for more details.

All documentation is released under a Creative Commons Share-alike license. Click here for more details.

Any applicable software is released under the Apache 2.0 license. Click here for more details.



To make things easier for you, the nRF9160 Feather comes pre-tested and ready for integration. All applicable testing will be done to ensure comppliance with FCC and CE EMI/EMC requirements. See each section below for more information.

Open Source Hardware Certification:


CE Compliance

Current status: Not complete

FCC Part15 Compliance

Current status: Not complete

ISED (IC) Compliance

Current status: Not complete

Verizon Network Certification

Current status: Not complete

FCC Pre-certification and Markings

When designing the nRF9160 Feather into your own projects, there are some marking requirements. Per the instructions from Nordic, you must have this written on your product somewhere:

  • Contains FCC ID: 2ANPO00NRF9160
  • Contains IC: 24529-NRF9160

Additionally, the nRF9160 Feather must be used at a minimum of 20 cm (7.87 inches) from the body at all times. This means the nRF9160 Feather should not worn on the body without sufficent isolation.

Country of Origin

  • Assembled in the USA 🇺🇸
  • Circuit boards fabricated in Taiwan 🇹🇼


This page has a list of common problems and solutions realated to the nRF9160 Feather.

Programming problems

Problem found: the nRF9160 Feather does nothing after being programmed/flashed.

Solution: after being programmed using west flash, you may have to issue an additional nrfjprog -r or hit the RST button on the board. This should start code execution.

GPS Connection issues

Problem found: unable to get a fix after waiting a long time. (Using the gps example.

Potential solution:* If your nRF9160 Feather is plugged into USB, try a different USB power supply. During the testing of the nRF9160 Feather, I found that certain USB C-to-A adapters injected were not properly grounded. This lead to issues getting a fix or prevented it all together. This especially applied to Apple Macbooks.


Coming soon...

The nRF9160 Feather campaign is almost upon us!

Subscribe to the mailing list here 👈

That way you know when the nRF9160 Feather is available!

Thanks 🙏

Special thanks to all who have helped make this project successful. Here are a few honorable mentions:

  • Thanks to all the kind folks at Nordic Semiconductor! Eeryone on Devzone to sales to the FAEs in the States have all been very supportive of the project. Thank you, thank you thank you!
  • Many thanks to the Aligni team for making a great product and helping open source projects succeed. You can sign up for you own account here.
  • Thanks to the team at Hologram team! Without you guys no one would have a SIM to connect their nRF9160 Feathers with!
  • Last, by not least, thanks to my main collaborators GroupGets and Hackster. Without them there wouldn't be a nRF9160 Feather to release into the world!