Drivers Sequans

EBV-IoT Sequans GM01Q Connectivity Shield offers a broad range of wired connectivity options, including a Micro USB port, PMOD extension connector, and SEEED connector with additional I2C lines (to name a few). Geotab selects Sequans for its next gen vehicle tracking devices. Enhance driver safety, and achieve stronger compliance to regulatory changes. The company's products are represented and sold. The cellular extension board — Sequans’ GM01Q STMod — adds LTE-M and NB-IoT connectivity to any STM32 Discovery board using Sequans’ Monarch-based GM01Q module. The extension board and its related software in the STM32Cube library provide developers with a powerful and simplified IoT development kit that is packed with drivers and easy. With this board, developers can easily prototype their IoT applications using STMicroelectronics’ STM32 and Sequans LTE-M/NB-IoT modem. Sequans GM01Q-STMOD works with any STM32-based DISCOVERY kit that features a STMod+ connector as well as with Nucleo kits by using X-NUCLEO-STMODA1. Sequans at CES 2021 January 6, 2021; Georges Karam talks about 5G with James Brehm & Associates August 31, 2020; Utilities Companies Adopt Cost-Effective 5G and 4G IoT Connectivity For Smart Meters August 28, 2020; Sequans IoT Newsletter — Summer 2020 August 10, 2020.

sku: NL-SW-LTE-SVZM20

The Skywire LTE-M embedded modem was the first modem to be end-device certified on the Verizon 4G LTE Network. This low-power, low-cost embedded modem features a U.FL port for antenna flexibility and is pin-compatible, enabling future-proof migration to new technologies.

Skywire embedded modems dramatically reduce the cost, risks and timelines of IoT product development. With known-good RF engineering and fully validated software, Skywire allows you to focus on your application and not engineering cellular radios. Standardized connectivity gives you flexibility to update and alternate radios for new geographies, carriers and technologies. Further, our embedded modems are “End-Device Certified”, meaning your end-product will not need to go through the complex process of carrier certification. This is critical for the first release of your product and each iteration as you obtain market feedback. Skywire modems significantly reduce time-to-market and are ideal for product development through large-scale production. All Skywire modems are patented and backed by industry leading documentation and expert-level product support.

The NL-SW-LTE-SVZM20 Skywire® modem is end of life. It is not recommended for new design (NRND).

Skywire FAQs
Skywire Modems Comparison Chart

Product BriefDocumentation
Overview

ThingSpace is the Internet of Things (IoT) platform that offers a complete end-to-end solution for onboarding and activating yourdevices on the Verizon Wireless network. The ThingSpace client is integrated on the Sequans Monarch Category M1 (Cat-M1) LTEmodem. The combination of the LTE Cat-M1 capabilities of the Monarch modem with Verizon’s 4G LTE network and ThingSpaceoffers a simplified approach for building, deploying and managing IoT devices and applications, which can be customized for a widerangeof IoT uses including asset management, industrial automation, wearables, smart cities and more.

Features include:
  • Proprietary ATtention (AT) commands to interact with the embedded ThingSpace client

  • Very light MCU load, and no TCP/IP stack required

  • Diagnostics

  • Security

  • Capability of cloud messaging

Before you begin
There are a few things you will need to do before you can get started.
  • Go to core.thingspace.verizon.com/portal

    Provides support for NI data acquisition and signal conditioning devices. NI-VISA Provides support for Ethernet, GPIB, serial, USB, and other types of instruments. The package provides the installation files for FTDI USB Serial Port Driver version 2.12.16.0. If the driver is already installed on your system, updating (overwrite-installing) may fix various issues, add new functions, or just upgrade to the available version. Download phocos port devices driver. Locate the “Phocos MXI-IR“ in your device list under “Other Devices”. (Older versions may list “Phocos CXI“ or “USB Serial Port” under “Other Devices”.) Select “Browse my computer for driver software“. When you plug the device into your USB, Windows will look for the associated driver, if it cannot find this driver then you will be prompted to insert the driver disc that came with your device. Common USB Device errors are ‘ usb port not working ‘, ‘device descriptor request failed error’ or ‘bugcodeusbdriver’ issues. A library of over 250,000 device drivers, firmware, BIOS and utilities for Windows. Latest Drivers Downloads. Synaptics PS/2 Port TouchPad Driver 19.0.11.1 64.

  • Use a company email to create a ThingSpace account.

  • Download the following tools:

