Skip to main content


Icarus SoM (nRF9160)

Icarus SoM (nRF9160)


The Icarus SoM (System on Module) is a coin-sized, easy to solder solution that provides cutting edge low-power cellular IoT connectivity in module form. It is meant to be integrated into other electronics designs and can be powered using a 3.3 V regulator or directly through a LiPo battery. The module includes global LTE-M & NB-IoT connectivity, GPS, low-power 3-axis accelerometer, and a SIM switching circuit that allows the user to choose between the onboard eSIM or an externally connected SIM. All of this in a 18.5 x 28.0 mm package with castellated pins.


  • Application processor:
    • ARM® Cortex M33 with 1 MB Flash and 256 kB RAM
    • ARM® Trustzone®, ARM® Cryptocell 310
  • Connectivity:
    • LTE Cat-M1, LTE CAT-NB1 (NB-IoT) with Global Coverage
    • SSL / TLS & Secure FOTA support
    • PSM and eDRX support
    • On-board eSIM & SIM switching circuit for external SIM
    • GPS (L1 C/A)
  • LIS2DH12 3-axis low-power accelerometer
  • Power:
    • GPIO and onboard peripherals powered through single 3.3 V pin
    • VIN pin for powering directly from a battery or to separately power the radio.
  • Peripherals:
    • I2C / UART / SPI / I2S with EasyDMA
    • up to 27 GPIO
    • up to 8 12-bit, 200ksps ADC with EasyDMA
    • up to 4 PWM Units
    • SWD programming pins
  • Fully integratable into other products due to castellated pins and SMD footprint

Block Diagram

Icarus Block Diagram

Icarus Block Diagram

Pin description

External pins available to user

Icarus SoM Pinout

Icarus SoM Pinout
#LabelDescriptionDevice-tree node
1GNDGround power input-
2VCCMain power input-
3P25nRF9160 P0.25gpio0
4P22nRF9160 P0.22gpio0
5P21nRF9160 P0.21gpio0
6P4nRF9160 P0.04gpio0
7P5nRF9160 P0.05gpio0
8P2nRF9160 P0.02gpio0
9P1nRF9160 P0.01gpio0
10P0nRF9160 P0.00gpio0
11P26nRF9160 P0.26gpio0
12P27nRF9160 P0.27gpio0
13P30nRF9160 P0.30gpio0
14P31nRF9160 P0.31gpio0
15P7nRF9160 P0.07gpio0
16P6nRF9160 P0.06gpio0
17P3nRF9160 P0.03gpio0
18P8nRF9160 P0.08gpio0
19P9nRF9160 P0.09gpio0
20VINDirect battery / radio power input-
21GNDGround power input-
22GNDGround power input-
23SDAI2C SDA pini2c2
24SCLI2C SCL pini2c2
25A0 / P13AIN0 / nRF9160 P0.13gpio0
26A1 / P14AIN1 / nRF9160 P0.14gpio0
27A2 / P15AIN2 / nRF9160 P0.15gpio0
28A3 / P16AIN3 / nRF9160 P0.16gpio0
29A4 / P17AIN4 / nRF9160 P0.17gpio0
30A5 / P18AIN5 / nRF9160 P0.18gpio0
31A6 / P19AIN6 / nRF9160 P0.19gpio0
32A7 / P20AIN7 / nRF9160 P0.20gpio0
33RESETnRF9160 Reset-
34SWDCLKSWDCLK programming pin-
35SWDIOSWDIO programming pin-
36P23nRF9160 P0.23gpio0
37P24nRF9160 P0.24gpio0
38NANO_SIM_RSTExternal SIM Reset-
40NANO_SIM_CLKExternal SIM Clock-
42GNDGround power input-

nRF9160 pins connected on Icarus SoM internally

nRF9160 pinFunctionDevice-tree node
P0.12SIM select pingpio0
P0.28Accelerometer Interrupt 2lis2dh12-accel
P0.29Accelerometer Interrupt 1lis2dh12-accel

