# Arduino Portenta H7

The **Portenta H7**, paired with the **Portenta Cat. M1/NB IoT GNSS Shield** is a high-performance Arduino development platform designed for advanced IoT and embedded applications requiring low-power, wide-area cellular connectivity. Supporting LTE Cat-M1 and NB-IoT, it ensures reliable long-range communications while maintaining energy efficiency, making it ideal for battery-powered or remote deployments. The integrated GNSS functionality provides precise location tracking, while seamless compatibility with the Arduino ecosystem enables rapid prototyping and secure cloud integration. This kit is well-suited for smart city infrastructure, asset tracking, environmental monitoring, and other mission-critical use cases that demand robust performance, versatility, and global connectivity.

![](https://3922449203-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2FnsBBmKgAIL6LE7w9yr4m%2FArduino%20Portenta%20H7.png?alt=media\&token=e5aa4af6-5f15-4357-a730-e793bd853995)

### Prerequisites

* [Portenta H7 board](https://docs.arduino.cc/hardware/portenta-c33/)
* [Portenta Cat. M1/NB IoT GNSS Shield](https://docs.arduino.cc/hardware/portenta-cat-m1-nb-iot-gnss-shield/#tutorials)
* Monogoto Cellular SIM
* [Arduino IDE (Version 2.3.6 or later)](https://www.arduino.cc/en/software/)
* [Arduino Cellular library](https://docs.arduino.cc/libraries/arduino_cellular/)
* [ModemTerminal Arduino sketch files](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2FHbjZZGe0NXzMfv7MEx9c%2FGSMSerialPassthrough.zip?alt=media\&token=205d9476-a6bc-4819-b467-9ffe1eca3533)

## **Hardware Connection Instructions**

![](https://3922449203-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2Fl9NYCc8ALqITaxvt3cvo%2FArduino%20Portenta%20H7AndCatM1.png?alt=media\&token=061bba36-ad9e-4196-9a94-7db0f78bd866)

* Connect the **Portenta Cat. M1/NB IoT GNSS Shield** to the Portenta H7.&#x20;
* Connect the **LTE (RF OUT) antenna** and the **GPS antenna** to the Portenta Cat. M1/NB IoT GNSS Shield
* Power the board via USB-C.

#### **Connect your PC to the** Portenta H7&#x20;

Use the [USB-C to USB cable ](https://store.arduino.cc/products/usb-cable2in1-type-c)to connect your computer to the  **Portenta H7** port.

<figure><img src="https://3922449203-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2FPdPfr4SaSvPKsDaOws9Y%2FArduino%20Portenta%20H7_Select.png?alt=media&#x26;token=c439ecbf-992d-41c3-aaa4-5622da3852bb" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Bring Your Projects to Life with [Arduino IDE 2.3.6 Software](https://www.arduino.cc/en/software/)&#x20;
{% endhint %}

Run the Arduino IDE 2.3.6 to open the Serial Monitor.

<figure><img src="https://3922449203-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2FhVACQZtK6LADiCWAAVDw%2FArduino%20Portenta%20H7_Serial%20Monitor.png?alt=media&#x26;token=76f214b3-5b61-46e4-9ca4-e980ab16b358" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Install the [Cellular library ](https://docs.arduino.cc/libraries/arduino_cellular/)toolkit with [Sketch ModemTerminal files](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2FHbjZZGe0NXzMfv7MEx9c%2FGSMSerialPassthrough.zip?alt=media\&token=205d9476-a6bc-4819-b467-9ffe1eca3533)
{% endhint %}

## Connect the Telit Cinterion TX62-W to Monogoto

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

```bash
ATI
```

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

```
AT+CIMI
```

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

```bash
AT^SCID
```

### Network Configuration

It is possible to let the modem select the network automatically, or to manually define a network to connect with.

#### **Option 1: Automatic Network Selection**

To set the modem to **automatic network selection** enter the command:

```bash
AT+COPS=0
```

Check the **network and cellular technology the modem** is currently using:

```
AT+COPS? 
```

Expected response: `+COPS: 0,0,"<name of operator>",X`. The last digit indicates the cellular technology:\
`7` indicates **Cat.M1**\
`9` indicates **Cat.NB1**

#### Option 2: Manual Network Selection

Start with searching for available networks:

```
AT+COPS=?
```

{% hint style="warning" %}
It may take several minutes before the modem responds.&#x20;
{% endhint %}

The modem responds with the **names** and the **MCCMNC** codes of the available networks. It also shows the cellular technologies the networks support:&#x20;

```
+COPS: (1,"vodafone NL","voda NL","20404",8),(1,"NL KPN","NL KPN","20408",0),(1,"vodafone NL","voda NL","20404",9),(1,"T-Mobile NL","TMO NL","20416",0),(1,"NL KPN","NL KPN","20408",8),(1,"vodafone NL","voda NL","20404",0),(1,"T-Mobile NL","TMO NL","20416",8),(1,"T-Mobile NL","TMO NL","20416",9),,(0,1,2,3,4),(0,1,2)

OK
```

To find which of the networks Monogoto has **roaming agreements** with, review the [**Coverage lists**](https://docs.monogoto.io/getting-started/global-public-coverage).

{% hint style="info" %}
To find the **profile** of your SIM, visit the [**Monogoto Console**](https://console.monogoto.io/), open the page **Things** ![](https://3922449203-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2FfH8DCNlIW5R2VRiHwMG5%2FThings.png?alt=media\&token=2a63b922-cb41-4271-803e-ba9eab36566d) and select a specific **Thing**. Scroll down to **Mobile Identities** to find your profile in the column **Network Provider Name**.

![](https://3922449203-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2FddQeceTZxjtQYFPAHe95%2Fimage.png?alt=media\&token=4a3f1cbf-3922-48f9-af5d-2e292bd76b72)
{% endhint %}

Check the **network and cellular technology** the modem is currently using:

```
AT+COPS? 
```

Expected response: `+COPS: 0,0,"<name of operator>",X`. The last digit indicates the cellular technology.

**Manually set the network and the cellular technology**:

```
AT+COPS=1,2,"XXXXX",7
```

Replace `XXXXX` with the **MCCMNC** code of your operator, for example`"20404"` for Vodafone NL. Use `7` for **Cat.M1**.

**Check the radio signal strength and signal quality:**

```bash
AT+CSQ
```

{% hint style="info" %}
`+CSQ` returns 2 values separated by a comma. The first value represents the **signal strength** and provides a value between 0 and 31; higher numbers indicate better signal strength. The second value represents the **signal quality** indicated by a value between 0 and 7. If `AT+CSQ` returns `99,99`, the signal is undetectable or unknown.
{% endhint %}

#### Query Network information

This command returns the Radio Access Technology (RAT), MCCMNC operator code, and LTE band currently in use.

```
AT^SMONI
```

Example response: `^SMONI: Cat.M1,9260,28,-,FDD,204,04,18BB,010A20C,330,42,-82,-13,NOCONN,3`&#x20;

### Network Activation

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

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

Validate if the **APN** is set correctly:

```
AT+CGDCONT?
```

Expected response: `+CGDCONT: 1,"IP","data.mono","0.0.0.0",0,0,0,0,0,0`

**Activate the PDP (packet data protocol) context**:

```
AT^SICA=1,1
```

**Test** if the PDP context is activated:

```
AT^SICA?
```

Expected response: `^SICA: 1,1`

#### Validate if your device received an **IP address**:

```bash
AT+CGPADDR
```

Expected response: `+CGPADDR: 1,XX.XXX.XX.XXX`

{% hint style="success" %}
Do you see an IP address? **Congratulations! You’ve successfully connected the Telit modem to Monogoto 🎉**
{% endhint %}

## Test the connection by sending a PING

A PING test can be performed to test if the modem has an active data connection with a mobile network.

{% hint style="warning" %}
When cellular modems are idle for a long period of time, cell towers might drop the data connection to save resources. Sending regular PINGs is a good method for testing the data connection, as well as for keeping the connection alive because the operator registers your device as being actively used.
{% endhint %}

**Send 2 PINGs** to IP address `8.8.8.8`:

```
AT^SISX="Ping",1,"8.8.8.8",2
```

Example response:

```
^SISX: "Ping",1,1,"8.8.8.8",186
^SISX: "Ping",1,1,"8.8.8.8",151
^SISX: "Ping",2,1,2,2,0,0
^SISX: "Ping",3,1,151,186,168
```

## Useful Links

* [Portenta H7 board](https://docs.arduino.cc/hardware/portenta-c33/)
* [Portenta Cat. M1/NB IoT GNSS Shield](https://docs.arduino.cc/hardware/portenta-cat-m1-nb-iot-gnss-shield/#tutorials)
* [Telit Cinterion TX62-W AT Command Manual](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M0mPxGpottOEfcucXOR%2Fuploads%2FTpbqvEhHtZAeYkpGFQ3c%2FTC_TX62-W_AT_Command_Set_User_Guide_01.200_r0.pdf?alt=media\&token=66ad69c4-030c-46da-948d-6720ef343243)