Description
Source/Vendor
Link
Sequans
modem
drivers
VZM20Q-REV2-EVK-BBA1-RFA3-SKY6800031_VERIZONMQTT-NOLPM_LR5.1.1.0-34030
Modem drivers with
ThingSpace
integrated
Python
Python
NimbleLinkSkywireModem
NimbleLin
Setting up ThingSpace

The ThingSpace Software Development Kit (SDK) is included in the Sequans Monarch modem software. Please ensure you are usingthe correct software version. To update your Sequans modem firmware, please see the Flashing modem firmware section. Once youhave the right firmware version on your modem, review the ATtention (AT) commands specific for ThingSpace.

Flashing modem firmware

Update your firmware to VZM20Q-REV2-EVK-BBA1-RFA3-SKY6800031_VERIZON-MQTT-NOLPM_LR5.1.1.0-34030 or later. Seedocumentation with your corresponding module maker.

If you are using the NimbleLink Skywire CAT-M1 chip, see firmware update documentationhere

Important notes

In order to use the Sequans Monarch modem on the Verizon network, you need to establish a PDN to connect to the ThingSpace server.

NOTE:
In some cases, (depending on the SIM card), you may need to attach first the Admin PDN (cid=2) before the establishment of Internet PDN.

Change Attach PDN (persistent configuration)
Integrating certificates

Certificates are required to establish a secure connection between the client and server. These certificates can be obtained directly from the ThingSpace Portal.

Click here for more information on Certificates.

How to download certificates
  • Login to ThingSpace and click the Credentials tab.
  • Download the certificates.
  • Add these “cacert.pem, client-cert.pem and client-key.pem” files to the datatx folder.
Sequans Non-Volatile Data Commands

The commands listed in this section allow writing and reading data (Certificate, etc.) to and from the non-volatile (NV) memory or toand from the Flash File System. Stored NV data will be persistent against device reboot and software upgrades.

Possible Response(s)
AT+SQNSNVW=<type>,…
AT+SQNSNVW='certificate',<index>,<size><CR><LF><data>
AT+SQNSNVW='privatekey',<index>,<size><CR><LF><data>
OK
+SQNSNVW: 'certificate”, (list of supported<index>), (list of supported <size>)

This command allows you to write and delete data (Certificate, etc.) to/from the non-volatile (NV) memory. Write command usage & syntax may change depending on the type of data to store.

AT+SQNSNVW='certificate',<index>,<size><CR><LF><data>

This write command with 'certificate' type should be used to write the certificate to non-volatile memory. After the certificate isuploaded to your modem, public certificates are immediately available for all client secured IP connections (+SQNSUPGRADE,Secured socket). For secured socket in server mode, certificate <index> should be used to assign private certificate to secure server.

  • An <index> will be used by the system to identify the certificate for future operations (delete, etc.)

  • The <size> parameter corresponds to the exact number of bytes of the certificate to upload.

After AT+SQNSNVW write command issued, send certificates to the modem in Privacy-enhanced Electronic Mail (PEM) format. Assoon as <size> bytes have been received, operation is automatically completed. If the certificate is successfully uploaded and verified,then the response is OK. If the certification upload fails, then an error code is reported. To delete a certificate, write a 0 byte certificateusing certification ID as <index>.

AT+SQNSNVW='privatekey',<index>,<size><CR><LF><data>

This write command with 'privatekey' type will write a private key in PEM format to the non-volatile memory. Private keys are used by+SQNSJWTENCODE command.

NOTE:Private RSA keys with password are not supported.

Adding ThingSpace Certificates to the Monarch modem

Before execution of any ThingSpace specific AT commands the TLS data must be uploaded to the device with following commands:

NOTE:By default, the client ID will be an IMEI code from the device. All MQTT topics used for interactions between the ThingSpace cloudserver are based on the client ID.

Description
AT+SQNSNVW='certificate',0,<size><CR><LF><ThingsSpace_CA_data>
ThingSpace Root CA id
must be 0
AT+SQNSNVW='privatekey',2,<size><CR><LF><Private_Key_data>
Device private key id
must be 2
AT+SQNSNVW='certificate',1,<size><CR><LF><Certificate_data>
Device certificate ID
must be 1

NOTE: ThingSpace provides certificates and private keys files with CRLF (carriage return and line feed) line-ending. The <size> of thecertificate or the private key must be the size of the appropriate file after removing CR (carriage return) from it. To remove CR use linuxcommand: tr -d 015 < file_with_cr > no_cr_file

Driver Sequence Communication In Uvm

Sending and receiving data

The Sequans Monarch ThingSpace integration leverages ATtention (AT) commands to simplify the integration effort with applications.
The logic of this solution can be viewed on the example below:

Configure MQTT ThingSpace Client: +VZWTSCFG
Drivers
Possible Response
OK
ERROR
+VZWTSCFG=<enabled>[,<MQTT URL>[,MQTTPORT]]
Description

This command allows you to configure your ThingSpace implementation modem with the ThingSpace server.

Defined values

<enabled>1 or 0. To enable use 1, to disable use 0 respectively.

simpm.thingspace.verizonThingSpace server name. Make sure you loaded appropriate certificates before use.

8883Port number. TLS is applied and cannot be removed. Default port 8883 is used, assigned by IANA.

<AT+SQNSMQTTCLIENTCONNECT>Initiate MQTT connection to a broker.

Incoming Unsolicited Result Code (URC) for activation: +VZWTSUNITONBOARDREQ:
Description

This is an asynchronous URC indicating that wireless service has been activated for the device.

Reports Current Sensor Definition: +VZWTSUNITONBOARDRSP
Possible Response
OK
ERROR
+VZWTSUNITONBOARDRSP=<bytes>,<CR><JSON>
Description

This predefined message will be reported after client has been successfully connected.

Defined values

Driver Sequencer Communication In Uvm

<bytes>Number of bytes used in JSON.

Incoming URC for command request: +VZWTSUNITCMDREQ
Possible Requests(s)

++VZWTSUNITCMDREQ=<UCD>,<CUUID>[,<CNAME>][,<VALUE>]

Description

This is an asynchronous URC which comes upon remote command request in topic
ThingspaceSDK/<IMEI>/TSServerPublishCommand.

URC request examples:

+VZWTSUNITCMDREQ='GetOtp','00000000-0000-0000-C000-446655440000'

+VZWTSUNITCMDREQ='Set','00000000-0000-0000-C000-446655440000','unitState ','false'

+VZWTSUNITCMDREQ='Get','00000000-0000-0000-C000-446655440000','MovementEvent'

Defined values

<UCD>Unit command. Set, Get, GetOtp, SetOtp

<CUUID>Command uuid

<CNAME>Characteristic name

<VALUE>Characteristic value (for Set)

Responding to a Server Request: +VZWTSUNITCMDRSP
Possible Response
OK
ERROR
+VZWTSUNITCMDRSP=<UCD>,<CUUID>,<SCD>,
<SMG>
Description

Here is a response:

Drivers Sequans
Defined values

<UCD>Unit command. GetOtp, SetOtp

<CUUID>Command uuid

<SCD>Status code

<SMG>Status message

Responding to a Server Request with a Payload: +VZWTSUNITCMDPLDRSP
Possible Response
AT+VZWTSUNITCMDPLDRSP=<UCD>,<CUUID>,<SCD>,<SMG><CR>,<plsize>,<payload>
+VZWTSUNITCMDPLDRSP=<UCD>,<CUUID>,<SCD>,<SMG><CR><plsize>,<payload>
Description

Set response to specific request from the server.

Example response

Defined values

<UCD>Unit command. GetOtp, SetOtp

Driver sequence communication in uvm