The connections described in the table above connect the Accelerometer and SIM switching circuit with the nRF9160 on the Icarus SoM. They are not externally available to the user and are reserved for the specified functionality. These reserved nRF9160 pins should not be used for other functionalities. Using them can cause some devices on the Icarus SoM to stop working correctly.

Operating Temperature-202585°C

(*) RF 3GPP compliancy requires 3.3 V




The Icarus SoM hosts several peripherals that are connected to the nRF9160 internally or on the board. Descriptions of the peripherals and devices can be found below.


The accelerometer on the board is the LIS2DH12 from ST. This ultra-low-power 3-axis accelerometer is connected to the nRF9160 through I2C (address 0x19) and features two interrupt pins, INT1 and INT2, which are connected to pins P0.28 and P0.29. The interrupt pins can be configured for multiple purposes including free-fall and motion detection (more info on this in the LIS2DH12 datasheet).

The accelerometer hardware connection has been described in the Icarus device-tree under the i2c2 node. It has been defined as device lis2dh12-accel@19 with label LIS2DH12-ACCEL. For an example on how to read data from the accelerometer, see the Accelerometer sample.


The GPS receiver on the Icarus is embedded into the modem of the nRF9160. To successfully get a GPS fix, and receive location data, an active external GPS antenna must be connected (with a u.fl connector). An example of an antenna that can be used is the GNSS active patch antenna from Molex.

Configuring the voltage supply for the GPS antenna:
During operation, the modem inside the nRF9160 will automatically enable/disable the voltage supply for the GPS antenna when the GPS is active. It is doing this through the MAGPIO0 pin. During bootup, it is necessary to configure the modem through an AT command to use the MAGPIO pin. AT commands can be written to the nRF9160 modem using the at_cmd_write() function. This is an example of configuring the MAGPIO0 pin for GPS operation (notice how a specific frequency range for GPS is configured):

at_cmd_write("AT%XMAGPIO=1,0,0,1,1,1574,1577", NULL, 0, NULL);

Initialization and enabling of the GPS takes a few more steps. See the GPS sample and/or Nordic's nRF Connect SDK documentation for more information on initialization and reading GPS data using the Icarus.

eSIM and external SIM connection

SIM selection:
The Icarus SoM provides the user with 2 options regarding SIM usage for LTE-M/NB-IoT communication. Either using the on-board eSIM or using an external nano-SIM. The SIM can be selected using the SIM select pin on P0.12:

Selection pin (P0.08)Selected SIM
HIGH (1)on-board eSIM
LOW (0)external nano-SIM

If the pin is left uninitialized, the modem will use the on-board eSIM.


Only change the SIM Select pin before enabling the modem. E.g. before writing the "AT+CFUN=1" AT command.

SIM select configuration for nRF SDK v2.0.0 and up:
The SIM on the Icarus SoM must be selected through the device-tree if you are using nRF SDK v2.0.0 and up. Selecting the SIM is done using a device-tree overlay file in your project. Follow these steps to select the SIM through the device-tree:

  1. Create a new directory in your project folder named boards:
$ cd <your-project-directory>
$ mkdir boards
$ cd boards
  1. Create an overlay file with the exact name of the board:
# When building for a non-secure application
$ touch actinius_icarus_som_ns.overlay
  1. Add the following device-tree node to your overlay file:
&sim_select {
sim = "external";

By changing the value of sim to "external" you select the external SIM. By changing the value of sim to "esim" you select the on-board eSIM. And what's left to do is to re-build your project (use a pristine build).

SIM select configuration for nRF SDK v1.9.1 and down:
The external SIM on the Icarus SoM can be selected using a configuration option if you are using nRF SDK v1.9.1 and down. You can set the following option: BOARD_SELECT_SIM_EXTERNAL=y in the prj.conf to automatically select the external SIM on the SIM connector. The on-board eSIM is used by default if the config option is not set.


VIN can be powered by LiPo battery directly. VCC should be powered by a small regulator (depends mostly on usage of GPIOs).

Icarus SoM reference design (application circuit)

Icarus SoM Schematics Example

Icarus SoM Schematics Example

CAD Symbols and Footprints

Symbols and footprints for the Icarus SoM are available for all popular CAD software on SnapEDA