Thanks for your help so far. I’ve double-checked by reflashing the RAK3172 with the AT-firmware and issuing these commands over UART:
AT+DEVEUI=AC1F09FFFE111264
OK
AT+APPKEY=C34A6E1556D0A1F2A5DA6B8513C84791
OK
AT+JOIN
…and in ChirpStack I can clearly see the JoinRequest followed a few seconds later by a JoinAccept (see attached log).
However, as soon as I flash the example sketch you provided—without touching it—the module starts spitting out AT_COMMAND_NOT_FOUND
and eventually:
21:41:28.751 -> -----------------------------------------[SETUP] Confirmed enabled
21:41:28.819 -> [SETUP] Retry = 1
21:41:28.916 -> [SETUP] DR = 0
21:41:29.047 -> Current Work Mode: LoRaWAN.
21:42:04.352 -> AT+DEVEUI=AC1F09FFFE111264
21:42:04.352 -> OK
21:42:11.471 -> AT+APPKEY=C34A6E1556D0A1F2A5DA6B8513C84791
21:42:11.471 -> OK
21:42:31.266 -> AT_COMMAND_NOT_FOUND
21:43:17.244 -> AT_COMMAND_NOT_FOUND
21:43:19.561 -> AT_COMMAND_NOT_FOUND
21:43:24.465 -> OK
21:43:28.418 -> +EVT:JOIN_FAILED_TX_TIMEOUT
21:43:28.547 -> [JOIN-CB] LoRaWan OTAA - join fail!
21:43:28.547 ->
21:43:42.420 -> +EVT:JOIN_FAILED_TX_TIMEOUT
21:43:42.486 -> [JOIN-CB] LoRaWan OTAA - join fail!
That’s expected, because once you upload a custom sketch, the built-in AT interpreter is replaced. The example code runs in “bare-metal” mode (API mode), so AT commands no longer work. It also means the OTAA parameters you set via AT are discarded on flash—by default the sketch will use zeros for AppEUI/DevEUI/AppKey, which of course makes the join fail.
JSON.LOG:
{
"phy_payload": {
"mhdr": {
"m_type": "JoinAccept",
"major": "LoRaWANR1"
},
"mic": [
74,
15,
98,
16
],
"payload": "3aa521cf91518bbfb3fcb818d1477c4f2d2a2dcd2cb2e10ff2f9ae6c"
},
"tx_info": {
"context": "ShxIhw==",
"frequency": 868300000,
"modulation": {
"lora": {
"bandwidth": 125000,
"codeRate": "CR_4_5",
"polarizationInversion": true,
"spreadingFactor": 12
}
},
"power": 16,
"timing": {
"delay": {
"delay": "5s"
}
}
}
},
{
"phy_payload": {
"mhdr": {
"m_type": "JoinRequest",
"major": "LoRaWANR1"
},
"mic": [
70,
2,
6,
121
],
"payload": {
"dev_eui": "ac1f09fffe111264",
"dev_nonce": 659,
"join_eui": "0000000000000000"
}
},
"rx_info": [
{
"channel": 1,
"context": "ShxIhw==",
"crcStatus": "CRC_OK",
"gatewayId": "0016c001ff1f1170",
"location": {},
"metadata": {
"region_common_name": "EU868",
"region_config_id": "eu868"
},
"nsTime": "2025-06-25T19:49:26.947619578+00:00",
"rfChain": 1,
"rssi": -48,
"snr": 6.75,
"uplinkId": 392945578
}
],
"tx_info": {
"frequency": 868300000,
"modulation": {
"lora": {
"bandwidth": 125000,
"codeRate": "CR_4_5",
"spreadingFactor": 12
}
}
}
},
{
"phy_payload": {
"mhdr": {
"m_type": "JoinAccept",
"major": "LoRaWANR1"
},
"mic": [
5,
25,
200,
191
],
"payload": "cdc8d524b30510e54958a2dfe80447662b880bd4c93de514a73a817d"
},
"tx_info": {
"context": "R/x3Fw==",
"frequency": 868500000,
"modulation": {
"lora": {
"bandwidth": 125000,
"codeRate": "CR_4_5",
"polarizationInversion": true,
"spreadingFactor": 12
}
},
"power": 16,
"timing": {
"delay": {
"delay": "5s"
}
}
}
},
{
"phy_payload": {
"mhdr": {
"m_type": "JoinRequest",
"major": "LoRaWANR1"
},
"mic": [
107,
62,
71,
110
],
"payload": {
"dev_eui": "ac1f09fffe111264",
"dev_nonce": 658,
"join_eui": "0000000000000000"
}
},
"rx_info": [
{
"channel": 2,
"context": "R/x3Fw==",
"crcStatus": "CRC_OK",
"gatewayId": "0016c001ff1f1170",
"location": {},
"metadata": {
"region_common_name": "EU868",
"region_config_id": "eu868"
},
"nsTime": "2025-06-25T19:48:51.304477515+00:00",
"rfChain": 1,
"rssi": -48,
"snr": 6.75,
"uplinkId": 1324381653
}
],
"tx_info": {
"frequency": 868500000,
"modulation": {
"lora": {
"bandwidth": 125000,
"codeRate": "CR_4_5",
"spreadingFactor": 12
}
}
}
},
{
"phy_payload": {
"mhdr": {
"m_type": "JoinAccept",
"major": "LoRaWANR1"
},
"mic": [
245,
251,
134,
99
],
"payload": "37e8fde6a6f7fb8e7c644437a9befc05e0730f90b0c7c14a542d9cda"
},
"tx_info": {
"context": "RuS1rg==",
"frequency": 868500000,
"modulation": {
"lora": {
"bandwidth": 125000,
"codeRate": "CR_4_5",
"polarizationInversion": true,
"spreadingFactor": 12
}
},
"power": 16,
"timing": {
"delay": {
"delay": "5s"
}
}
}
},