# Quectel BG95-MX

The **Quectel BG95-M** series support LTE Cat M1 technology. The M3 and M5 also come with GSM/EDGE support. This tutorial highlights the [Quectel BG95-M3](https://www.quectel.com/product/lpwa-bg95-m3) which supports LTE Cat M1, NB-IoT2 and EGPRS and is compliant with 3GPP release 14.

![](/files/xuhPAqw34rFZnbzn05nP)

### Prerequisites

* Monogoto SIM
* [BG95-M3](https://www.quectel.com/product/lpwa-bg95-m3)
* [UMTS & LTE EVB Kit](https://www.quectel.com/product/umts-lte-evb-kit)

### Quick Navigation

* [Set up UMTS & LTE EVB Kit (if applicable)](#set-up-umts-and-lte-evb-kit)
* [Connect BG95 to Monogoto](#connect-the-bg95-m3-to-monogoto)
* [Sending a PING](#test-the-connection-by-sending-a-ping)
* [Useful Links](#useful-links)

## Set up UMTS & LTE EVB Kit (if applicable)

![Quectel EVB kit with BG95-M3 modem](/files/hYn5VH7gTlHXhafkIbeb)

#### Set up the EVB Kit

* Connect the **Quectel BG95-M3 modem** to the EVB kit.&#x20;
* **Connect the LTE antenna** and (optionally) GPS antenna
* Insert the **Monogoto SIM**

#### **Connect you PC to the EVB Kit**

Use the USB to UART converter cable to connect your computer to the **COM1 MAIN** port of the EVB Kit

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

Connect to the EVB kit using a **terminal program**. You can use PuTTY for Windows, or screen, minicom or miniterm for Mac or Linux.

**Power the EVB Kit** using the USB to micro USB cable and switch the **POWER** button to **ON**. The **POWER LED** will turn on <mark style="color:red;">**RED**</mark>.&#x20;

Press and hold the **PWRKEY** button for 1 second, the **STATUS** light will light up on <mark style="color:green;">**GREEN**</mark>, the **NET\_STA** LED will start blinking <mark style="color:blue;">**BLUE**</mark>.

Once the modem has started, it will report:

```
RDY
APP RDY
```

Enter `AT`, if the connection with the BG95 modem has been established, the board will answer with `OK`.

## Connect the BG95 to Monogoto

{% hint style="info" %}
Keep the **AT Commands manual** next to you for more details about the commands. [**Click** ](https://www.quectel.com/wp-content/uploads/2021/03/Quectel_BG95BG77BG600L_Series_QCFG_AT_Commands_Manual_V2.0-1.pdf)**here** to download the latest version.
{% endhint %}

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

Reset non-volatile memory:

```
AT+QPRTPARA=1 
```

Restore factory settings:

```
AT+QPRTPARA=3
```

Reboot module:

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

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

```bash
AT+CMEE=2
```

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

```
AT+CPIN?
```

{% hint style="warning" %}
If you receive an error, the SIM may not be inserted properly or the SIM is protected with a PIN. By default, Monogoto SIMs are not PIN protected.
{% endhint %}

### Query device information

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+CCID
```

### 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:\
`0` indicates **GSM**\
`8` indicates **LTE Cat-M1** (also referred to as eMTC)\
`9` indicates **NB-IoT**

#### 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**](/getting-started/global-public-coverage.md).

{% hint style="info" %}
To find the **profile** of your SIM, visit the [**Monogoto Console**](https://console.monogoto.io/), open the page **Things** ![](/files/OWVV2DjKOVW5iaNl1NcG) and select a specific **Thing**. Scroll down to **Mobile Identities** to find your profile in the column **Network Provider Name**.

![](/files/0IINqu41pSHJSRJYujvX)
{% 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",8
```

Replace `XXXXX` with the **MCCMNC** code of your operator, for example`"20404"` for Vodafone NL. Use `8` for **LTE 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 %}

#### Define the cellular band(s) (optional)

It is possible to **lock the modem to one or more specific bands**. This may result in a faster boot cycle as the modem does not need to scan for available bands at startup.

{% hint style="info" %}
Supported LTE-M bands for the BG95-M1, -M2, -M3, -M5 and -MF are: `1 2 3 4 5 8 12 13 18 19 20 25 26 27 28 66 85`

The BG95-M4 supports in addition to the bands mentioned above: `31 72 73`
{% endhint %}

{% hint style="warning" %}
Although the modem may support many different bands, your local network operator may not. Have a look at the [**LTE Cat-M1 overview**](broken://pages/GDSRxI85QWE6Z2lsLeS3) to find the available band(s) in your region.
{% endhint %}

To lock the modem to a specific band, a hexadecimal value representing the band needs to be sent to the modem. To **lock the modem to LTE-M band 20**, send:&#x20;

```
AT+QCFG="band",0,0x80000,0
```

{% hint style="info" %}
For information about setting specific LTE bands, see [**QCFG AT Commands Manual**](<https://www.quectel.com/wp-content/uploads/2021/03/Quectel_BG95BG77BG600L_Series_QCFG_AT_Commands_Manual_V2.0-1.pdf >), chapter **3.1.1.4**.
{% endhint %}

To test if the band(s) is properly set, enter the command:&#x20;

```
AT+QCFG="band"
```

Example response: `+QCFG: "band",0xf,0x80000,0x10004200000000090e189f`\
The first hex number represents the GSM bands, followed by the LTE-M bands and NB-IoT bands.

#### Query Network information

To information about the technology used, the network provider and cellular band, enter:

```
AT+QNWINFO
```

Example response: `+QNWINFO: "eMTC","20408","LTE BAND 20",6400`.&#x20;

#### Configure Radio Access Technology (RAT)

Configure the modem to only use LTE Cat-M1, not NB-IoT:

```
AT+QCFG="iotopmode",0,1
```

The last variable: `1`, instructs the modem to process the command immediately. When using: `0`, the takes effect after a reboot.&#x20;

Specify the modem search sequence starting with **LTE Cat-M1** (indicated with `02`) followed by **GSM** (indicated with `01`) and **NB-IoT** (`03`):&#x20;

```
AT+QCFG="nwscanseq",020103,1
```

### 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+CGACT=1,1
```

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

```
AT+CGACT?
```

Expected response: `+CGACT: 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 Quectel 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 5 PINGs** to IP address `8.8.8.8`:

```
AT+QPING=1,"8.8.8.8",5
```

Example response:

```
+QPING: 0,"8.8.8.8",32,543,255
+QPING: 0,"8.8.8.8",32,396,255
+QPING: 0,"8.8.8.8",32,262,255
+QPING: 0,"8.8.8.8",32,299,255
+QPING: 0,4,4,0,262,543,375
```

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

A UDP payload test when the modem has an active data connection.

**Send UDP Payload** to the IP address `220.180.239.212`:

```
AT+QIOPEN=1,0,"TCP","220.180.239.212",8305,0,0
```

&#x20;response:

```
OK
+QIOPEN: 0,0
```

**Send UDP Socket**

```
  AT+QISEND=0,8        //Send 8 bytes
> 01234567            //8 Bytes of Data
```

&#x20;response:

```
SEND OK
+QIURC: "recv",0
```

**Close UDP Socket**

```
AT+QICLOSE=0
```

&#x20;response:

```
OK
+QIURC: "pdpdeact",1
```

{% hint style="success" %}
**Great work on connecting the Quectel BG95 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 %}

## **Troubleshooting**&#x20;

#### **Network reactivation**

When cellular modems are idle for a long period of time, cell towers might drop the data connection to save resources.&#x20;

To test if the modes still have an active session, the command `AT+CSQ` can be sent. If no value or the value `99` is returned, the device lost its session with the cell tower and the modem needs to be re-initialized. This can be done by rebooting the modem using the command `AT+CFUN=1,1`

## Useful Links

* [Quectel BG95-M3 product page](https://www.quectel.com/product/lpwa-bg95-m3)
* [BG95 AT Commands Manual](https://www.quectel.com/wp-content/uploads/2021/03/Quectel_BG95BG77BG600L_Series_QCFG_AT_Commands_Manual_V2.0-1.pdf)
* [BG95 AT Commands Manual](https://www.quectel.com/wp-content/uploads/2021/03/Quectel_BG95BG77BG600L_Series_AT_Commands_Manual_V2.0-3.pdf) (Quectel specific commands)
* [BG95-M3 specifications](https://www.quectel.com/wp-content/uploads/pdfupload/Quectel_BG95_Series_LPWA_Specification_V1.5.pdf)
* [UMTS & LTE EVB User Guide](https://www.quectel.com/wp-content/uploads/pdfupload/Quectel_UMTS%20&%20LTE_EVB_User_Guide_V2.1.pdf)


---

# 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/getting-started/general-device-configurations/iot-devices/quectel-bg95-mx.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.
