RAK3172 AT_PARAM_ERROR CYCLING

Seems like this is a cycle 1 good send 3 AT_PARAM_ERROR amd 3 good sends then I have to rejoin it a perfect cycle. I’m reading UTC and the read is good I’m also receiving meassage when it a AT_PARAM_ERROR. Anyone seen this. I’m talking to a chirpstack using a Sensecap M2. My last mail was spam check so might not get posted?
See below the cycle. Frame counter dosen’t get past 10

# Time, Event, DR, FCnt, FPort, Data, DevAddr
("2026-02-27 16:43:59","Uplink",0,3,0,"",""),
("2026-02-27 16:43:30","Uplink",0,2,0,"",""),
("2026-02-27 16:43:00","Uplink",3,1,1,"33312c342c312c332c31",""),
("2026-02-27 16:42:43","Join","","","","","00403d01"),
("2026-02-27 16:41:57","Uplink",0,10,1,"33312c342c312c332c31",""),
("2026-02-27 16:41:20","Uplink",0,8,1,"33312c342c312c332c31",""),
("2026-02-27 16:40:50","Uplink",0,7,1,"33312c342c312c332c31",""),
("2026-02-27 16:40:20","Uplink",0,6,1,"33312c342c312c332c31",""),
("2026-02-27 16:39:50","Uplink",0,5,1,"33312c342c312c332c31",""),
("2026-02-27 16:39:21","Uplink",0,4,0,"",""),
("2026-02-27 16:38:51","Uplink",0,3,0,"",""),
("2026-02-27 16:38:21","Uplink",0,2,0,"",""),
("2026-02-27 16:37:52","Uplink",3,1,1,"33312c342c312c332c31",""),
("2026-02-27 16:37:34","Join","","","","","014af1d1"),
("2026-02-27 16:36:41","Uplink",0,7,1,"33312c342c312c332c31",""),
("2026-02-27 16:36:11","Uplink",0,6,1,"33312c342c312c332c31",""),
("2026-02-27 16:35:41","Uplink",0,5,1,"33312c342c312c332c31",""),
("2026-02-27 16:35:12","Uplink",0,4,0,"",""),
("2026-02-27 16:34:42","Uplink",0,3,0,"",""),
("2026-02-27 16:34:12","Uplink",0,2,0,"",""),
("2026-02-27 16:33:43","Uplink",3,1,1,"33312c342c312c332c31",""),
("2026-02-27 16:33:25","Join","","","","","0049a5c0"),
("2026-02-27 16:32:32","Uplink",0,7,1,"33312c342c312c332c31",""),
("2026-02-27 16:32:02","Uplink",0,6,1,"33312c342c312c332c31",""),
("2026-02-27 16:31:32","Uplink",0,5,1,"33312c342c312c332c31",""),
("2026-02-27 16:31:03","Uplink",0,4,0,"",""),
("2026-02-27 16:30:33","Uplink",0,3,0,"",""),
("2026-02-27 16:30:03","Uplink",0,2,0,"",""),
("2026-02-27 16:29:34","Uplink",3,1,1,"33312c342c312c332c31",""),
("2026-02-27 16:29:16","Join","","","","","0133e08d"),

Hi @CForster ,

I am not sure on what AT commands you are sending. But one noticeable pattern is that the module switch to DR0 after first uplink at DR3. When it switch to DR0 it will fail 3 times. Maybe on the next 3 uplinks there are MAC commands included on the uplink that goes above the allowable payload size.

You can quickly test this assumption by setting AT+ADR=0 and AT+DR=3 then try to send as normal.

I’m not manually switching the data rate. Once I set AT+DR=3, I leave it there and just send, so it seems like the module might be changing it on its own.

During JOIN, I send AT+DR=3.

After that, I only send AT+SEND=1:33332C372C302C372C30, and then I request the UTC time with AT+TIMEREQ=1.

That’s all I’m doing.

I’m considering setting AT+DR=3 before every send, but that really shouldn’t be necessary.

Update:- I’m now setting the DR=3 just before every send but the frame counter still doesn’t get past 7. I get a +EVT:TIMEREQ_FAILED and have to rejoin. I’m not seeing the DR=0 anymore but having to rejoin after 7 is a pain.

±--------------------±-------±---------±------±---------------------+
| Timestamp | DevAddr| FCnt | DR | Data |
±--------------------±-------±---------±------±---------------------+
| 2026-03-03 16:50:48 | | 2 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:50:19 | | 1 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:50:00 | 01319e73| | | |
| 2026-03-03 16:49:06 | | 7 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:48:36 | | 6 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:48:06 | | 5 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:47:37 | | 4 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:47:07 | | 3 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:46:37 | | 2 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:46:08 | | 1 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:45:49 | 006fc5cf| | | |
| 2026-03-03 16:44:55 | | 7 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:44:25 | | 6 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:43:56 | | 5 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:43:26 | | 4 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:42:56 | | 3 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:42:26 | | 2 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:41:57 | | 1 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:41:39 | 00902dc9| | | |
| 2026-03-03 16:40:44 | | 7 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:40:15 | | 6 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:39:45 | | 5 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:39:15 | | 4 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:38:45 | | 3 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:38:16 | | 2 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:37:46 | | 1 | 3 | 33322c302c302c302c30 |
| 2026-03-03 16:37:28 | 0176256c| | | |
±--------------------±-------±---------±------±---------------------+

