# 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.monogoto.io/ntn-satellite-networks/ntn-certified-devices/ntn-certified-modules/sierra-wireless-hl7810-hl7812-satellite-ntn-network.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
