Now that you have a PicoLTE IoT kit, it is time to set it up.

This page contains all the necessary information to understand and setup the NB-IoT End-to-End Data Delivery demonstrator with the PicoLTE and C030 application board. It should be read carefully before using the system. The configuration files and all related tools and embedded firmware should be stored for future reference. The page will provide a walkthrough of the startup procedure for both the LTE NB-IoT EPS or NIDD and the C030 device. The goal is to perform an End-to-End communication between a typical IoT application using different sensors on the C030 board and publishing those measurements to a cloud-based service using Non-IP Data path between the eNodeB and the device.

*Refer to your Nutaq provided set up manual for more details.

Don’t have your own PicoLTE yet?

Setting up your PicoLTE

The PicoLTE is an LTE network-in-a-box providing an LTE evolved packet system (EPS). It can run both eNodeB to provide E-UTRAN radio access and EPC to handle control and data planes of LTE User equipments. The main purpose of this application note is to illustrate how to setup a NB-IoT LTE/4G network to publish the measurement of sensors to a cloud service.

The eNodeB will provide NB-IoT E-UTRAN radio access to the NB-IoT modem of the C030 application board.

The PicoLTE is used to provide NB-IoT connectivity (both eNodeB and EPC) while Ublox’s C030 is used in Non-IP mode to exchange Non-IP Date with remote application servers. C030 is connected to PicoLTE over RF cables (figure 1).

In this NB-IoT End-to-End scenario, only MO NonIP data is considered. The data measured by sensors on the C030 — GPS, temperature, humidity, acceleration — will be published by the NB-IoT N211 modem to the cloud through the PicoLTE EPS.

This demonstrator can be replicated to perform conducted or Over-The-Air communication. Figure 1 illustrates a conducted setup where C030 is connected to PicoLTE over RF cables. OTA setup must be installed in anechoic chamber to avoid interference with operators. OTA setup is not part of the scope of this application note.

Figure 1 — PicoLTE and C030 setup to test End-to-End Data Delivery

A typical conducted setup including RF modules such as RF power splitter/combine, circulator and attenuator is depicted in figure 2. It is possible to test multiple devices simultaneously depending on the number of channels of the power splitter combiner. One should notice that the RF devices are frequency dependent and should use the suitable and Power splitter/combiner, circulator and attenuator to the operating carrier frequency. C030-N211 can operate at band 8 or 20. Thus, the selected RF devices must support those bands.

Figure 2 — PicoLTE and C030 conducted setup

PicoLTE eNodeB Configuration.

For demonstration purpose, the PicoLTE is running NB-IoT cell in standalone mode at 801 MHz (LTE band 20) as depicted in figure 2. The configuration files are provided in the directory /opt/nutaq/picolte/examples/eps/ciot/nb-iot/nb1/standalone/enb.

The main configuration file is enb.cfg located in the “./enb” directory. It includes the following configuration files:

Configuration file

Description

enb.cfgThis is the main configuration file. It is JASON-based syntax.
sib1.asnSystem Information Block 1 (SIB1) configuration file. It is ASN-based syntax.
sib2_nb.asnSystem Information Block 2 (SIB2) configuration file for LTE Narrow Band scenario. It is ASN-based syntax.
drb_nb.asnData Radio Bearer (DRB) configuration file for LTE Narrow Band scenario. It is JSON-based syntax.
rf_driver.cfgThis is the configuration file of the Radio Head and DUC/DDC logic implemented on the FPGA. It is JSON-based syntax.
rf_front_end.cfg

Look up table of amplifier gains. The suitable gains are selected based on the required output power defined in the configuration file rf_driver.cfg.

NB: Do not edit rf_front_end.cfg configuration file. 

Table 1 — eNodeB’s configuration files

The eNodeB is connected to the EPC and supports different PDNs including the Non-IP PDN to handle Non-IP connectivity and NIDD both for MO and MT cases.

Setting the DL/UL central frequencies

As the DL and UL central frequencies in LTE are related, one can use the DL EARFCN to setup the operating carrier frequencies both for the Uplink and Down Link. The DL EARFCN for standard LTE bands can be configured in the enb.cfg configuration file located in the folder ./enb. The parameter’s name is dl_earfcn.

Parameter

Description

dl_earfcn

Downlink EARFCN

Example:

dl_earfcn: 6250,/*DL: 801 MHz and UL: 842 MHz (Band 20) */

Table 2 — Setting DL EARFCN

Figure 3 — Spectrum of the NB-IoT cell at 801 MHz (LTE Band 20)

There are many web tools that can be used to find the suitable EARFCN depending on your setup. The following one proposes the computation of both carrier frequency and ARFCNs: http://niviuk.free.fr/lte_band.php.

Setting the Output Power