<CUUID>Command uuid

<SCD>Status code

<SMG>Status message

<plsize>Payload size

<Payload>JSON payload

Running the ThingSpace Sample App

Verizon provides a temperature sensor ThingSpace End Device application template script written in Python. You must install Python 2.7 or later and pyserial to run the script. This script automatically reports sensor, MCU, and modem diagnostic data to ThingSpace every 5 seconds. The temperatureSensor.py application simulates a temperature sensor (ts.device.sdk.thermometer) and reports temperatures periodically to the ThingSpace server. The TemperatureSensor.py script requires the pySerial module.

NOTE:
The modem needs to establish Internet PDN to connect the ThingSpace server.

See Flashing the modem firmware section for more information.

End-device is connected to the Monarch modem through UART0 (921600 bauds, HW flow control) and communicates using an ATinterface. A debug PC can be connected to the Monarch console through UART1 (115200 bauds, no flow control).

For Monarch test kit usage, please refer to dedicated documentation:

  • Sequans test kit user manual: VZM20Q-TestKitUserManual_B4-B13_Rev2.pdf

  • Nimbelink test kit user manual: 30192_NL-M1DK_UserManual.pdf

  • usage: temperatureSensor.py [-h] [-p PORT] [-V] [-r BAUDRATE]

  • [--ca CA] [--cert CERT] [--key KEY]

  • [--uid UID] [--name NAME]

  • [--report REPORT]

  • Temperature sensor (ts.device.sdk.thermometer) Thingspace End Device application template script.

  • optional arguments:

  • -h, --help show this help message and exit

  • -p PORT, --port PORT serial port name (e.g., COM17 or /dev/ttyUSB1)

  • -V, --verbose Enable verbose mode

  • -r BAUDRATE, --baudrate BAUDRATE
    serial port baud rate

  • --ca CA ThingSpace Root CA

  • --cert CERT ThingSpace Client Cert

  • --key KEY ThingSpace Client Key

  • --uid UID ThingSpace Device Uuid

  • --name NAME ThingSpace Device Name

  • --report REPORT Temperature reporting period in seconds (0 for no reporting)

Creating a device on ThingSpace

In order for the ThingSpace platform to receive data from your device and associate your device with a certificate, you need to createa new device on ThingSpace.

To create a new device on ThingSpace, visit the ThingSpace Portal Guide.

End-device connection
  1. Connect the End-Device (test PC) to the Sequans test kit.

    • UART0 (921600 bauds, HW flow control): AT command

    • UART1 (115200 bauds, no flow control): Monarch console (Optional)

  2. Power on the VZM20Q test kit.

  3. Slower traffic keep right driver download for windows 10. Open the interactive shell to launch the ThingSpace End-Device sample application command line (temperatureSensor.py script)

To establish the connection, upload the Server CA certificate, client certificate and private key to the Monarch device.

To learn more about certificates see Integrating Certificates.

User can directly exercise AT commands or delegate the job to temperatureSensor.py script (automatizes usage of same ATcommand).

Configuring certificates with the temperature sensor script

You can use the temperatureSensoer.py script to load new certificates and keys to the modem. Each time certificates and keys are provided on the command line; ThingSpace certificates will be overwritten by new certificates and keys.

Launching the script without security data previously configured in the module will generate the following errors:

Drivers Sequans
  • !WARN! ThingSpace Root CA certificate is absent, please upload it using --ca option

  • !WARN! ThingSpace Client certificate is absent, please upload it using --cert option

  • !WARN! ThingSpace Client private key is absent, please upload it using --key option

To load security material, use the command line options below:

This command will upload certificates and keys to the LTE module, and check connections to ThingSpace.

NOTE:
In your terminal logs, '+VZWTSCONNECT: 1' state means that connection has been established successfully with the ThingSpace server.

Testing and Validation

ThingSpace logs are displayed in your modem terminal by default

NOTE:
You need to create a ThingSpace account and download and install the certificates before testing and validation.

