# Thales Cinterion Modules with Super SIM

## Cellular modules covered on this page <a href="#cellular-modules-covered-on-this-page" id="cellular-modules-covered-on-this-page"></a>

* [EXS62-W](#exs62-w-cat-m1-nb-iot)

***

## General getting started information <a href="#general-getting-started-information" id="general-getting-started-information"></a>

Please refer to the main Knowlegdebase page for [modem-independent configuration tips](https://docs.korewireless.com/en-us/supersim/cellular-module-knowledgebase).

***

## EXS62-W `Cat-M1, NB-IoT` <a href="#exs62-w-cat-m1-nb-iot" id="exs62-w-cat-m1-nb-iot"></a>

{% hint style="danger" %}
Super SIM does not support NB-IoT.
{% endhint %}

### Initialization <a href="#initialization" id="initialization"></a>

Only configure the modem's Radio Access Technology (RAT) preference for Cat-M1. To do so, issue `AT^SXRAT=7,7`.

The first parameter is the RAT to connect to immediately. The second is the preferred RAT on re-connection.

A value of `8` indicates NB-IoT, and `10` indicates Cat-M1/NB-IoT dual mode. Do not use `8`, and we strongly recommend that you do not select `10`. This is the default and so you should always command the module to favor Cat-M1. This prevents the modem from spending time attempting to attach to NB-IoT networks, if any are nearby, only to be rejected.

### Data-centric attach mode <a href="#data-centric-attach-mode" id="data-centric-attach-mode"></a>

To set the EXS62-W to force data-centric attachment, issue:

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

The `CEMODE` parameter's value is as follows:

`0` = PS mode 2: EPS only, data centric `2` = CS/PS mode 2: data centric

This setting is non-volatile and implemented when the modem is reset.

### Bring up a data connection <a href="#bring-up-a-data-connection" id="bring-up-a-data-connection"></a>

1. Set the APN: `AT+CGDCONT=1,"IP","super"`.
2. Activate a PDP context: `AT^SICA=1,1`.

The first parameter of `AT^SICA` is the required action: `1` for enable, `0` for disable. The second parameter is the ID of the PDP context to be used to host the connection — it should match the value used in the `AT+CGDCONT` command.

Check the device's IP address with `AT+CGPADDR=1`.

### Perform a ping <a href="#perform-a-ping" id="perform-a-ping"></a>

To perform a ping to a remote host after bringing up a connection as described above, issue `AT^SISX=Ping,1,"8.8.8.8",5,5000`. This will yield:

```bash
^SISX: "Ping",1,1,"8.8.8.8",546
^SISX: "Ping",1,1,"8.8.8.8",515
^SISX: "Ping",1,1,"8.8.8.8",457
^SISX: "Ping",1,1,"8.8.8.8",443
^SISX: "Ping",1,1,"8.8.8.8",375
^SISX: "Ping",2,1,5,5,0,0
^SISX: "Ping",3,1,375,546,467
OK
```

#### Perform an HTTP GET <a href="#perform-an-http-get" id="perform-an-http-get"></a>

1. Set at least one DNS server. The first argument is the PDP Context ID: `AT^SICS=1,"dns1","8.8.8.8"`
2. Activate the data connection: `AT^SICA=1,1`
3. Configure the HTTP operation's Internet service profile. This is referenced by its ID, in the range 0-9:
   1. Set profile 0's service type to HTTP: `AT^SISS=0,srvtype,"http"`
   2. Set the connection ID to match that of the current PDP context: `AT^SISS=0,conid,"1"`
   3. Set the target URL, including the path: `AT^SISS=0,address,"http://ifconfig.co/ip"`**Note** You can specify HTTP by including the protocol as a URL prefix, or by adding `:80` to indicate the required port.
   4. Specify the request's HTTP method: `AT^SISS=0,cmd,"get"`
4. Start the Internet service: `AT^SISO=0`
5. The modem will attempt to make the request. You may see these URCs as the response is processed:

   ```bash
   ^SIS: 0,0,2200,"Http connect 172.67.133.228:80"
   ^SIS: 0,0,2201,"HTTP/1.1 200 OK"
   ^SIS: 0,0,2201,"Content-Length: 13"
   ^SISR: 0,1
   ```
6. The last line above appears when there is data available for you to read. In this case, the header data shows how much. Read 13 bytes: `AT^SISR=0,13`
7. You will see:

   ```bash
   ^SISR: 0,13
   44.204.32.14
   OK
   ```
8. Watch for the URC (Unsolicited Response Code) `^SISR: 0,2`. This indicates that all the available data has been read. If you don't see this — perhaps the response's content length was much larger and you only read a portion of it — continue to issue `AT^SISR=0,<NUMBER_OF_BYTES_TO_READ>` commands until all the data has been read — i.e., you receive `^SISR: 0,2`
9. Close the Internet service: `AT^SISC=0`

{% hint style="info" %}
If you need to provide extra request headers, such `Authorization: Basic <API_KEY>` or a custom header required by your server, issue `AT^SISS=0,hcprop,"<HEADERS>"` when you are configuring your Internet service profile.

Pass each header in the form `<key>: <value>`. Multiple headers can be included by separating them with the sequence `\0d\0a`. Don't add a separator after the last header and ensure your headers string is 255 bytes or less.

**Tip** If you wish to include a `User-Agent` header, *don't* add it to your headers string but instead supply it to the module with `AT^SISS=0,hcuseragent,"<USER_AGENT>"`. This will make room in the modem's header store for other headers.
{% endhint %}

### Perform an HTTPS GET <a href="#perform-an-https-get" id="perform-an-https-get"></a>

1. Initialize the module's certificates: `AT^SSECUA="CertStore/TLS/PreconfigureCerts"`
2. Set a DNS server: `AT^SICS=1,"dns1","8.8.8.8"`
3. Activate the connection: `AT^SICA=1,1`
4. Configure the operation's Internet service profile:
   1. Set profile 1's service type to HTTP: `AT^SISS=1,srvtype,"http"`
   2. Set the connection ID to match that of the current PDP context ID: `AT^SISS=1,conid,"1"`
   3. Set the target URL, including the path: `AT^SISS=1,address,"https://jsonplaceholder.typicode.com/todos/1"`**Note** You can specify HTTPS by including the protocol as a URL prefix, or by adding `:443` to indicate the required port.
   4. Specify the request's HTTP method: `AT^SISS=1,cmd,"get"`
5. Open the Internet service: `AT^SISO=1`
6. The connection will be attempted. You will see these URCs:

   ```bash
   ^SIS: 1,0,2200,"Http connect 172.67.131.170:443"
   ^SIS: 1,0,2201,"HTTP/1.1 200 OK"
   ^SIS: 1,0,2201,"Content-Length: 83"
   ^SISR: 1,1
   ```
7. The last line above indicates there is data available for you to read. In this case, the header data shows how much. Read 83 bytes: `AT^SISR=1,83`
8. You will see:

   ```bash
   ^SISR: 1,83
   {
      "userId": 1,
      "id": 1,
      "title": "delectus aut autem",
      "completed": false
   }
   OK
   ```
9. Watch for the URC `^SISR: 1,2`, which indicates that all the available data has been read. If you don't see this — perhaps the content length was much larger and you only read a portion of it — continue to issue `AT^SISR=1,<NUMBER_OF_BYTES_TO_READ>` commands until all the data is read — i.e., you receive `^SISR: 1,2`
10. Close the Internet service: `AT^SISC=1`

### Perform an HTTP(S) POST <a href="#perform-an-https-post" id="perform-an-https-post"></a>

Sending data from the modem via an Internet-hosted API follows the paths outlined above for the HTTP and HTTPS protocols. You call `AT^SISS=0,cmd,"post"` instead of `AT^SISS=0,cmd,"get"`.

The EXS62-W provides a way to load up a small amount (1-255 bytes) of body data: issue `AT^SISS=0,hccontent,"<DATA_AS_STRING>"` and `AT^SISS=0,hccontlen,0`.

If the size of the data you wish to send is greater than 255 bytes, set the size with `AT^SISS=0,hccontlen,<SIZE_IN_BYTES>` and then upload data to the module after opening the Internet service with `AT^SISO=0`. Issue `AT^SISW=0,<CHUNK_SIZE>` to trigger the modem to input the data over the UART. Up to 1500 bytes can be sent to the modem at a time, and each chunk will be sent out as they are received from your application.

### Low-power modes <a href="#low-power-modes" id="low-power-modes"></a>

The EXS62-W supports the eDRX and PSM low-power modes. The commands to enable each of these are:

```bash
AT+CEDRXS=1
AT+CPSMS=1
```

*See also `AT^SEDRXS` in the EXS62-W AT Commands Manual for further eDRX settings, and `AT+CEDRXRDP` to read dynamic eDRX parameters.*

Using these features, but especially PSM, can make the modem inaccessible to the terminal during its sleep time. It's best to experiment with these features locally. To disable all power saving, send:

<pre class="language-bash"><code class="lang-bash">AT+CEDRXS=0
<strong>AT+CPSMS=0
</strong></code></pre>

You can learn more about implementing these modes in our [low-power usage documentation](https://docs.korewireless.com/en-us/supersim/cellular-module-knowledgebase/low-power-optimization-for-cellular-modules).

### Known issues <a href="#known-issues" id="known-issues"></a>

The EXS62-W does not support `AT+CCID` to retrieve the SIM's ICCID. Instead, issue `AT^SIND?` and look for the line commencing `^SIND: iccid,0`.

### Additional resources <a href="#additional-resources" id="additional-resources"></a>

• [EXS62-W AT Commands Manual](https://www.thalesgroup.com/en/markets/digital-identity-and-security/iot/iot-connectivity/products/iot-products/exs62-w-global-mtc) *Thales sign-in required*
