AT commands

AT commands is the software interface used to control the modem, defined as part of the 3GPP standard. This means all cellular devices are required to support these commands. The commands supported by the nRF91 series is documented in the nRF91 AT Commands Reference Guide. This contains both the standard AT commands and Nordic-proprietary commands implemented specifically on our hardware.

Note

A common use case is wanting the nRF9160 SiP to act purely as a modem in companion with an external MCU. For this, the nRF Connect SDK has the Serial LTE modem application, which implements extra AT commands for IP connectivity.

AT commands syntax

AT commands have three different functions depending on how you call them. You can use them to set values or perform actions, readout values, or test their existence and get information about subparameters.

Consider the AT command +CFUN that sets and reads the modem functional mode.

Set command

To set the functional mode, use the following syntax,

Read command

To read out the current functional mode, use the following syntax,

Test command

The test command for the AT+CFUN command will list the supported functional modes. Use the following syntax,

Response

All AT commands will give a final response, one of the following:

+CME errors are enabled using the AT command +CMEE described below.

+CMS errors are used as an error response for SMS related commands specified and are specified in 3GPP 27.005 Ch. 3.2.5.

Common AT commands

+CFUN

+CFUN – set and read the modem functional mode

See the documentation for the full list of available functional modes.

In addition, sending

can also be used to store some AT command configurations to Non-volatile memory when the option is mentioned in the description of the command.

%XSYSTEMMODE

%XSYSTEMMODE – sets the system mode

This is a Nordic-proprietary command

Below is the syntax for this command:

+CEREG

+CEREG – subscribe to network status notifications

The highest level of notifications (level 5) contains the following information

This command is very useful when having network registration issues, so let’s take a closer look at what it means, using an actual output as an example.

  • 5 - <n> level of notification we are subscribed
  • 5 - <stat> registration status
  • "0901" - <tac> the tracking area code
  • "02024720" - <ci> the cell ID currently connected to
  • 7 - <AcT> indicates either 7 for LTE-M or 9 for NB-IoT.
  • "11100000" - <Active-Time> the value of the Active Time timer given by the network
  • "11100000" - <Periodic-TAU> the value of the extended periodic TAU timer given by the network

The values of <Active-Time> and <Periodic-TAU> are strings in 8-bit format, where bits 1-5 indicate the timer value in binary form and bits 6-8 indicate the timer value unit according to the tables below. The timer value unit depends on which timer it is (<Active-Time> is T3324 and <Periodic-TAU> is T3412) and the full table can be found in 3GPP TS 24.008.

Timer value unit
<Active-Time>
Timer value unit
<Periodic-TAU>

In the case of an error, you will also see the following parameters filled

  • <cause_type> - 0 if <reject_cause> contains an error
  • <reject_cause> – EMM cause value, which is documented in 3GPP TS 24.301 Annex A.

%XMONITOR

%XMONITOR – reads a set of modem parameters

This command’s set syntax reads a set of modem parameters. The read command and test command is not supported.

The set command has the following response syntax (for MFW v1.2.0 and higher).

Some of these will be covered by other commands, but below are a select few

  • <plmn> – String of digits containing the MCC and MNC (information about network operator)
  • <tac> – Tracking Area Code, used to identify a tracking area within a network
  • <cell_id> – E-UTRAN cell ID
  • <phys_cell_id> – Physical cell ID
  • <EARFCN> – EARFCN for the given cell
  • <Periodic-TAU-ext> – Indicates the periodic TAU value
  • <Periodic-TAU> – Indicates the periodic TAU value. Should be ignored if <Periodic-TAU-ext> is set

Just like +CEREG, the values of <Active-Time>, <Periodic-TAU> and now also <Periodic-TAU-ext> are strings in 8-bit format, where bits 1-5 indicate the timer value in binary form and bits 6-8 indicate the timer value unit according to the tables below. The timer value unit depends on which timer it is, and for %XMONITOR, it also depends on whether <Periodic-TAU-ext> is present.

Timer value unit
  • <Active-Time>
  • If <Periodic-TAU-ext> present: <Periodic-TAU>
Timer value unit
  • If <Periodic-TAU-ext> present: <Periodic-TAU-ext>
  • If <Periodic-TAU-ext> not present: <Periodic-TAU>

Important

The timer value unit of <Periodic-TAU> in %XMONITOR depends on whether <Periodic-TAU-ext> is present or not.

+CSCON

+CSCON – subscribe to result code notifications