The output Power can be configured in the rf_driver.cfg configuration file located in the folder ./enb. The parameter’s name is power_output.

Parameter

Description

power_output

Power output (dBm). For the radio640, the range is between -39 (minimum value) and -8 (maximum value).

Example:

power_output:-10,/*Power output [dBm] set to -10 dBm*/

Table 3 — Setting RF Output Power

Setting the RX Gain

The receiving gain can be configured in the rf_driver.cfg configuration file located in the folder ./enb. The parameter’s name is rx_front_end_gain.

Parameter

Description

power_output

Rx Variable Gain Amplifier in dB. the values for the radio640 depends on the bands used. 0dB is the maximum value and 70dB is the minimum value.

Example:

rx_front_end_gain: 30,/*Set Total RX Gain to 30 dB*/

Table 4 — Setting Receiving Gain

Setting the RF port

The RF port can be configured in the rf_driver.cfg configuration file located in the folder ./enb. The parameters names are downlink_rf_port_x and upink_rf_port_x, where x is the cell index. The following table specifies the suitable RF ports for one cell scenario. In the case of multiple cells please refer to PicoLTE’s User Guide for more details about multiple cell configuration.

Parameter

Description

Physical RF Port

downlink_rf_port_0Cells indexes assignment to physical RF ports.

Example:

downlink_rf_port_0: 1,/*One Cell transmitting on RF port TRX1*/

Transmission mode 1

  • 1 (TRX1)
  • 3 (TRX3)

Transmission mode 2

  • 1,2 (TRX1, TRX2)
  • 3,4 (TRX3, TRX4)
uplink_rf_port_0Cells indexes assignment to physical RF ports

Example:

uplink_rf_port_0: 1,/*One Cell receiving on RF port RX1*/

Transmission mode 1

  • 1 (RX1)
  • 3 (RX3)

Transmission mode 2

  • 1,2 (RX1, RX2)
  • 3,4 (RX3, RX4)

Table 5 — Setting RF ports

Enable or Disable Scrambling

The scrambling here refers to NPBCH/BCCH changes as specified in 3GPP release 13.5. The parameter’s name is rel13_5 and can be configured in the enb.cfg configuration file.

Parameter

Description

rel13_5Release 13.5 NPBCH/BCCH scrambling changes.

Example:

rel13_5: true,/* release 13.4 NPMCH/BCCH scrambling changes */

Table 6 — Setting NPBCH/BCCH Scrambling

To tune any other parameter not listed on this page, please read the description of this parameter in the configuration parameters User Guide and contact [email protected] for any help.

PicoLTE EPC Configuration

For demonstration purpose, the PicoLTE is running an EPC configuration allowing the management of NB-IoT devices. The configuration files are provided in the directory /opt/nutaq/picolte/examples/eps/ciot/nb-iot/nb1/standalone/epc.

The main configuration file is mme.cfg located in the “./epc” directory. It might include the UE Data Base if it is not already defined there using the JSON List of Objects: ue_db. Every object of this list defines a subscriber which is defined by the USIM information.

Configuration file

Description

mme.cfgThis is the main configuration file. It is JASON-based syntax.
ue_db-ims.cfgUser Equipment Data Base. It is a JASON-based syntax.

Table 7 — EPC’s configuration files

Enable or Disable Control Plane CIoT Optimization

Control Plane Cellular IoT EPS optimization is a feature of CIoT. It can be enabled using the parameter cp_ciot_opt in the configuration file mme.cfg. Notice that current NB-IoT modems including N211 on the C030 application boards support only CP-CIoT EPS optimization and not the DRB optimization. Therefore, the cp_ciot_opt must be set to true.

Parameters

Description

cp_ciot_opt

Control Plane Cellular IoT EPS optimization support

Example:

cp_ciot_opt: true,/*Enable Control Plane Cellular IoT EPS optimization */

Table 8 — Setting Control Plane CIoT Optimization

PDN Definition

One or multiple PDNs can be defined in the mme.cfg configuration file using the pdn_list. It is a JSON list of one or more PDNs objects. The following table summarize the key parameters of a PDN object.

Parameter

Description

pdn_type

Select the PDN type.

The available PDN types are ipv4, ipv6, ipv4v6, non-ip (default = ipv4)