temperatureSensor.py -p COM20 -r 921600 --name mySuperThermometer --uid c49153be-de94-6f5d-
eec0-8f94e1d98fc4

  • Write : 'AT+VZWTSCONNECT?'

  • Read : '<LF><CR>'

  • Read : +VZWTSCONNECT: 1 '<LF><CR>'

  • Read : '<LF><CR>'

  • Read : 'OK<LF><CR>'

NOTE:
If you have not activated your device on ThingSpace, see the Activating Devices section of the ThingSpace Portal Guide

Device communication server testing
  1. Launch the ThingSpace End-Device sample command line application (temperatureSensor.py script).

  2. Wait for the connection (ensure certificates are added and the device is activated in ThingSpace).

    temperatureSensor.py -p COM20 -r 921600 --name mySuperThermometer --uid c49153be-de94-6f5d-
    eec0-8f94e1d98fc4

    [..]

    • Write : 'AT+VZWTSCONNECT?'

    • Read : '<LF><CR>'

    • Read : +VZWTSCONNECT: 1 '<LF><CR>'

    • Read : '<LF><CR>'

    • Read : 'OK<LF><CR>'

  3. Open the ThingSpace portal Devices page.

  4. Click on the device UID to access the Device Details page.

  5. Select the Properties panel.

  6. Use the drop-down menu to select a property you want to configure.

  7. Click in the Value box and set a new value.

  8. Click on the Add green button. The Set Device Properties widget appears.

  9. Click on the Set green button. The response status will display when the action is complete on the server side.

  10. End-Device receives set message.

    Thu Dec 14 14:35:03 2017 >EXE> Read :

    '+VZWTSUNITCMDREQ:'Set','358227051529086_g8u3qyiz','temperature','1234'<LF><CR>'

  11. Answer with Set OK message.

    Device property SET request handler

    • CUUID: 358227051529086_g8u3qyiz

    • CNAME: 'temperature'

    • VALUE: 1234

    • Reset device temperature to 1234

    • Write : 'AT+VZWTSUNITCMDRSP='Set','358227051529086_g8u3qyiz','200','OK'

    • Read : '<LF><CR>'

    • Read : 'OK<LF><CR>'

  12. Corresponding raw messages can be viewed on your device.

    • I [SQNSMQTT] sqnsmqtt_message_callback @ mqttclient.cc:331: MQTT RX: Received new message:'{'unitCommand':'Set','commandUUID':'358227051529086_g8u3qyiz','characteristicsName':'temper
      ature','value':'1234'}' from topic 'ThingspaceSDK/358227051529086/TSServerPublishCommand'

    • I [SQNSMQTT] sqnsmqtt_message_callback @ mqttclient.cc:338: Calling external handler (0x0x1c46ae60) for new incomming message for client (0) with result (0)

    • I [VZWTS] vzwOnNewIncommingMsgCbk @ vzwts_at.cc:420: Incoming message to'TSServerPublishCommand' from the broker

    • I [VZWTS] atVzwTsUnitCmdRspHandler @ vzwts_at.cc:582: New JSON:{'unitCommand':'Set','commandUUID':'358227051529086_g8u3qyiz','statusCode':'200','statusMsg':'OK'}

    • I [SQNSMQTT] sqnsmqtt_client_publish @ mqttclient.cc:705: MQTT TX: Client (0) publishingpayload
      ({'unitCommand':'Set','commandUUID':'358227051529086_g8u3qyiz','statusCode':'200','statusMsg':'OK'}) into topic (ThingspaceSDK/358227051529086_g8u3qyiz/UNITCmdResponse), with QoS 0 (atmost once)

    • D [SQNSMQTT] sqnsmqtt_log_callback @ mqttclient.cc:264: Client 358227051529086 sendingPUBLISH (d0, q0, r1, m3, 'ThingspaceSDK/358227051529086_g8u3qyiz/UNITCmdResponse', .. (98bytes))

    • I [SQNSMQTT] sqnsmqtt_publish_callback @ mqttclient.cc:289: Publish confirmed. PUBLISHCONFIRMATION HANDLER DOES NOTHING BY DEFAULT, to override use publish_callback