Hi @CForster ,

I tried it on my RAK3172 and I do not see repeatable failure on 8th uplink.

One difference we have is that my TIMEREQ is OK while in your test it is FAILED.

I am not sure how to replicate it. But it can Chirpstack related. Maybe you can share logs on chirpstack? We can probably get some clues there.

I’m reading time every packet maybe that’s something to do with it.
When you say log do you mean the LoraWAN log for the device or the frame log?

This is my serial debug. You can see the time request failure at event time [14:24:20.6] then it tries again but another failure then it inits a join.
This is CLASS A OTTA.

[14:23:45.3] + LAMP1_STATUS
[14:23:45.3] + LAMP2_STATUS
[14:23:45.3]
[14:23:47.6] Sending Data Payload
[14:23:47.6] Set_payload_device_response (CSV): 32,2,3,3,3
[14:23:47.6] Set_payload_device_response (HEX): 33322C322C332C332C33
[14:23:47.6] Sending AT command: AT+SEND=1:33322C322C332C332C33
[14:23:47.6]
[14:23:48.6] UART1 RX (3 bytes): OK
[14:23:48.6]
[14:23:50.9] UART1 RX (34 bytes): +EVT:TX_DONE
[14:23:50.9] +EVT:TIMEREQ_FAILED
[14:23:50.9] TIMEREQ: module reported failure / AT_NO_NETWORK_JOINED
[14:23:50.9] Sending AT command: AT+DR=3
[14:23:50.9]
[14:23:51.9] UART1 RX (3 bytes): OK
[14:23:51.9]
[14:23:52.1] Sending AT command: AT+TIMEREQ=1
[14:23:52.1]
[14:23:53.2] UART1 RX (3 bytes): OK
[14:23:53.2]
[14:23:53.6] SET_RESPONSE: payload_setting= 769 (0x0301) bits:
[14:23:53.6] + BAT_VOLT (mV/100)
[14:23:53.6] + LAMP1_STATUS
[14:23:53.6] + LAMP2_STATUS
[14:23:53.6]
[14:23:55.8] Sending Data Payload
[14:23:55.8] Set_payload_device_response (CSV): 32,2,3,3,3
[14:23:55.8] Set_payload_device_response (HEX): 33322C322C332C332C33
[14:23:55.8] Sending AT command: AT+SEND=1:33322C322C332C332C33
[14:23:55.8]
[14:23:56.8] UART1 RX (3 bytes): OK
[14:23:56.8]
[14:23:58.0] UART1 RX (30 bytes): +EVT:TX_DONE
[14:23:58.0] +EVT:TIMEREQ_OK
[14:23:58.0] Sending AT command: AT+LTIME=?
[14:23:58.0]
[14:23:59.1] UART1 RX (37 bytes): AT+LTIME=14h23m58s on 03/04/2026
[14:23:59.1] OK
[14:23:59.1]
[14:23:59.2] UTC set: 14:23:58 03/04/2026
[14:23:59.2]
[14:24:12.0] Device time: 14:24:10 03/04/2026
[14:24:12.0]
[14:24:12.3] BQ27441_I2C_DEBUG Voltage=3234mV
[14:24:12.3] BQ27441_I2C_DEBUG Iavg=16 mA
[14:24:12.3] BQ27441_I2C_DEBUG FCC=0 mAh
[14:24:12.3] Sending AT command: AT+DR=3
[14:24:12.3]
[14:24:13.4] UART1 RX (3 bytes): OK
[14:24:13.4]
[14:24:13.5] Sending AT command: AT+TIMEREQ=1
[14:24:13.5]
[14:24:14.6] UART1 RX (3 bytes): OK
[14:24:14.6]
[14:24:15.0] SET_RESPONSE: payload_setting= 769 (0x0301) bits:
[14:24:15.0] + BAT_VOLT (mV/100)
[14:24:15.0] + LAMP1_STATUS
[14:24:15.0] + LAMP2_STATUS
[14:24:15.0]
[14:24:17.2] Sending Data Payload
[14:24:17.2] Set_payload_device_response (CSV): 32,2,3,3,3
[14:24:17.2] Set_payload_device_response (HEX): 33322C322C332C332C33
[14:24:17.2] Sending AT command: AT+SEND=1:33322C322C332C332C33
[14:24:17.2]
[14:24:18.3] UART1 RX (3 bytes): OK
[14:24:18.3]
[14:24:20.6] UART1 RX (34 bytes): +EVT:TX_DONE
[14:24:20.6] +EVT:TIMEREQ_FAILED
[14:24:20.6] TIMEREQ: module reported failure / AT_NO_NETWORK_JOINED
[14:24:20.6] Sending AT command: AT+DR=3
[14:24:20.6]
[14:24:21.7] UART1 RX (3 bytes): OK
[14:24:21.7]
[14:24:21.8] Sending AT command: AT+TIMEREQ=1
[14:24:21.8]
[14:24:22.8] UART1 RX (3 bytes): OK
[14:24:22.8]
[14:24:23.3] SET_RESPONSE: payload_setting= 769 (0x0301) bits:
[14:24:23.3] + BAT_VOLT (mV/100)
[14:24:23.3] + LAMP1_STATUS
[14:24:23.3] + LAMP2_STATUS
[14:24:23.3]
[14:24:25.5] Sending Data Payload
[14:24:25.5] Set_payload_device_response (CSV): 32,2,3,3,3
[14:24:25.5] Set_payload_device_response (HEX): 33322C322C332C332C33
[14:24:25.5] Sending AT command: AT+SEND=1:33322C322C332C332C33
[14:24:25.5]
[14:24:26.5] UART1 RX (3 bytes): OK
[14:24:26.5]
[14:24:28.9] UART1 RX (34 bytes): +EVT:TX_DONE
[14:24:28.9] +EVT:TIMEREQ_FAILED
[14:24:28.9] TIMEREQ: module reported failure / AT_NO_NETWORK_JOINED
[14:24:28.9] UTC update failed after 2 attempts → lora.joined_network=false
[14:24:28.9] Sending AT command: AT+NWM=1
[14:24:28.9]
[14:24:30.2] UART1 RX (127 bytes): OK
[14:24:30.2] RAKwireless RAK3172
[14:24:30.2] ------------------------------------------------------
[14:24:30.2] Version: RUI_4.0.6_RAK3172-E
[14:24:30.2] Current Work Mod
[14:24:30.2] LoRa: RAK3172 banner seen → ABP or Class B, keep join state
[14:24:30.2]
[14:24:30.4] Sending AT command: AT+BAND=5
[14:24:30.4]
[14:24:31.5] UART1 RX (3 bytes): OK
[14:24:31.5]
[14:24:31.6] Sending AT command: AT+MASK=0002
[14:24:31.6]
[14:24:32.7] UART1 RX (3 bytes): OK
[14:24:32.7]
[14:24:32.8] Sending AT command: AT+CLASS=A
[14:24:32.8]
[14:24:33.9] UART1 RX (3 bytes): OK
[14:24:33.9]
[14:24:34.0] Sending AT command: AT+ADR=1
[14:24:34.0]
[14:24:35.1] UART1 RX (3 bytes): OK
[14:24:35.1]
[14:24:35.3] Sending AT command: AT+DR=3
[14:24:35.3]
[14:24:36.3] UART1 RX (3 bytes): OK
[14:24:36.3]
[14:24:36.5] OTTA Mode
[14:24:36.5] Sending AT command: AT+NJM=1
[14:24:36.5]
[14:24:37.5] UART1 RX (3 bytes): OK
[14:24:37.5]
[14:24:37.7] Sending AT command: AT+TXP=0
[14:24:37.7]
[14:24:38.8] UART1 RX (3 bytes): OK
[14:24:38.8]
[14:24:38.9] Sending AT command: AT+APPEUI=0000000000000000
[14:24:38.9]
[14:24:39.9] UART1 RX (3 bytes): OK
[14:24:39.9]
[14:24:40.2] Sending AT command: AT+APPKEY=9719ED6B33F0691A93FDA2D1D3EA5277
[14:24:40.2]
[14:24:41.2] UART1 RX (3 bytes): OK
[14:24:41.2]
[14:24:41.3] Sending AT command: AT+JOIN=1
[14:24:41.3]
[14:24:42.4] UART1 RX (3 bytes): OK
[14:24:42.4]
[14:24:45.6] Sending AT command: AT+NJS=?
[14:24:45.6]
[14:24:46.6] UART1 RX (13 bytes): AT+NJS=0
[14:24:46.6] OK
[14:24:46.6]
[14:24:46.8] Waiting to join
[14:24:46.8]
[14:24:48.3] LoRa join status: JOINED (grace window)
[14:24:48.3] Sending AT command: AT+NJS=?
[14:24:48.3]
[14:24:49.4] UART1 RX (13 bytes): AT+NJS=1
[14:24:49.4] OK
[14:24:49.4]
[14:24:49.6] LoRa join status: JOINED
[14:24:49.6] Already joined; skipping init
[14:24:49.6]
[14:24:54.6] Poll in 1 hours :0 minutes :0 seconds
[14:24:54.6]
[14:24:55.0] Device time: 14:24:53 03/04/2026
[14:24:55.0] Not synchronized with network
[14:24:55.0]
[14:24:55.4] BQ27441_I2C_DEBUG Voltage=3235mV
[14:24:55.4] BQ27441_I2C_DEBUG Iavg=15 mA
[14:24:55.4] BQ27441_I2C_DEBUG FCC=0 mAh
[14:24:55.4] Sending AT command: AT+DR=3
[14:24:55.4]
[14:24:56.4] UART1 RX (3 bytes): OK
[14:24:56.4]
[14:24:56.6] Sending AT command: AT+TIMEREQ=1
[14:24:56.6]
[14:24:57.7] UART1 RX (3 bytes): OK
[14:24:57.7]
[14:24:58.1] SET_RESPONSE: payload_setting= 769 (0x0301) bits:
[14:24:58.1] + BAT_VOLT (mV/100)
[14:24:58.1] + LAMP1_STATUS
[14:24:58.1] + LAMP2_STATUS
[14:24:58.1]
[14:25:00.3] Sending Data Payload
[14:25:00.3] Set_payload_device_response (CSV): 32,2,3,3,3
[14:25:00.3] Set_payload_device_response (HEX): 33322C322C332C332C33
[14:25:00.3] Sending AT command: AT+SEND=1:33322C322C332C332C33
[14:25:00.3]
[14:25:01.3] UART1 RX (3 bytes): OK
[14:25:01.3]
[14:25:02.5] UART1 RX (30 bytes): +EVT:TX_DONE
[14:25:02.5] +EVT:TIMEREQ_OK
[14:25:02.5] Sending AT command: AT+LTIME=?
[14:25:02.5]
[14:25:03.6] UART1 RX (37 bytes): AT+LTIME=14h25m02s on 03/04/2026
[14:25:03.6] OK
[14:25:03.6]
[14:25:03.8] UTC set: 14:25:02 03/04/2026
[14:25:03.8]
[14:25:24.3] Device time: 14:25:22 03/04/2026
[14:25:24.3]
[14:25:24.7] BQ27441_I2C_DEBUG Voltage=3195mV
[14:25:24.7] BQ27441_I2C_DEBUG Iavg=17 mA
[14:25:24.7] BQ27441_I2C_DEBUG FCC=0 mAh
[14:25:24.7] Sending AT command: AT+DR=3
[14:25:24.7]
[14:25:25.7] UART1 RX (3 bytes): OK
[14:25:25.7]
[14:25:25.9] Sending AT command: AT+TIMEREQ=1
[14:25:25.9]
[14:25:26.9] UART1 RX (3 bytes): OK
[14:25:26.9]
[14:25:27.3] SET_RESPONSE: payload_setting= 769 (0x0301) bits:
[14:25:27.3] + BAT_VOLT (mV/100)
[14:25:27.3] + LAMP1_STATUS
[14:25:27.3] + LAMP2_STATUS
[14:25:27.3]
[14:25:29.5] Sending Data Payload
[14:25:29.5] Set_payload_device_response (CSV): 31,2,3,3,3
[14:25:29.5] Set_payload_device_response (HEX): 33312C322C332C332C33
[14:25:29.5] Sending AT command: AT+SEND=1:33312C322C332C332C33
[14:25:29.5]
[14:25:30.6] UART1 RX (3 bytes): OK
[14:25:30.6]
[14:25:31.8] UART1 RX (30 bytes): +EVT:TX_DONE
[14:25:31.8] +EVT:TIMEREQ_OK
[14:25:31.8] Sending AT command: AT+LTIME=?
[14:25:31.8]
[14:25:32.9] UART1 RX (37 bytes): AT+LTIME=14h25m31s on 03/04/2026
[14:25:32.9] OK
[14:25:32.9]
[14:25:33.0] UTC set: 14:25:31 03/04/2026
[14:25:33.0]
[14:25:54.0] Device time: 14:25:52 03/04/2026
[14:25:54.0]
[14:25:54.4] BQ27441_I2C_DEBUG Voltage=3219mV
[14:25:54.4] BQ27441_I2C_DEBUG Iavg=15 mA
[14:25:54.4] BQ27441_I2C_DEBUG FCC=0 mAh
[14:25:54.4] Sending AT command: AT+DR=3
[14:25:54.4]
[14:25:55.4] UART1 RX (3 bytes): OK
[14:25:55.4]
[14:25:55.6] Sending AT command: AT+TIMEREQ=1
[14:25:55.6]
[14:25:56.6] UART1 RX (3 bytes): OK
[14:25:56.6]
[14:25:57.1] SET_RESPONSE: payload_setting= 769 (0x0301) bits:
[14:25:57.1] + BAT_VOLT (mV/100)
[14:25:57.1] + LAMP1_STATUS
[14:25:57.1] + LAMP2_STATUS
[14:25:57.1]
[14:25:59.3] Sending Data Payload
[14:25:59.3] Set_payload_device_response (CSV): 32,2,3,3,3
[14:25:59.3] Set_payload_device_response (HEX): 33322C322C332C332C33
[14:25:59.3] Sending AT command: AT+SEND=1:33322C322C332C332C33
[14:25:59.3]
[14:26:00.3] UART1 RX (3 bytes): OK
[14:26:00.3]
[14:26:01.5] UART1 RX (30 bytes): +EVT:TX_DONE
[14:26:01.5] +EVT:TIMEREQ_OK
[14:26:01.5] Sending AT command: AT+LTIME=?
[14:26:01.5]
[14:26:02.5] UART1 RX (37 bytes): AT+LTIME=14h26m01s on 03/04/2026
[14:26:02.5] OK
[14:26:02.5]
[14:26:02.7] UTC set: 14:26:01 03/04/2026
[14:26:02.7]
[14:26:23.7] Device time: 14:26:22 03/04/2026
[14:26:23.7]
[14:26:24.1] BQ27441_I2C_DEBUG Voltage=3203mV
[14:26:24.1] BQ27441_I2C_DEBUG Iavg=16 mA
[14:26:24.1] BQ27441_I2C_DEBUG FCC=0 mAh
[14:26:24.1] Sending AT command: AT+DR=3
[14:26:24.1]
[14:26:25.1] UART1 RX (3 bytes): OK
[14:26:25.1]
[14:26:25.3] Sending AT command: AT+TIMEREQ=1
[14:26:25.3]
[14:26:26.4] UART1 RX (3 bytes): OK
[14:26:26.4]
[14:26:26.8] SET_RESPONSE: payload_setting= 769 (0x0301) bits:
[14:26:26.8] + BAT_VOLT (mV/100)
[14:26:26.8] + LAMP1_STATUS
[14:26:26.8] + LAMP2_STATUS
[14:26:26.8]
[14:26:29.0] Sending Data Payload
[14:26:29.0] Set_payload_device_response (CSV): 31,2,3,3,3
[14:26:29.0] Set_payload_device_response (HEX): 33312C322C332C332C33
[14:26:29.0] Sending AT command: AT+SEND=1:33312C322C332C332C33
[14:26:29.0]
[14:26:30.1] UART1 RX (3 bytes): OK
[14:26:30.1]
[14:26:31.2] UART1 RX (30 bytes): +EVT:TX_DONE
[14:26:31.2] +EVT:TIMEREQ_OK
[14:26:31.2] Sending AT command: AT+LTIME=?
[14:26:31.2]
[14:26:32.2] UART1 RX (37 bytes): AT+LTIME=14h26m31s on 03/04/2026
[14:26:32.2] OK
[14:26:32.2]
[14:26:32.5] UTC set: 14:26:31 03/04/2026
[14:26:32.5]
[14:26:53.4] Device time: 14:26:52 03/04/2026
[14:26:53.4]
[14:26:53.8] BQ27441_I2C_DEBUG Voltage=3237mV
[14:26:53.8] BQ27441_I2C_DEBUG Iavg=14 mA
[14:26:53.8] BQ27441_I2C_DEBUG FCC=0 mAh
[14:26:53.8] Sending AT command: AT+DR=3
[14:26:53.8]
[14:26:54.8] UART1 RX (3 bytes): OK
[14:26:54.8]
[14:26:55.0] Sending AT command: AT+TIMEREQ=1
[14:26:55.0]
[14:26:56.0] UART1 RX (3 bytes): OK
[14:26:56.0]
[14:26:56.5] SET_RESPONSE: payload_setting= 769 (0x0301) bits:
[14:26:56.5] + BAT_VOLT (mV/100)
[14:26:56.5] + LAMP1_STATUS
[14:26:56.5] + LAMP2_STATUS
[14:26:56.5]
[14:26:58.7] Sending Data Payload
[14:26:58.7] Set_payload_device_response (CSV): 32,2,3,3,3
[14:26:58.7] Set_payload_device_response (HEX): 33322C322C332C332C33
[14:26:58.7] Sending AT command: AT+SEND=1:33322C322C332C332C33
[14:26:58.7]
[14:26:59.7] UART1 RX (3 bytes): OK
[14:26:59.7]
[14:27:00.9] UART1 RX (30 bytes): +EVT:TX_DONE
[14:27:00.9] +EVT:TIMEREQ_OK
[14:27:00.9] Sending AT command: AT+LTIME=?
[14:27:00.9]
[14:27:02.0] UART1 RX (37 bytes): AT+LTIME=14h27m00s on 03/04/2026
[14:27:02.0] OK
[14:27:02.0]
[14:27:02.2] UTC set: 14:27:00 03/04/2026
[14:27:02.2]

