How to set AT+QMTSUB command's timeout parameter

I use QNavigator tool to test MQTT subscribe command.

[2019-08-22 14:42:54:198_R:] OK
[2019-08-22 14:43:24:582_S:] AT+QIACT?
[2019-08-22 14:43:24:585_R:] AT+QIACT?
[2019-08-22 14:43:24:586_R:] +QIACT: 1,1,1,“xx.xx.xx.xx”

[2019-08-22 14:43:24:586_R:] OK
[2019-08-22 14:43:31:263_S:] AT+QMTOPEN=0,“xx.xx.xx.xx”,1883
[2019-08-22 14:43:31:266_R:] AT+QMTOPEN=0,“xx.xx.xx.xx”,1883
[2019-08-22 14:43:31:266_R:] OK

[2019-08-22 14:43:32:162_R:] +QMTOPEN: 0,0

[2019-08-22 14:43:32:165_R:] DSR:0 CTS:0 (RI:1) DCD:0

[2019-08-22 14:43:32:167_R:] DSR:0 CTS:0 (RI:0) DCD:0
[2019-08-22 14:43:41:031_S:] AT+QMTCONN=0,“timtest”
[2019-08-22 14:43:41:033_R:] AT+QMTCONN=0,“timtest”
[2019-08-22 14:43:41:033_R:] OK

[2019-08-22 14:43:41:760_R:] +QMTCONN: 0,0,0

[2019-08-22 14:43:41:762_R:] DSR:0 CTS:0 (RI:1) DCD:0

[2019-08-22 14:43:41:824_R:] DSR:0 CTS:0 (RI:0) DCD:0
[2019-08-22 14:43:53:575_S:] AT+QMTSUB=0,0,“cie/office/cmd”,0
[2019-08-22 14:43:53:578_R:] AT+QMTSUB=0,0,“cie/office/cmd”,0
[2019-08-22 14:43:53:578_R:] OK
[2019-08-22 15:24:34:779_R:] DSR:0 CTS:0 (RI:1) DCD:0

[2019-08-22 15:24:34:781_R:] +QMTSUB: 0,0,0,0

[2019-08-22 15:24:34:899_R:] DSR:0 CTS:0 (RI:0) DCD:0

[2019-08-22 15:24:44:775_R:] +QMTRECV: 0,0,“cie/office/cmd”,"{“cmd”:“5”}"

[2019-08-22 15:24:44:778_R:] DSR:0 CTS:0 (RI:1) DCD:0

[2019-08-22 15:24:44:897_R:] DSR:0 CTS:0 (RI:0) DCD:0

[2019-08-22 15:24:53:973_R:] +QMTRECV: 0,0,“cie/office/cmd”,"{“cmd”:“5”}"

[2019-08-22 15:24:53:976_R:] DSR:0 CTS:0 (RI:1) DCD:0

[2019-08-22 15:24:54:097_R:] DSR:0 CTS:0 (RI:0) DCD:0

I send AT+QMTSUB, I can get the message within 10 seconds.
More than 10 seconds I have to send AT+QMTSUB again.
so How to set AT+QMTSUB command’s timeout parameter?

BTW, If I want to listen a MQTT topic long time, should I polling AT+QMTSUB command?
ex: Should I send AT+QMTSUB every 10 seconds?


The subscribed topic should be always available during MQTT connection alive.

  • If you have to retrieve messages just by re-sending AT+QMTSUB. To verify this issue, pelase try:
  1. Wait more time(like 60s) to check whether it can receive message again. If yes, it’s impacted by eDRX timer.
  2. Confirm your applicaiton, whether the message will be published in every 10s.
  • If you have to retrieve messages by re-establishing MQTT conenction, AT+QMTOPEN; AT+QMTCONN; AT+QMTSUB. You would need to check the keepalive timer setting. AT+QMTCFG=“keepalive”, can be used to configuration the keepalive timer.

-To verify whether it’s the network paging issue: Send AT+QPING=1,“” to check if you can retrieve MQTT message again.

1 Like

Hello @WillieYao-Q
I am facing same issue.I am publishing data @every 20 sec. My server sends acknowledge to every published message .But I am not able to receive that response. After successfull mqtt connection,I subscibed to that topic,but no data is coming on that topic.
Please suggest me what should be the issue.
Thank you in advance!

Hello @WillieYao-Q
I re-established MQTT connection,using AT+QMTOPEN ,AT+QMTCONN,AT+QMTSUB these commands.
How should I check the keepalive timer setting?And how to retrieve messages after every 20sec?
I am not configuring keepalive time, I used default it is 120sec.

Thank you in advance!