Gemalto is now part of the Thales Group, find out more.

You are here

Thales IoT Developer Community

How to do MQTT on EXS82 platform

Tutorial, December 27, 2019 - 3:39am, 8968 views

  Because EXS82 doesn’t support JAVA like PLS62 and ELS61 series, we need to use AT command to achieve MQTT feature.

  • Environment setting:
  1. Ubuntu 18.04.03 for MQTT broker and client
  2. EXS82 CS2 FW:REVISION 00.038, A-REVISION 01.000.00 
  • Steps:


      1. Install MQTT related update and

            "sudo apt install -y mosquito" (Install Mosquitto MQTT Broker)

            "sudo apt install -y mosquitto-clients" (Install Mosquitto Client)

      2. Make sure MQTT subscriber/publisher works

             mosquitto_sub -h IP -t Topic (Create a subscriber for specific Topic)

                  ex: "mosquitto_sub -h -t test" means to wait for Topic as test message

             mosquitto_pub -h IP -t Topic -m Message (Create a publisher for specific Topic and send message)

                  ex: "mosquitto_pub -h -t test -m 1234" means to send Topic as test and message is 1234 to the subscriber.

    Module (EXS82-W):

      AT command for publisher:


           +COPS: 0,0,"Chunghwa Telecom",7















           at^SISS=1,Topic, "test"



           ^SISS: 0,"srvType",""

           ^SISS: 1,"srvType","Mqtt"

           ^SISS: 1,"conId","1"

           ^SISS: 1,"address","mqtt://"

           ^SISS: 1,"cmd","publish"

           ^SISS: 1,"hcContLen","4"

           ^SISS: 1,"clientid","1111"

           ^SISS: 1,"topic","test"

           ^SISS: 2,"srvType",""           





           ^SIS: 1,0,8800,"Mqtt connect"

           ^SIS: 1,0,2500,"Connection accepted on clean session."


           ^SISW: 1,4,0


                      Module side: (After Sending at^SISW=1,4 command, type “abcd”)

                      Ubuntu side:

                             You can see the result like:

                                            mosquitto_sub -h -t test

                                            abcd => Receive the message from publisher

Hello Leon

That's a nice start :)

do you have an example use of the Dynamic setup, making use of ^SISD and ^SISU ?

I'm unable to make it work (I'm on a EXS82-W with REVISION 00.038).

"Static" setup with ^SISW works fine

Hi Leon

Some precisions / more details :

I'm testing with Cayenne Mydevices ( where the topic name is a bit long. 

Reminder : it works fine when I use the static method (SISO=x, SISW, SISC=x)

I've tried 2 methods for dynamic send (SISO=x,2) :

1/ ^SISU with arguments. 


+CME ERROR: text string too long

--> what's the maximum allowed size for this command ? is it possible to extend it ? 

2/ ^SISD + ^SISU without arguments :

remark a/ looks like "GSM" coding is used (it doesn't make sense to me to use this coding schemen here):




^SISD: 2,"hcContent","rel\11hum,p=100"

remark b/ the documentation doesn't seem clear to me because I would expect to define everything with SISD and then just trigger the command with SISU, but SISU seems to expect from me to use SISW (I receive a ^SISW: 2,1 URC, then I write some data, which are transmitted, then I receive a SISW: 2,2 URC but the connection is maintained and I can send some more data, which looks like what I want. But it's a bit confusing).

--> I don't know if I understood well.

I also need a clear example on AT^SISD - AT^SISU commands

Jesus Santos


after at^siss definition with AT^SISS=1,"srvType","Mqtt"

etc. please try the following...first open connection, then define the dynamic parameters and fire them with at^sisu.


^SIS: 1,0,8800,"Mqtt connect xyz:1883"
^SIS: 1,0,2500,"Connection accepted on clean session."   


^SISW: 1,2



Please see

This article will tell you all about, Python, Java and AT Internet Services on PLS62-W and EXS82-W


leon.weng's picture