Let’s isolate the issue first @CForster if it is a FW bug or there is something we need to improve/change on your implementation. My suggestion.

  1. Use the latest FW. Update the firmware of your RAK3172 which is very old.
  2. Test first via AT commands as I’ve shown on my previous message.

These two steps will give us hint where the issue is coming from.

PS These device logs as well as the one on chirpstack will be helpful in troubleshooting. Right now, I can only see the logs of your device.

So I update the to RUI_4.2.3_RAK3172-E now we only get a frame count of 6 reading UTC each time.

I removed the UTC and I just sending a pack and after 7-9 frames it stops receiving packets in chirpstack. At one point it jumped to 17 from 8 so those frames where lost.

My code runs a regular UTC request to see if the device is joined as the join flag no use.
After that the module reset on it own.

[16:34:53.1] Timeout waiting for “OK\r\n”
[16:34:53.1] Sending AT command: AT+LTIME=?
[16:34:53.1]
[16:34:54.1] UART1 RX (37 bytes): AT+LTIME=00h09m36s on 01/01/1970
[16:34:54.1] OK
[16:34:54.1]
[16:34:54.4] UTC epoch/stale (00:09:36 01/01/1970) → link down
[16:34:54.4] Sending AT command: AT+NWM=1
[16:34:54.4]
[16:34:55.7] UART1 RX (127 bytes): OK
[16:34:55.7] RAKwireless RAK3172-E
[16:34:55.7] ------------------------------------------------------
[16:34:55.7] Version: RUI_4.2.3_RAK3172-E
[16:34:55.7] Current Work ModeCR>
[16:34:55.7] LoRa: RAK3172 banner seen → ABP or Class B, keep join state

