> For the complete documentation index, see [llms.txt](https://docs.monogoto.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.monogoto.io/ntn-satellite-networks/ntn-certified-devices/ntn-certified-modules/sierra-wireless-hl7810-hl7812-satellite-ntn-network.md).

# Sierra Wireless HL7810/HL7812 Satellite NTN Network

## Set up Sierra Wireless HL7810 and HL7812

![](/files/D0MaRubbCP0gHWYUM0EQ)

## Quick Navigation

* [Set up the EVK Kit](#set-up-the-evk-kit)
* [Connect to Skylo](#connect-the-hl7810-and-hl7812-to-skylo)
* [Test the connection by sending UDP payload](#test-the-connection-by-sending-udp-payload)
* [Useful Links](#useful-links)

## Set up the EVK Kit

* Connect the **USB Cable** to the EVK kit as shown on the photo above
* **Connect the LTE antenna** as shown on the photo above
* **Connect the GPS antenna** as shown on the photo above
* Insert the **Monogoto SIM**

#### **Connect your PC to the EVK Kit**

Use the USB to connect your computer to the **AT CMD** port of the EVK Kit

{% hint style="info" %}
When using Windows, install the driver using the disk or USB stick provided by Sierra Wireless.
{% endhint %}

Connect to the EVK kit using a **terminal program**. You can use PuTTY for Windows, or Screen, minicom, or Miniterm for Mac or Linux.

Set the baud rate to **115200** Enter **`AT`**, if the connection with the HL7810 and HL7812 modem has been established, the board will answer with `OK`.

## Connect the HL7810 and HL7812 to Skylo

#### **Reset the modem** to its default configuration:

Restore factory settings:

```
AT+NVBU=1
```

Example response:

```
OK
..
+NVBU_IND: 1,0,0,0,"00/00/00,00:00:00-0","HL78xx.5.4.12.1.RK_03_02_00_00_24271_001.20221102" 
```

#### **Reboot the Module**:

```bash
AT+CFUN=1,1
```

Check the **status of the SIM card**. The correct response should be: `+CPIN: READY`

```
AT+CPIN?
```

{% hint style="success" %}
+CPIN: READY means that the SIM is ready for use and does not require any PIN entry.
{% endhint %}

### Executing Commands by Version

Execute various commands based on the software version you are using. Make sure to execute the commands that correspond to your version.

**Query device information**

Request the **product type, hardware,** and **firmware** **version**:

```bash
AT+CGMR
```

{% hint style="warning" %}
Example response:

HL7812.5.7.3.0&#x20;
{% endhint %}

Request the **IMSI** (International Mobile Subscriber Identity):

```
AT+CIMI
```

Request the **ICCID** (Integrated Circuit Card ID), which is the identification number of the iSIM&#x20;

```
AT%CCID
```

**Set the error reporting to verbose**, resulting in more descriptive error messages (optional):

```bash
AT+CMEE=1
```

### **Set the NTN Parameter** (enter the commands)

**airplane mode the radio**

```bash
AT+CFUN=4
```

**Enable iGNSS**

```
AT+GNSSSTART=0
```

it is crucial to wait until a valid GPS location is acquired before continuing operations. This ensures that the device is properly connected to the satellite network and can function accurately within its coverage. example response

{% hint style="success" %}
OK

+GNSSEV: 0,1

+GNSSEV: 1,1

+GNSSEV: 3,0

**+GNSSEV: 3,3**
{% endhint %}

**Status iGNSS**

<pre><code><strong>AT+GNSSLOC?
</strong></code></pre>

<details>

<summary>Example response: </summary>

```
+GNSSLOC:
Latitude: 31 Deg 44 Min 32.57 Sec N
Longitude: 34 Deg 59 Min 25.32 Sec E
GpsTime: 2025 6 22 14:25:14
FixType: 3D
HEPE: 8.20 m
Altitude: 268.700 m
AltUnc: 10.2 m
Direction: 
HorSpeed: 
VerSpeed:
```

</details>

**Stop iGNSS**

```
AT+GNSSSTOP
```

**Set the APN to** `data.mono`:

```json
AT+CGDCONT=1,"IP","data.mono"
```

#### Define the NB-IoT NTN &#x20;

<pre><code><strong>AT+KSRAT=3
</strong></code></pre>

**Lock the modem to a specific region/band**

```
--Multi bands 23,255,256--
AT+KBNDCFG=3,C000000000000000000000000000000000000000000000000000000000400000
Band 23  = AT+KBNDCFG=3,0000000000000000000000000000000000000000000000000000000000400000
Band 255 = AT+KBNDCFG=3,4000000000000000000000000000000000000000000000000000000000000000
Band 256 = AT+KBNDCFG=3,8000000000000000000000000000000000000000000000000000000000000000
```

{% hint style="info" %}
Although the modem may support many different NTN bands,&#x20;

23 = Canada

255 = L band Global (United States, Taiwan, Australia, New Zealand, Japan)&#x20;

256 = S band Europe
{% endhint %}

**Lock the modem to a GNSS mode to Internal GNSS Mode**

<pre><code><strong>AT%NTNCFG="POS","IGNSS","0"
</strong></code></pre>

#### **Reboot the Module**:

```bash
AT+CFUN=1,1
```

**Disable  the radio**

```bash
AT+CFUN=0
```

**Report** notification about Timing Advance calculation:

**Send registration status**

```
AT+CEREG=2
AT+KSREP=1
AT%NOTIFYEV="all",1
```

**Enable** **radio**

```
AT+CFUN=1
```

<details>

<summary>Example response: </summary>

```
OK
%NOTIFYEV:"EMMSTATE",4
+CEREG: 2
%NOTIFYEV:"SIMSTATE",3
+KSUP: 0
%NOTIFYEV: "SIB1"
%NOTIFYEV: "SIB2"
%NOTIFYEV: "SIB31"
%NOTIFYEV: "SIB1"
%NOTIFYEV: "SIB2"
%NOTIFYEV:"RRCSTATE",0
+CEREG: 0
%NOTIFYEV:"EMMSTATE",2
%NOTIFYEV:"ROAM",1
%NOTIFYEV:"EMMSTATE",9
+CEREG: 2
%NOTIFYEV: "SIB2"
%NOTIFYEV: "SIB31"
%NOTIFYEV:"RRCSTATE",1
%NOTIFYEV:"EMMSTATE",8
+CEREG: 2
%NOTIFYEV:"CSPS",0
%NOTIFYEV:"EMMSTATE",12
+CEREG: 5,"3A9D","0007DBBD",9
```

</details>

#### CEREG State Change Report Codes

The table below provides an overview of the possible values for CEREG state change reports, indicating the module's network registration status.

<table><thead><tr><th width="87">Value</th><th>Description</th></tr></thead><tbody><tr><td><strong>0</strong></td><td>Not registered, and the module is not searching for a network.</td></tr><tr><td><strong>1</strong></td><td>Registered to the home network.</td></tr><tr><td><strong>2</strong></td><td>Not registered, but the module is attempting to attach or searching for a network.</td></tr><tr><td><strong>3</strong></td><td>Registration denied by the network.</td></tr><tr><td><strong>4</strong></td><td>Unknown (for example, out of coverage) </td></tr><tr><td><strong>5</strong></td><td>Registered and roaming.</td></tr></tbody></table>

### Query the signal measurement&#x20;

request a specific network measurement, such as signal strength, noise levels, or other metrics:

```
AT%MEAS="8"
```

Example response: `%MEAS:Signal Quality:RSRP= -115,RSRQ= -15,SINR= -3,RSSI= -120.`&#x20;

## Test the connection by sending UDP payload&#x20;

{% hint style="warning" %}
When using Non-Terrestrial Networks, data can only be sent using UDP.
{% endhint %}

In order to send data using UDP, 4 AT Commands needs to be sent:

1. **Create UDP socket**
2. **Activate socket**
3. **Send UDP data**
4. **Close UDP Socket**

### **1. Create UDP socket**&#x20;

AT%SOCKETCMD="ALLOCATE",1,"UDP","OPEN","\<ip address>",\<port>

```
AT%SOCKETCMD="ALLOCATE",1,"UDP","OPEN","18.199.15.247",1055
```

Example response: <mark style="color:red;">`%SOCKETCMD:1`</mark>

### **2. Activate Socket**&#x20;

<pre><code><strong>AT%SOCKETCMD="ACTIVATE",1
</strong></code></pre>

Example response: <mark style="color:red;">`%SOCKETCMD:1`</mark>

### **3. Send UDP data**&#x20;

AT%SOCKETDATA="SEND",1,\<length>,"\<data>"

```
AT%SOCKETDATA="SEND",1,13,"48656C6C6F2C20776F726C6421"
```

Example response: <mark style="color:red;">`%SOCKETDATA:1,13`</mark>

{% hint style="warning" %}
Make sure to exactly count the number of characters you send, or you will receive an error.
{% endhint %}

**Request info UDP Socket**

```
AT%SOCKETCMD="INFO",1
```

Example response: <mark style="color:red;">`%SOCKETCMD:"ACTIVATED","UDP","10.22.243.30","18.199.15.247",12345,7`</mark>

### **4. Close UDP socket**

End your UDP session by closing the UDP socket.

```
AT%SOCKETCMD="DELETE",1
```

Expected response: <mark style="color:red;">`OK`</mark>

## Transition Between Satellite Network and Public Network

When transitioning between satellite and public networks using the Sierra Wireless Kit use the following commands:

#### Command for Switching to Public Network:&#x20;

```
AT+KSRAT=0
```

This command activates the CAT-M mode for public networks, allowing the device to switch from satellite connectivity to a cellular public network.

#### Command for Switching Back to Satellite Network &#x20;

```
AT+KSRAT=3
```

This command activates the NBNTN mode, returning the device to satellite network connectivity.

{% hint style="success" %}
**Great work on connecting the Sierra Wireless HL7810/HL7812 to Monogoto!** Have a look at the **Things** logs in the [**Monogoto Console**](https://console.monogoto.io/) to find more details about the established connection.
{% endhint %}

## Useful Links

* [Sierra Wireless HL78XX product page](https://www.sierrawireless.com/iot-modules/lpwa-modules/)
* [Sierra Wireless HL78XX Product Technical Specification](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2Fha3x6v64u23Y5f5IG1if%2F41114133%20HL781x%20Product%20Technical%20Specification%20r15.pdf?alt=media\&token=c8a8aad7-b447-4460-b59f-5dd3cca329ae)
* [Sierra Wireless HL78XX AT Command Reference](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2F3s96EwIoyWfbMSpyfjvU%2F41111821%20HL78xx%20AT%20Command%20Reference%20r24.pdf?alt=media\&token=4d38ebab-e864-48be-815b-5f9a96cd1347)