access_point_nameSet the Access Point Name
first_ip_addrFirst available IPv4 address
last_ip_addrLast available IPv4 address
ip_addr_shiftThe allocated IPv4 addresses are allocated starting from first_ip_addr with a difference of 2^ip_addr_shift. Hence last_ip_addr – first_ip_addr must be a multiple of 2^ip_addr_shift. This options is useful in case of inter_UE communication to ensure that the IPv4 address of a given UE is the only one in its netmask.
p_cscf_addrIPv4 or IPv6 addresses of the PCSCF servers (VoLTE).
dns_addrIPv4 or IPv6 addresses of the DNS servers.
first_ipv6_prefixFirst available global IPv6 prefix used in Router Advertisement message sent to the UE (only the high 8 bytes of the IPv6 address are meaningful). Note that the selected prefix will also be used as the interface identifier sent in NAS signalling.
last_ipv6_prefixLast available global IPv6 prefix used in Router Advertisement message sent to the UE (only the high 8 bytes of the IPv6 address are meaningful). Note that the selected prefix will also be used as the interface identifier sent in NAS signalling.
erabs

Array of objects. Each element defines an E-RAB (E-UTRAN Radio Access Bearer) associated to the PDN. The first E-RAB is the default radio bearer and must always be present. The additional E-RABs are dedicated radio bearers and must include a Traffic Flow Template (TFT) unless they are defined as UE initiated.

qci – QoS Class Identifier of the E-RAB.

priority_level – Priority level.

pre_emption_capability – Enumeration: shall_not_trigger_pre_emption or may_trigger_pre_emption.

pre_emption_vulnerability – Enumeration: not_pre_emptable or pre_emptable.

Example

NonIP

{   pdn_type: “non-ip”, 

     // access_point_name: “internet”, 

     //first_ip_addr: “192.168.3.2”, 

    //last_ip_addr: “192.168.3.254”, 

    //ip_addr_shift: 2, /* difference between allocated IP addresses is 4 */ 

    //p_cscf_addr: [“192.168.3.1”], //dns_addr: “8.8.8.8”, /* Google DNS address */ 

    //erabs: [{ qci: 9, 

          //priority_level: 15, 

         //pre_emption_capability: “shall_not_trigger_pre_emption”, 

        //pre_emption_vulnerability: “not_pre_emptable”, 

    //},], 

},

Table 9 — Public Data Network parameters

NonIP PDN

The EPC can handle:

  • Non-IP PDN connection establishment
  • MO Non-IP data
  • MT Non-IP data
  • Non-IP Events

The EPC provides an API that can be used by an external service to register to Non-IP events and forward Non-IP Data both on the Uplink and Downlink side between the remote application server and the EPC. The EPC handles Non-IP traffic to and from the NB-IoT devices.

A Non-IP PDN must be configured to enable NonIP Data Delivery. We just need to set the pdn_type parameter of a PDN object to “non-ip”.

UE Data Base

The UE Data base can be defined in the mme.cfg configuration file or it can be defined in a separate file and included in the mme.cfg configuration file using the directive include (include “ue_db-ims.cfg“,). The parameter ue_db is a JSON array of objects that must be used to configure the user database. Each element of this array is an entry for one user. The following properties are available:

Parameter

Description

sim_algo

Optional enumeration, xor, milenage or tuak (default = xor). Set the SIM authentication algorithm. Note: test USIM cards use the XOR algorithm.

imsiSet the IMSI.
amfSet the Authentication Management Field.
sqnSet the initial sequence number. For the XOR algorithm, the actual value does not matter. For the Milenage or TUAK algorithm, a sequence number resynchronization is initiated if the sequence number does not match the one store in the USIM.
KSet the user secret key (as a 16-byte hexadecimal string). 
multi_simIf set to true, allow several UEs to have the same IMSI (useful when using several identical test SIM cards in different UEs at the same time). They are distinguished with their IMEI. Note: it is only allowed with the XOR authentication algorithm. 
Example

ue_db: [ { 

     sim_algo: “xor”, /* USIM authentication algorithm: xor, milenage or tuak */ 

     imsi: “001010123456789”, /* Anritsu Test USIM */

     amf: 0x9001, /* Authentication Management Field */ sqn: “000000000000”, /* Sequence Number */ 

     K: “00112233445566778899aabbccddeeff”, /* Anritsu Test USIM */ 

     multi_sim: true, 

     }, 

     /* Add new entries for each IMSI/K */ 

     ],

Table 10 — Setting the UE Database

End-to-End Non-IP versus IP Data Path

The eNodeB is connected to the EPC and supports different PDNs including an IPv4 type PDN. This PDN allows to bring internet connectivity to the registered devices using the APN “internet”. It basically allows end-to-end connectivity and data delivery in both direction Mobile Originating and Mobile Terminating cases.

Once the devices register to the network and establish EPS bearer towards the NonIP PDN, they can connect to remote servers on the cloud. All the NonIP traffic in both direction (MO or MT) travel on the red coloured data path.

Figure 4 — IP Data Path for End-to-End IoT use cases