Last 8th frame before it stopped receiving massage in the chirpstack
deduplicationId:“22ca5308-31fd-48cc-996d-6e6d0601244f”
time:“2026-03-05T16:29:20.206315259+00:00”
tenantId:“a5473944-1f19-4ff7-8d33-316bd29498a1”
tenantName:“ChirpStack”
applicationId:“845b8aa2-a0f0-436d-ac41-b87c2e62c115”
applicationName:“US915-RoadSafe-Beta Sudo Class B”
deviceProfileId:“44aa9ad2-3592-48e8-adc9-570bb1ab01d9”
deviceProfileName:“RAK-US915-ClassA-OTAA”
deviceName:“US40-100-CLASSA-SUDO”
devEui:“ac1f09fffe1ad093”
deviceClassEnabled:“CLASS_A”
tags:
devAddr:“002f8515”
adr:true
dr:3
fCnt:8
fPort:1
confirmed:false
data:“MzEsMCwwLDAsMA==”
gatewayId:“2cf7f1117040011f”
uplinkId:64160
nsTime:“2026-03-05T16:29:19.994140233+00:00”
rssi:-30
snr:14.2
location:
context:“Kd67EA==”
crcStatus:“CRC_OK”
frequency:903900000
bandwidth:125000
spreadingFactor:7
codeRate:“CR_4_5”
regionConfigId:“us915_0”