This command subscribes to unsolicited result code notifications and the value you set determines how much information the notification contains, between level 1 and 3.

We are mainly interested in seeing the level 1 notifications, which has the following information

  • mode: indicates RRC Idle (0) or RRC Connected (1) mode

This command is useful to see if the modem is in RRC Connected or RRC Idle mode.

Note

When using +CSCON and +CEREG, the notification status <n> is omitted in the unsolicited result notifications. However, you can read this value by using the read command, for instance AT+CSCON?.

%MDMEV

%MDMEV – subscribes to modem domain event notifications.

This subscribes to events from the modem, like the modem overheating or low battery. Some examples include:

The nRF9160 modem core has a modem reset loop restriction, documented thoroughly in the white paper nRF9160 Modem Reset Loop Restriction, that prevents excessive signaling towards the network during continuous modem or application reset loops.

+CPSMS

+CPSMS – controls the PSM settings

The syntax for this command looks like this

Parameter 2 and 3 have been omitted here since it is ignored by the modem.

  • <mode> – enable (1) and disable (0) power saving mode
  • <Requested_Periodic-TAU> – requested value of Periodic-TAU timer, this can be ignored by the network
  • <Requested_Active-Time> – requested value of Active Time timer, this can be ignored by the network

The last two parameters have the same syntax as the +CEREG parameters <Periodic-TAU> and <Active-Time> explained above.

The read command will read out the requested values, and not necessarily the values given by the network. Exercise 1 will cover how to read out the values given by the network.

+CEDRXS

+CEDRXS – controls the setting of eDRX parameters

The syntax for this command looks like this

  • <mode> – enable (1) and disable (0) power saving mode
  • <AcT-type> – type of access technology used (WB-S1 or NB-S1). Simply put 4 for LTE-M and 5 for NB-IoT
  • <Requested_eDRX_value> – the requested eDRX value to send to the network (4-bit value)

If <Requested_eDRX_value> is committed, the value of the requested eDRX period is set to the manufacturer-specific default, which is 5,12 s or 20,48 s for LTE-M or NB-IoT respectively.

If mode 2 is set, you will get an unsolicited result code with the following syntax

  • <NW-provided_eDRX_value> – the eDRX value provided from the network (not necessarily the value you requested)
  • <Paging_time_window> – the paging time window

Both are 4-bit values, see the +CEDRXS documentation for the interpretation.

The read command will read out the requested values, and not necessarily the values given by the network. Exercise 1 will cover how to read out the values given by the network.

+CEDRXRDP

+CEDRXRDP – reads out dynamic eDRX parameters

The set command has the following response syntax

This output has the same parameters as the unsolicited result notification +CEDRXP, given by +CEDRXS, and explained above.

+CMEE

+CMEE – enables the use of the final result code +CME ERROR

The error codes that result from these notifications are documented in:

  • 3GPP TS 27.007 Ch. 9.2

+CNEC

+CNEC – activates or deactivates unsolicited reporting of error codes sent by the network.

It will enable result codes +CNEC_EMM and +CNEC_ESM, either separately or at the same time, depending on the parameter you set. The error codes that result from these notifications are documented in

  • +CNEC_EMM: 3GPP TS 24.301 Table 9.9.3.9.1 for EPS mobility management errors codes
  • +CNEC_ESM: 3GPP TS 24.301 Table 9.9.4.4.1 for EPS session management errors codes

This command enables to notifications from the modem

+CGSN

+CGSN – requests product serial number identification

Depending on the set command parameters, +CGSN can return

  • 1: <imei> – returns the 15-digit IMEI of the device
  • 2: <imeisv> – returns the 16-digit IMEISV composed of TAC (8 digits), SNR (6 digits) and SVN (2 digits)
  • 3: <svn> – returns the current SVN (also part of the IMEISV)

IMEISV: “IMEI, Software Version” composed of the TAC, SNR (Serial Number) and the SVN (Software Version Number).

%REL14FEAT

%REL14FEAT – enables the 3GPP Release 14 (LTE CAT-NB2) features that are supported on the modem

Recall from LTE-M and NB-IoT in lesson 1 that NB-IoT is specified in two releases (3GPP Rel.13 and Rel.14). Although the nRF9160 modem firmware does not support all Release 14 features, the features that are supported are disabled by default but can be enabled using this AT command.

Register an account
Already have an account? Log in
(All fields are required unless specified optional)

Forgot your password?
Enter your email address, and we will send a link to reset your password.