> 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/loouq-mtc2-n9151-satellite-ntn-network.md).

# LooUQ MTC2-N9151 Satellite NTN Network

This guide provides the steps to connect the LooUQ MTC2-N9151 module, mounted on the UXplor development board, to Skylo satellite Non-Terrestrial Networks using a Monogoto SIM.

<div data-with-frame="true"><figure><img src="https://3922449203-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2FJgisMN8aPu7ROqSX9AAY%2FLooUQ%20MTC2-N9151.JPG?alt=media&amp;token=f4d3a54c-90b0-4ac6-ad4e-a966406558ab" alt=""><figcaption></figcaption></figure></div>

## Quick Navigation

1. [Set up the MTC2-N9151](#set-up-the-mtc2-n9151)
2. [Connect the MTC2-N9151 to Skylo](#connect-the-mtc2-n9151-to-skylo)
3. [Test the connection by sending UDP payload](#test-the-connection-by-sending-udp-payload)
4. [Switch Between NTN and Public Networks](#switch-between-ntn-and-public-networks)
5. [Useful Links](#useful-links)

## Set up the MTC2-N9151

The fastest way to get started is the LooUQ UXplor QuickStart (MTC2-N9151) for TN/NTN kit. It includes:

* [x] MTC2-N9151 module
* [x] UXplor development board
* [x] Taoglas Cyclone FXUB64 antenna (TN/NTN)
* [x] Taoglas FXP612 passive GNSS antenna
* [x] Monogoto Starter SIM
* [x] Power cable (USB-C)
* [x] Serial UART cable

### Hardware setup

1. Insert the Monogoto SIM into the slot on the bottom of the MTC2-N9151.&#x20;
2. Connect the Taoglas Cyclone antenna to the U.FL connector marked LTE.
3. Connect the Taoglas FXP612 GNSS antenna to the U.FL connector marked GNSS Int (passive antenna input).
4. Connect the serial UART cable (3.3V TTL) to the UXplor header:

* UXplor P0.05 UART-TX → cable RXD (White)&#x20;
* UXplor P0.04 UART-RX → cable TXD (Blue)
* UXplor GND → cable GND (Black)

5. Connect the USB-C cable to the UXplor board and switch the power switch ON. The green LED on the MTC2-N9151 turns on.

{% hint style="warning" %}
For the satellite connection, test outdoors with a clear view of the sky, and keep the Cyclone antenna standing on its edge as provided by the kit base.
{% endhint %}

### Open a serial connection with the MTC2-N9151

You can use the Serial Terminal from the [nRF Connect for Desktop](https://www.nordicsemi.com/Products/Development-tools/nRF-Connect-for-Desktop), or any program of choice (e.g. PuTTY for Windows, or screen/minicom/miniterm for macOS/Linux).

Select the COM port of the USB-Serial cable and set:

* Baud rate: 115200
* 8 data bits, 1 stop bit, no parity
* No flow control (RTS/CTS)

{% hint style="info" %}
Keep the AT Commands manual next to you for more details about the commands. [Click here](https://docs.nordicsemi.com/bundle/ref_at_commands_nrf91x1/page/REF/at_commands/intro_nrf91x1.html) to download the latest version.
{% endhint %}

### Check SIM Status

**Enable the module**

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

**Verify the SIM is ready**

```
AT+CPIN?
```

Expected response: `+CPIN: READY`

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

### Query Device Information

Useful for confirming firmware, hardware and SIM identity.

**Request the firmware version**

```
AT+CGMR
```

Example response: `mfw_nrf9151-ntn_1.0.0`

{% hint style="warning" %}
The minimum required modem firmware is `mfw_nrf9151-ntn_1.0.0`
{% endhint %}

**Request the hardware version**

```
AT%HWVERSION
```

Example response: `%HWVERSION: nRF9151 LACA A1A`

**Request the IMSI**

```
AT+CIMI
```

**Request the ICCID** (Integrated Circuit Card ID), which is the identification number of the SIM

```
AT%XICCID
```

### Acquire GPS Location

To establish a satellite connection, a location has to be set.

**Put the radio in flight mode**

```
AT+CFUN=4
```

**Enable GNSS**

```
AT%XSYSTEMMODE=0,0,1,0,0
```

**Enable the on-board GNSS LNA**&#x20;

```
AT%XCOEX0=1,1,1570,1580
```

**Activate GPS within the MTC2-N9151 module**

```bash
AT+CFUN=31
```

**Start the GNSS scan**

```bash
AT#XGNSS=1,0,0,0
```

{% hint style="warning" %}
It can easily take up multiple minutes to establish an initial GNSS fix.
{% endhint %}

Example response:

```bash
#XGNSS: 1,1
#XGNSS: 52.089769,4.313237,56.617798,14.694924,0.126635,0.000000,"2026-09-30 18:00:31"
```

{% hint style="warning" %}
Save the location as we need it later on.
{% endhint %}

**Shutdown the GPS**

```bash
AT#XGNSS=0
```

***

## Connect the MTC2-N9151 to Skylo

**Disable radio**

```
AT+CFUN=0
```

**Enable NTN mode** (NB-IoT over satellite)

```
AT%XSYSTEMMODE=0,0,0,0,1
```

**Lock the modem to one or multiple NTN satellite bands**

```
AT%XBANDLOCK=2,,"23,255,256"
```

{% hint style="info" %}
23 = Canada \
255 = L band Global (US, Taiwan, Australia, New Zealand, Japan)\
256 = S band Europe
{% endhint %}

### Set GPS location

Format:

```
AT%LOCATION=<mode>,"<lat>","<long>","<alt>",<accuracy>,<validity>
```

**Set the location** which has just been acquired, e.g.:

```bash
AT%LOCATION=2,"52.08995","4.31301","16",100,0
```

**Validate if the location was successfully set**

```bash
AT%LOCATION?
```

### Set APN

```
AT+CGDCONT=0,"IP","go.mono"
```

### Subscribe to network status events

CEREG network registration status events

```
AT+CEREG=5
```

Subscribe to error codes from the network

```
AT+CNEC=24
```

Subscribe to connection state changes

```
AT+CSCON=3
```

Enable modem domain event reporting

```
AT%MDMEV=2
```

Enable the radio

```
AT+CFUN=1
```

Example responses:

```
%MDMEV: SEARCH STATUS 1
+CEREG: 2,"3AAE","0021CC6E",14
%MDMEV: PRACH CE-LEVEL 0
+CSCON: 1,7,4
%MDMEV: SEARCH STATUS 2
+CEREG: 5,"3AAE","0021CC6E",14,,,"11100000","00111000"
```

**CEREG State Codes**

<table><thead><tr><th width="220.4140625">Value</th><th>Meaning</th></tr></thead><tbody><tr><td>0</td><td>Not registered, not searching</td></tr><tr><td>1</td><td>Registered (home network)</td></tr><tr><td>2</td><td>Not registered, searching</td></tr><tr><td>3</td><td>Registration denied</td></tr><tr><td>4</td><td>Unknown / out of coverage</td></tr><tr><td>5</td><td>Registered &#x26; roaming </td></tr></tbody></table>

### Radio & Signal Checks

Check the signal quality

```
AT+CESQ
```

Example response: `+CESQ: 99,99,255,255,15,53`

{% hint style="info" %}
`+CESQ` returns 6 values separated by commas. The last 2 values indicate the RSRQ (Reference Signal Received Quality) and RSRP (Reference Signal Received Power) respectively. RSRQ is indicated with a value between 0 and 34 , RSRP with a value between 0 and 97. Higher values represent better signal quality. For more details [click here](https://docs.nordicsemi.com/bundle/ref_at_commands_nrf91x1/page/REF/at_commands/mob_termination_ctrl_status/cesq_set.html).
{% endhint %}

**Request network info**

```
AT%XMONITOR
```

Example response:

```
5,"","","90198","3A9D",14,255,"0007DBBD",5,228841,9,19,"","11100000","00111000","11100000"
```

***

## Test the Connection by Sending UDP Payload

To send UDP data, send the following AT commands:

1. **Create UDP socket**

```
AT#XSOCKET=1,2,0
```

Expected response: `#XSOCKET:0,2,17`

2. **Connect socket**

Replace `<ip-address>` with the ip address of your UDP server

```
AT#XCONNECT="<ip-address>",<port>
```

**Set the IP address** and port, e.g.:

```
AT#XCONNECT="18.199.15.247",1055
```

Expected response: `#XCONNECT:1`

{% hint style="info" %}
You can test the UDP connection with the Ubidots platform which runs a UDP server. [Learn more](https://docs.monogoto.io/developer/cloud-integrations/ubidots).
{% endhint %}

3. **Send UDP data**

```
AT#XSEND="Hello LooUQ"
```

Example response: `#XSEND:11`

4. **Close the UDP socket**

```
AT#XSOCKET=0
```

Expected response: `#XSOCKET:0,"closed"`

{% hint style="info" %}
**Great work on connecting the LooUQ MTC2-N9151 to Monogoto.** Have a look at the Things logs in the [Monogoto Hub](https://hub.monogoto.io/) to find more details about the established connection.
{% endhint %}

## Switch Between NTN and Public Networks

Use the following commands to switch from NTN to public networks:

**Disable radio**

```
AT+CFUN=0
```

### Enable public networks&#x20;

```
AT%XSYSTEMMODE=1,1,0,0,0
```

**Enable radio**

```
AT+CFUN=1
```

### Switch Back to Satellite NTN

**Disable radio**

```
AT+CFUN=0
```

**Enable NTN**

```
AT%XSYSTEMMODE=0,0,0,0,1
```

**Enable radio**

```
AT+CFUN=1
```

***

## Useful Links

* [LooUQ MTC2-N9151 Getting Started Guide](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2FFfne8y9N8itAA9lST1ID%2FMTC2-N9151%20Getting%20Started.pdf?alt=media\&token=13c1971d-f6bb-47b7-b5df-bf28a2240427)
* [LooUQ MTC2-N9151 NTN QuickStart Guide](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2FjTqpBQTYqcETWs3DkLbs%2FMTC2-N9151%20NTN%20QuickStart.pdf?alt=media\&token=5b3dca9d-9887-4bee-83eb-df31e2632439)
* [LooUQ MTC2-N9151 product page](https://www.loouq.com/mtc2-n9151)
* [LooUQ MTC2-SW board support repository](https://github.com/LooUQ/LooUQ-MTC2-SW)
* [LooUQ Skylo NTN field-testing firmware](https://github.com/LooUQ/Skylo-NTN-FieldTesting)