Rejoin

deduplicationId:“8a8f407d-cedb-4027-b6b5-92c380750526”
time:“2026-03-05T16:08:56.915137236+00:00”
tenantId:“a5473944-1f19-4ff7-8d33-316bd29498a1”
tenantName:“ChirpStack”
applicationId:“845b8aa2-a0f0-436d-ac41-b87c2e62c115”
applicationName:“US915-RoadSafe-Beta Sudo Class B”
deviceProfileId:“44aa9ad2-3592-48e8-adc9-570bb1ab01d9”
deviceProfileName:“RAK-US915-ClassA-OTAA”
deviceName:“US40-100-CLASSA-SUDO”
devEui:“ac1f09fffe1ad093”
deviceClassEnabled:“CLASS_A”
tags:
devAddr:“0062d53d”
regionConfigId:“us915_0”

Last frame 6 after reading UTC

deduplicationId:“3db08b72-82b7-4668-a306-13aad5e847b6”
time:“2026-03-05T16:08:02.745953521+00:00”
tenantId:“a5473944-1f19-4ff7-8d33-316bd29498a1”
tenantName:“ChirpStack”
applicationId:“845b8aa2-a0f0-436d-ac41-b87c2e62c115”
applicationName:“US915-RoadSafe-Beta Sudo Class B”
deviceProfileId:“44aa9ad2-3592-48e8-adc9-570bb1ab01d9”
deviceProfileName:“RAK-US915-ClassA-OTAA”
deviceName:“US40-100-CLASSA-SUDO”
devEui:“ac1f09fffe1ad093”
deviceClassEnabled:“CLASS_A”
tags:
devAddr:“0182f134”
adr:true
dr:3
fCnt:6
fPort:1
confirmed:false
data:“MzEsMCwwLDAsMA==”
gatewayId:“2cf7f1117040011f”
uplinkId:41019
nsTime:“2026-03-05T16:08:02.536308609+00:00”
rssi:-33
snr:13.8
channel:3
location:
context:“3bpNGw==”
crcStatus:“CRC_OK”
frequency:904500000
bandwidth:125000
spreadingFactor:7
codeRate:“CR_4_5”
regionConfigId:“us915_0”