The NIDD Server handles Non-IP Data delivery to and from the C030 NB-IoT device. It registers to Non-IP events managed by the EPC and process Non-IP Data transmitted by the UEs to the remote application server. If a Non-IP event is generated by the EPC, the NIDD Server acquires the data transmitted by the UEs and forward them to the remote application server immediately. For MT Non-IP Data, the NIDD server forwards the data send by the AS to the EPC in Non-IP packets to the C030 NB-IoT device identified by a unique ID which is IMSI of its USIM card.

C030 NB-IoT Application Board

The u-blox C030 application board is an out-of-the-box rapid prototyping solution for IoT applications supporting new LPWA (low power wide area) cellular technologies, such as NB-IoT, and existing 2G/3G networks. The board is powered by an integrated, ARM Mbed compatible Cortex-M4 host CPU with 1 MB FLASH and 256 kB RAM, leaving ample space for software development and debugging.

C030-N211 application board is an Mbed-enabled NB-IoT starter kit with SARA-N211 (NB-IoT), MAX-M8C, and Cortex M4 CPU. It allows:

  • Quick prototyping with Arm Mbed on integrated host CPU
  • Simple testing of positioning applications with integrated GNSS
  • Ideal for ultra-low power designs and compact form factors
  • Easily capture sensor data with Arduino shields

N211 Modem’s firmware

N211 has currently two firmware version used basically to test the following applications:

  • End-to-End LWM2M/CoAP
  • NonIP Data Delivery
  • UDP Echo

Table 11 summarizes the available firmware of N211 modem and the list of application we tested so far with C030 application board.

C030 N211-FWPKG

C030 STM32-Mbed

Sensors

LWM2M/CoAP06.57, A01.02Mbed program generated by uArgus (Windows Mbed toolchain)Temperature
NonIP Data Delivery06.57, A01.02c030-3LED_ModemAccess_ProductionFirmware.binData generated on the Host PC STM32 By-pass (3LED ModemAccess Production FW)
UDP Echo06.57, A07.03c030-3LED_ModemAccess_ProductionFirmware.binData generated on the Host PC STM32 By-pass (3LED ModemAccess Production FW)

Table 11 — N211 firmware vs tested applications

To upgrade or downgrade the firmware of N211 modem, contact Ublox to get the software for that.

Ubidots Cloud Service

For demonstration purpose we propose to use Ubidots cloud server as it is simple and easy to setup. For this you need to load the Bypass firmware on the application MCU, create your account on Ubidots portal, get your token then you should be able to replicate the Non-IP demonstrator and test both UL and DL NonIP Data Delivery.

Device Registration

Register a new device

Ubidots provides Web portal to register and manage IoT devices. One can register a new device using the IMEI of the NB-IoT modem on C030 and can assign a name to this new device.

NonIP Data Delivery Management

On the C030 we generate random data varying between 34 and 45 to simulate body temperature. The data are transmitted in Non-IP mode to the EPC over NAS. A websocket-based server is running on the PicoLTE to handle NIDD. When a Non-IP event is generated by the EPC, the NIDD server captures the Non-IP packets and forward them to a remote application server. We used Ubidots for demonstration purpose. The user can connect to Ubidots and display in a user friendly graphical way the evolution of the transmitted temperature in real time as illustrated in Figure 5.

Figure 5 — Data published on Ubidots cloud server

The list of the registered devices can be displayed on this web page. The status of the device is indicated. If the device is registered and active, a button is available to open the its web page and display the reported and published measurement to this cloud server.

The following python scripts are provided both for the device and the network to generate and handle NonIP Data Delivery to the cloud:

  • Device C030-N211: /opt/nutaq/picolte/utilities/ue/ublox/n2xx/N211-Ubidots.py
    • This python script configures the NB-IoT N211 modem into Non-IP mode, generates data and transmits them to the network. We use the AT command +CGDCONT to define the Packet Data Protocol context. Here is an example how to use this PDP AT command: AT+CGDCONT=1,”NONIP”,”nonip”.
      • “NONIP” specifies the Non-IP PDP context
      • “nonip” is the APN defined in the Non-IP PDN in the MME configuration file.
    • We use the AT command “AT+CSODCP” to send the generated data. Sending Non-IP Data is managed by the “sendNIPData” function.
  • Network:
    • MO NonIP Data Delivery: /opt/nutaq/picolte/utilities/ue/ublox/n2xx/dl-nidd.py
      • This script registers to non-ip events. As soon as Non-IP Data are available on the MME, we extract them from the message and we forward the data to the remote cloud server Ubidots.
    • MT NonIP Data Delivery: /opt/nutaq/picolte/utilities/ue/ublox/n2xx/ul-nidd.py
      • This script generates data and send them to the device using Non-IP mode. The Non-IP data are displayed on the device as soon as they received. This script will be updated to manage an end to end MT Non-IP Data. The Data will be basically send from a remote service on the cloud and this utility will forward them in Non-IP mode to the suitable device.