The Chirpstack frames you sent have different DEVADDRs. This means these are not coming from a commo session but rejoined. Let me assist you further.

  1. Did you flash erase completely before updating to v4.2.3? Did you use STM32CubeProgrammer?
  2. If you just send continuous uplinks manually after setting the keys, what is the repeated pattern?
  3. I see now that this is US915. Did you setup the subband via AT+MASK=0002?
  4. Is the region setting on Chirpstack matches the device?

I already validate the Timereq works on my setup so we need to see other possible reasons why some packets are lost. Your RF signal are ok so it is not related to antenna.

I used the flash tool.
There’s only one device here right next to the Sensecap M2 gateway.
Yes mask is 0002.
Yes all the settings in chirpstack match the device.

This result is back to reading UTC and setting DR=3 every time now only 6 frames then I have to rejoin.

I tried to send you the log file form the gateway but apparently a NEW USER can’t send attachments.


{
    "deduplicationId": "0d717662-7ee4-4c98-b5df-f2f04b2155e8",
    "time": "2026-03-06T09:06:47.758585449+00:00",
    "deviceInfo": {
        "tenantId": "a5473944-1f19-4ff7-8d33-316bd29498a1",
        "tenantName": "ChirpStack",
        "applicationId": "845b8aa2-a0f0-436d-ac41-b87c2e62c115",
        "applicationName": "US915-RoadSafe-Beta Sudo Class B",
        "deviceProfileId": "44aa9ad2-3592-48e8-adc9-570bb1ab01d9",
        "deviceProfileName": "RAK-US915-ClassA-OTAA",
        "deviceName": "US40-100-CLASSA-SUDO",
        "devEui": "ac1f09fffe1ad093",
        "deviceClassEnabled": "CLASS_A",
        "tags": {}
    },
    "devAddr": "00104731",
    "adr": true,
    "dr": 3,
    "fCnt": 2,
    "fPort": 1,
    "confirmed": false,
    "data": "MzEsMCwwLDAsMA==",
    "rxInfo": [
        {
            "gatewayId": "2cf7f1117040011f",
            "uplinkId": 16326,
            "nsTime": "2026-03-06T09:06:47.546309859+00:00",
            "rssi": -21,
            "snr": 14,
            "channel": 5,
            "rfChain": 1,
            "location": {},
            "context": "GQ/xAA==",
            "crcStatus": "CRC_OK"
        }
    ],
    "txInfo": {
        "frequency": 904900000,
        "modulation": {
            "lora": {
                "bandwidth": 125000,
                "spreadingFactor": 7,
                "codeRate": "CR_4_5"
            }
        }
    },
    "regionConfigId": "us915_0"
},
{
    "deduplicationId": "deff0bbd-7818-4e1d-b0b3-a6f3f07342f2",
    "time": "2026-03-06T09:06:18.044020375+00:00",
    "deviceInfo": {
        "tenantId": "a5473944-1f19-4ff7-8d33-316bd29498a1",
        "tenantName": "ChirpStack",
        "applicationId": "845b8aa2-a0f0-436d-ac41-b87c2e62c115",
        "applicationName": "US915-RoadSafe-Beta Sudo Class B",
        "deviceProfileId": "44aa9ad2-3592-48e8-adc9-570bb1ab01d9",
        "deviceProfileName": "RAK-US915-ClassA-OTAA",
        "deviceName": "US40-100-CLASSA-SUDO",
        "devEui": "ac1f09fffe1ad093",
        "deviceClassEnabled": "CLASS_A",
        "tags": {}
    },
    "devAddr": "00104731",
    "adr": true,
    "dr": 3,
    "fCnt": 1,
    "fPort": 1,
    "confirmed": false,
    "data": "MzEsMCwwLDAsMA==",
    "rxInfo": [
        {
            "gatewayId": "2cf7f1117040011f",
            "uplinkId": 45200,
            "nsTime": "2026-03-06T09:06:17.833503146+00:00",
            "rssi": -20,
            "snr": 9,
            "channel": 2,
            "location": {},
            "context": "F0pvvA==",
            "crcStatus": "CRC_OK"
        }
    ],
    "txInfo": {
        "frequency": 904300000,
        "modulation": {
            "lora": {
                "bandwidth": 125000,
                "spreadingFactor": 7,
                "codeRate": "CR_4_5"
            }
        }
    },
    "regionConfigId": "us915_0"
},
{
    "deduplicationId": "7c1f2d9f-2c12-4276-9f1d-4ddc89a75f4a",
    "time": "2026-03-06T09:05:48.809395887+00:00",
    "deviceInfo": {
        "tenantId": "a5473944-1f19-4ff7-8d33-316bd29498a1",
        "tenantName": "ChirpStack",
        "applicationId": "845b8aa2-a0f0-436d-ac41-b87c2e62c115",
        "applicationName": "US915-RoadSafe-Beta Sudo Class B",
        "deviceProfileId": "44aa9ad2-3592-48e8-adc9-570bb1ab01d9",
        "deviceProfileName": "RAK-US915-ClassA-OTAA",
        "deviceName": "US40-100-CLASSA-SUDO",
        "devEui": "ac1f09fffe1ad093",
        "deviceClassEnabled": "CLASS_A",
        "tags": {}
    },
    "devAddr": "00104731",
    "adr": true,
    "dr": 3,
    "fCnt": 0,
    "fPort": 1,
    "confirmed": false,
    "data": "MzEsMCwwLDAsMA==",
    "rxInfo": [
        {
            "gatewayId": "2cf7f1117040011f",
            "uplinkId": 8994,
            "nsTime": "2026-03-06T09:05:48.599863090+00:00",
            "rssi": -20,
            "snr": 14.2,
            "channel": 1,
            "location": {},
            "context": "FYx95A==",
            "crcStatus": "CRC_OK"
        }
    ],
    "txInfo": {
        "frequency": 904100000,
        "modulation": {
            "lora": {
                "bandwidth": 125000,
                "spreadingFactor": 7,
                "codeRate": "CR_4_5"
            }
        }
    },
    "regionConfigId": "us915_0"
},
{
    "deduplicationId": "77472220-fe26-4e42-978f-4514394f77d3",
    "time": "2026-03-06T09:05:30.182939428+00:00",
    "deviceInfo": {
        "tenantId": "a5473944-1f19-4ff7-8d33-316bd29498a1",
        "tenantName": "ChirpStack",
        "applicationId": "845b8aa2-a0f0-436d-ac41-b87c2e62c115",
        "applicationName": "US915-RoadSafe-Beta Sudo Class B",
        "deviceProfileId": "44aa9ad2-3592-48e8-adc9-570bb1ab01d9",
        "deviceProfileName": "RAK-US915-ClassA-OTAA",
        "deviceName": "US40-100-CLASSA-SUDO",
        "devEui": "ac1f09fffe1ad093",
        "deviceClassEnabled": "CLASS_A",
        "tags": {}
    },
    "devAddr": "00104731",
    "regionConfigId": "us915_0"
},
{
    "deduplicationId": "f267a6f6-ec3a-45d7-8a05-506a94c29cfa",
    "time": "2026-03-06T09:04:36.055635230+00:00",
    "deviceInfo": {
        "tenantId": "a5473944-1f19-4ff7-8d33-316bd29498a1",
        "tenantName": "ChirpStack",
        "applicationId": "845b8aa2-a0f0-436d-ac41-b87c2e62c115",
        "applicationName": "US915-RoadSafe-Beta Sudo Class B",
        "deviceProfileId": "44aa9ad2-3592-48e8-adc9-570bb1ab01d9",
        "deviceProfileName": "RAK-US915-ClassA-OTAA",
        "deviceName": "US40-100-CLASSA-SUDO",
        "devEui": "ac1f09fffe1ad093",
        "deviceClassEnabled": "CLASS_A",
        "tags": {}
    },
    "devAddr": "0091ef18",
    "adr": true,
    "dr": 3,
    "fCnt": 6,
    "fPort": 1,
    "confirmed": false,
    "data": "MzEsMCwwLDAsMA==",
    "rxInfo": [
        {
            "gatewayId": "2cf7f1117040011f",
            "uplinkId": 15810,
            "nsTime": "2026-03-06T09:04:35.844649925+00:00",
            "rssi": -31,
            "snr": 14.5,
            "channel": 7,
            "rfChain": 1,
            "location": {},
            "context": "ETY++Q==",
            "crcStatus": "CRC_OK"
        }
    ],
    "txInfo": {
        "frequency": 905300000,
        "modulation": {
            "lora": {
                "bandwidth": 125000,
                "spreadingFactor": 7,
                "codeRate": "CR_4_5"
            }
        }
    },
    "regionConfigId": "us915_0"
},
{
    "deduplicationId": "c11adec0-c844-46a8-83d9-e626c16b8ce8",
    "time": "2026-03-06T09:04:06.353249096+00:00",
    "deviceInfo": {
        "tenantId": "a5473944-1f19-4ff7-8d33-316bd29498a1",
        "tenantName": "ChirpStack",
        "applicationId": "845b8aa2-a0f0-436d-ac41-b87c2e62c115",
        "applicationName": "US915-RoadSafe-Beta Sudo Class B",
        "deviceProfileId": "44aa9ad2-3592-48e8-adc9-570bb1ab01d9",
        "deviceProfileName": "RAK-US915-ClassA-OTAA",
        "deviceName": "US40-100-CLASSA-SUDO",
        "devEui": "ac1f09fffe1ad093",
        "deviceClassEnabled": "CLASS_A",
        "tags": {}
    },
    "devAddr": "0091ef18",
    "adr": true,
    "dr": 3,
    "fCnt": 5,
    "fPort": 1,
    "confirmed": false,
    "data": "MzEsMCwwLDAsMA==",
    "rxInfo": [
        {
            "gatewayId": "2cf7f1117040011f",
            "uplinkId": 34057,
            "nsTime": "2026-03-06T09:04:06.143645049+00:00",
            "rssi": -32,
            "snr": 10.2,
            "channel": 2,
            "location": {},
            "context": "D3EZ+A==",
            "crcStatus": "CRC_OK"
        }
    ],
    "txInfo": {
        "frequency": 904300000,
        "modulation": {
            "lora": {
                "bandwidth": 125000,
                "spreadingFactor": 7,
                "codeRate": "CR_4_5"
            }
        }
    },
    "regionConfigId": "us915_0"
},
{
    "deduplicationId": "2d084607-357d-4101-b8fd-6dc903c19536",
    "time": "2026-03-06T09:03:36.650064192+00:00",
    "deviceInfo": {
        "tenantId": "a5473944-1f19-4ff7-8d33-316bd29498a1",
        "tenantName": "ChirpStack",
        "applicationId": "845b8aa2-a0f0-436d-ac41-b87c2e62c115",
        "applicationName": "US915-RoadSafe-Beta Sudo Class B",
        "deviceProfileId": "44aa9ad2-3592-48e8-adc9-570bb1ab01d9",
        "deviceProfileName": "RAK-US915-ClassA-OTAA",
        "deviceName": "US40-100-CLASSA-SUDO",
        "devEui": "ac1f09fffe1ad093",
        "deviceClassEnabled": "CLASS_A",
        "tags": {}
    },
    "devAddr": "0091ef18",
    "adr": true,
    "dr": 3,
    "fCnt": 4,
    "fPort": 1,
    "confirmed": false,
    "data": "MzEsMCwwLDAsMA==",
    "rxInfo": [
        {
            "gatewayId": "2cf7f1117040011f",
            "uplinkId": 30096,
            "nsTime": "2026-03-06T09:03:36.439128327+00:00",
            "rssi": -29,
            "snr": 13.8,
            "channel": 4,
            "rfChain": 1,
            "location": {},
            "context": "DavapA==",
            "crcStatus": "CRC_OK"
        }
    ],
    "txInfo": {

So far, what I see are the gaps on the framecounter (I still dont know why).

Maybe we can do it step by step so we can isolate?

  • Disable ADR
  • DR3
  • Unconfirmed
  • US915 Sub-band2
  • Turn on DEBUG mode so we can see logs (AT+DEBUG=1)
  • Keep the distance of the device and the gateway a bit far if they are in the same table or room.

For the set of testing

Test 1:
AT+JOIN=1
AT+SEND=1:12345678 (maybe do this like 20 times and see if there will be failures).

Test 2 (What I did):
AT+JOIN=1
AT+SEND=1:12345678
AT+TIMEREQ=1 (check again if there will be failure)

Test3:
AT+JOIN=1
AT+SEND
AT+TIMEREQ=1
AT+LTTIME=?

Test4: Add other functionalities
Test5: Further functionalities

This will be the approach that I will do so I can see what possibly go wrong. Then if something went wrong, I will check the logs on the device, LNS device console, LNS gateway console and/or the GW itself.

The idea here is we need to find where the issue is coming. If we only run continuously the full application, it will be hard to spot.

Also to add, if you want to run specific sequence of AT commands, I can run it on my setup. For now, I am just assuming the commands you send based on your descriptions. I can help on this approach too.

Why does the frame counter always start at 1, its like the module reset internally.

It resets in every rejoin.