espressif / esp-protocols

Collection of ESP-IDF components related to networking protocols
190 stars 131 forks source link

Modem: Connection to the MQTT BackEnd is not functioning properly (IDFGH-8038) #109

Closed franz-ms-muc closed 2 years ago

franz-ms-muc commented 2 years ago

There is an error observed in the ESP log when using the Modem for connection to the Backend server.
The error is sporadic.
Logfile:

PS C:\Projects\Releases_Ksc2n\ksc-2n-Tag_Plan_SW_2232_v1.0> idf.py monitor
Executing action: monitor
Serial port COM8
Connecting....
Detecting chip type... ESP32-S3
Running idf_monitor in directory c:\projects\releases_ksc2n\ksc-2n-tag_plan_sw_2232_v1.0
Executing "C:\Espressif\python_env\idf5.0_py3.8_env\Scripts\python.exe C:\Espressif\frameworks\esp-idf-master\tools/idf_monitor.py -p COM8 -b 115200 --toolchain-prefix xtensa-esp32s3-elf- --target esp32s3 c:\projects\releases_ksc2n\ksc-2n-tag_plan_sw_2232_v1.0\build\ksc2n_A_Sample.elf -m 'C:\Espressif\python_env\idf5.0_py3.8_env\Scripts\python.exe' 'C:\Espressif\frameworks\esp-idf-master\tools\idf.py'"...
←[0;33m--- WARNING: GDB cannot open serial ports accessed as COMx←[0m
←[0;33m--- Using \\.\COM8 instead...←[0m
←[0;33m--- idf_monitor on \\.\COM8 115200 ---←[0m
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x2f (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd03e0,len:0x32c0
load:0x403b6000,len:0xbb8
load:0x403b9000,len:0x4c0c
entry 0x403b6260
W (30) boot.esp32s3: eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!
I (46) boot: ESP-IDF v5.0-dev-3290-g01d014c42d-dirty 2nd stage bootloader
I (47) boot: compile time 12:43:33
I (47) boot: chip revision: 0
I (50) boot.esp32s3: Boot SPI Speed : 80MHz
I (55) boot.esp32s3: SPI Mode       : DIO
I (60) boot.esp32s3: SPI Flash Size : 8MB
I (65) boot: Enabling RNG early entropy source...
I (70) boot: Partition Table:
I (74) boot: ## Label            Usage          Type ST Offset   Length
I (81) boot:  0 otadata          OTA data         01 00 0000d000 00002000
I (88) boot:  1 reserved         WiFi data        01 02 0000f000 00001000
I (96) boot:  2 ota_0            OTA app          00 10 00010000 00280000
I (103) boot:  3 ota_1            OTA app          00 11 00290000 00280000
I (111) boot:  4 prod             Unknown data     01 ff 00610000 00003000
I (118) boot:  5 safeNVrb0        Unknown data     01 ff 00613000 00003000
I (126) boot:  6 safeNVrb1        Unknown data     01 ff 00616000 00003000
I (133) boot:  7 safeNVrb2        Unknown data     01 ff 00619000 00003000
I (141) boot:  8 config           WiFi data        01 02 0061c000 00046000
I (149) boot:  9 appl             WiFi data        01 02 00662000 00004000
I (156) boot: 10 shared           WiFi data        01 02 00666000 00003000
W (164) efuse: Loading virtual efuse blocks from flash
EFUSE_BLKx:
0) 0x00800101 0x000f0000 0x09c00000 0x00500000 0x00000022 0x00000000
1) 0x727003f0 0x000034b4 0x00000000 0x01000000 0x7031de00 0x6e8ac420
2) 0x8f51410c 0xc5e48240 0x526721a1 0xbaca0429 0xfcc9f281 0x04ff0210 0xc8f6ec10 0x2e60d8e8
3) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
4) 0x7e68a2e3 0x08fe1124 0x53ed80b5 0xa7d5faa7 0x1b37941e 0x0b3d3af1 0x7e3e1a92 0x7dee2768
5) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
6) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
7) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
8) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
9) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
10) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000

I (256) boot: 11 efuse_em         efuse            01 05 00669000 00002000
I (263) boot: 12 nvs_key          NVS keys         01 04 0066b000 00001000
I (271) boot: 13 nvs              WiFi data        01 02 0066c000 00004000
I (278) boot: 14 spiffs           Unknown data     01 82 00670000 0018f000
I (286) boot: End of partition table
[boot] Custom bootloader message defined in the KConfig file.
I (296) boot: Loading Image: 0!
I (300) esp_image: segment 0: paddr=00010020 vaddr=3c100020 size=50c14h (330772) map
I (367) esp_image: segment 1: paddr=00060c3c vaddr=3fc97f30 size=05158h ( 20824) load
I (372) esp_image: segment 2: paddr=00065d9c vaddr=40374000 size=0a27ch ( 41596) load
I (382) esp_image: segment 3: paddr=00070020 vaddr=42000020 size=fbdd4h (1031636) map
I (568) esp_image: segment 4: paddr=0016bdfc vaddr=4037e27c size=09ca8h ( 40104) load
I (577) esp_image: segment 5: paddr=00175aac vaddr=50000000 size=00010h (    16) load
I (577) esp_image: segment 6: paddr=00175ac4 vaddr=600fe000 size=00028h (    40) load
I (583) esp_image: segment 7: paddr=00175af4 vaddr=00000000 size=0a4dch ( 42204)
I (599) esp_image: Verifying image signature...
I (599) secure_boot_v2: Verifying with RSA-PSS...
I (604) secure_boot_v2: Signature verified successfully!
I (616) boot: Loaded app from partition at offset 0x10000
I (616) secure_boot_v2: enabling secure boot v2...
I (619) secure_boot_v2: secure boot v2 is already enabled, continuing..
I (626) boot: Disabling RNG early entropy source...
I (644) cpu_start: Pro cpu up.
I (644) cpu_start: Starting app cpu, entry point is 0x403755ac
0x403755ac: call_start_cpu1 at C:/Espressif/frameworks/esp-idf-master/components/esp_system/port/cpu_start.c:152

I (0) cpu_start: App cpu up.
I (657) cpu_start: Pro cpu start user code
I (657) cpu_start: cpu freq: 160000000 Hz
I (657) cpu_start: Application information:
I (660) cpu_start: Project name:     ksc2n_A_Sample
I (666) cpu_start: App version:      1
I (670) cpu_start: Compile time:     Aug 10 2022 12:42:59
I (676) cpu_start: ELF file SHA256:  9f611768122a2dc7...
I (682) cpu_start: ESP-IDF:          v5.0-dev-3290-g01d014c42d-dirty
I (689) heap_init: Initializing. RAM available for dynamic allocation:
I (696) heap_init: At 3FCBE6C0 len 00021940 (134 KiB): D/IRAM
I (703) heap_init: At 3FCE0000 len 0000EE34 (59 KiB): STACK/DRAM
I (710) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM
I (716) heap_init: At 600FE028 len 00001FD8 (7 KiB): RTCRAM
I (723) spi_flash: detected chip: generic
I (727) spi_flash: flash io: dio
W (730) cpu_start: eFuse virtual mode is enabled. If Secure boot or Flash encryption is enabled then it does not provide any security. FOR TESTING ONLY!
W (745) efuse: Loading virtual efuse blocks from flash
EFUSE_BLKx:
0) 0x00800101 0x000f0000 0x09c00000 0x00500000 0x00000022 0x00000000
1) 0x727003f0 0x000034b4 0x00000000 0x01000000 0x7031de00 0x6e8ac420
2) 0x8f51410c 0xc5e48240 0x526721a1 0xbaca0429 0xfcc9f281 0x04ff0210 0xc8f6ec10 0x2e60d8e8
3) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
4) 0x7e68a2e3 0x08fe1124 0x53ed80b5 0xa7d5faa7 0x1b37941e 0x0b3d3af1 0x7e3e1a92 0x7dee2768
5) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
6) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
7) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
8) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
9) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000
10) 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000

I (840) sleep: Configure to isolate all GPIO pins in sleep state
I (844) sleep: Enable automatic switching of GPIO sleep configuration
I (851) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (915) DEM: The DEM is initialized.
I (945) system_api: Base MAC address is not set
I (945) system_api: read default base MAC address from EFUSE
I (945) BE_CommManager: Client initialized successfully
I (955) gpio: GPIO[6]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (965) gpio: GPIO[7]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (975) gpio: GPIO[10]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (985) gpio: GPIO[11]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (995) gpio: GPIO[45]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (995) gpio: GPIO[46]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (1005) gpio: GPIO[47]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (1015) gpio: GPIO[48]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (1025) gpio: GPIO[4]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 1| Intr:0
I (1035) gpio: GPIO[5]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 1| Intr:0
I (1045) EcuManager: +++++++  initialisation completed
I (1065) HAL_CAN_DRV: Driver installed
I (1065) HAL_CAN_DRV: Driver started
I (1065) HAL_CAN_DRV: Starting transmissions
I (1075) pp: pp rom version: e7ae62f
I (1075) net80211: net80211 rom version: e7ae62f
I (1085) wifi:wifi driver task: 3fce8014, prio:23, stack:6656, core=0
I (1085) wifi:wifi firmware version: 0ca6d0b
I (1085) wifi:wifi certification version: v7.0
I (1085) wifi:config NVS flash: disabled
I (1095) wifi:config nano formating: disabled
I (1095) wifi:Init data frame dynamic rx buffer num: 32
I (1105) wifi:Init management frame dynamic rx buffer num: 32
I (1105) wifi:Init management short buffer num: 32
I (1115) wifi:Init dynamic tx buffer num: 32
I (1115) wifi:Init static tx FG buffer num: 2
I (1115) wifi:Init static rx buffer size: 1600
I (1125) wifi:Init static rx buffer num: 10
I (1125) wifi:Init dynamic rx buffer num: 32
I (1135) wifi_init: rx ba win: 6
I (1135) wifi_init: tcpip mbox: 32
I (1135) wifi_init: udp mbox: 6
I (1145) wifi_init: tcp mbox: 6
I (1145) wifi_init: tcp tx win: 5744
I (1145) wifi_init: tcp rx win: 5744
I (1155) wifi_init: tcp mss: 1440
I (1155) wifi_init: WiFi IRAM OP enabled
I (1165) wifi_init: WiFi RX IRAM OP enabled
I (1165) statusLED: statusLED initialization!
I (1175) ESPModem: Modem successfully initialized
I (1175) statusLED: statusLED initialized!
I (1185) EcuManager: +++++++  ECU state changed from ECU_STATE_NOT_INIT to ECU_STATE_INITIALIZING
I (1195) EcuManager: Wakeup cause undefined, probably normal startup.
I (1195) EcuManager: NV data check status OK !
I (1205) EcuManager: +++++++  ECU state changed from ECU_STATE_INITIALIZING to ECU_STATE_NORMAL
I (1215) ResourceManager: ++  RESOURCE_CAN_0 changed state: from RESOURCE_STATE_INIT to RESOURCE_STATE_STARTING with target state: RESOURCE_TARGET_STATE_STARTED
I (1225) ResourceManager: ++  RESOURCE_ISOLIB_CAN_0 changed state: from RESOURCE_STATE_INIT to RESOURCE_STATE_STOPPED with target state: RESOURCE_TARGET_STATE_STARTED
I (1245) ResourceManager: ++  RESOURCE_WIFI_CON changed state: from RESOURCE_STATE_INIT to RESOURCE_STATE_STARTING with target state: RESOURCE_TARGET_STATE_STARTED
I (1255) ResourceManager: ++  send start AP command
I (1265) WiFi_AP: WiFi starts as AP
I (1265) phy_init: phy_version 501,79e7e9b,Apr 19 2022,11:10:08
I (1385) wifi:mode : softAP (34:b4:72:70:03:f1)
I (1385) wifi:Total power save buffer number: 16
I (1385) wifi:Init max length of beacon: 752/752
I (1385) wifi:Init max length of beacon: 752/752
I (1385) ResourceManager: ++  RESOURCE_INTERNET changed state: from RESOURCE_STATE_INIT to RESOURCE_STATE_STARTING with target state: RESOURCE_TARGET_STATE_STARTED
I (1385) WiFi_AP: received WIFI_EVENT_AP_START
I (1405) ResourceManager: ++  RESOURCE_CAN_0 changed state: from RESOURCE_STATE_STARTING to RESOURCE_STATE_STARTED with target state: RESOURCE_TARGET_STATE_STARTED
I (1425) ResourceManager: ++  RESOURCE_ISOLIB_CAN_0 changed state: from RESOURCE_STATE_STOPPED to RESOURCE_STATE_STARTING with target state: RESOURCE_TARGET_STATE_STARTED
I (1445) ResourceManager: ++  RESOURCE_WIFI_CON changed state: from RESOURCE_STATE_STARTING to RESOURCE_STATE_CONNECTING with target state: RESOURCE_TARGET_STATE_STARTED
I (1455) ResourceManager: ++  connect the STA to the remote AP
W (1465) WiFi_AP: WiFi_AP::connect called but not supported
I (1465) statusLED: Displayed code (status) changed to STATE_BLINK_CODE_22 - J1939 Error
I (1485) ResourceManager: ++  RESOURCE_ISOLIB_CAN_0 changed state: from RESOURCE_STATE_STARTING to RESOURCE_STATE_STARTED with target state: RESOURCE_TARGET_STATE_STARTED
I (1495) ResourceManager: ++  connect the STA to the remote AP
W (1495) WiFi_AP: WiFi_AP::connect called but not supported
I (2045) statusLED: Displayed code (status) changed to STATE_05_HZ_BLINK_RATE - Normal
I (2065) CF2_IsoBus: NETWORK EVENT CF2 32
I (2065) CF3_Telematic: NETWORK EVENT CF3 32
I (2065) CF2_IsoBus: NETWORK EVENT CF2 200
I (2065) CF3_Telematic: NETWORK EVENT CF3 200
I (5185) ESPModem: Modem powered ON successfully
I (5195) ESPmodem_Cmux: config NETWORK
I (5195) uart: queue free spaces: 30
I (5205) ESPmodem_Cmux: AT command OK
I (5215) ESPmodem_Cmux: delete 2-wire UART
I (5215) uart: ALREADY NULL
I (5235) ResourceManager: ++  RESOURCE_INTERNET changed state: from RESOURCE_STATE_STARTING to RESOURCE_STATE_CONNECTING with target state: RESOURCE_TARGET_STATE_STARTED
I (5245) ESPmodem_Cmux: config MODEM
I (5245) ESPmodem_Cmux: config NETWORK to 4-wire
I (5245) uart: queue free spaces: 30
I (5245) ESPmodem_Cmux: config dce to 4-wire
I (5255) ESPmodem_Cmux: setting flow_control
I (5265) ESPmodem_Cmux: set_flow_control OK
I (5265) ESPmodem_Cmux: esp_modem_set_network_mode OK
I (5275) ESPmodem_Cmux: set_preferred_mode OK
I (5285) ESPmodem_Cmux: set_network_bands OK
I (5295) ESPmodem_Cmux: Module name: SIMCOM_SIM7070
I (5295) ESPmodem_Cmux: Module SW version: Revision:1951B10SIM7070
I (5305) ESPmodem_Cmux: IMEI: 865456053946891
I (5315) ESPmodem_Cmux: IMSI: 901288005633611
I (5325) ESPmodem_Cmux: Waiting for 500 ms
I (5835) ESPmodem_Cmux: current config state: 7
I (5845) ESPmodem_Cmux: Waiting for 500 ms
I (6355) ESPmodem_Cmux: current config state: 7
I (6365) ESPmodem_Cmux: Operator name: "A1 BG",9
I (6385) ESPmodem_Cmux: Mode: 9
I (6395) ESPmodem_Cmux: Radio state: 1
I (6425) ESPmodem_Cmux: Battery status: voltage=4291, charging_status=0, level=99
I (6425) ESPmodem_Cmux: Signal quality: rssi=99, ber=99
I (6575) ESPmodem_Cmux: PPP state changed event 259
I (6575) ESPmodem_Cmux: PPP state changed event 262
I (6575) ESPmodem_Cmux: Modem has correctly entered multiplexed command/data mode
I (6595) ESPmodem_Cmux: Attached to nework, wait for IP
I (12595) ESPmodem_Cmux: PPP state changed event 263
I (12595) ESPmodem_Cmux: PPP state changed event 265
I (12645) esp-netif_lwip-ppp: Connected
I (12645) esp-netif_lwip-ppp: Name Server1: 217.14.160.130
I (12645) esp-netif_lwip-ppp: Name Server2: 217.14.164.35
I (12655) ESPmodem_Cmux: Modem Connect to PPP Server
I (12655) ESPmodem_Cmux: ~~~~~~~~~~~~~~
I (12665) ESPmodem_Cmux: IP          : 100.82.28.119
I (12665) ESPmodem_Cmux: Netmask     : 255.255.255.255
I (12675) ESPmodem_Cmux: Gateway     : 10.64.64.64
I (12675) ESPmodem_Cmux: Name Server1: 217.14.160.130
I (12685) ESPmodem_Cmux: Name Server2: 217.14.164.35
I (12685) ESPmodem_Cmux: ~~~~~~~~~~~~~~
I (12695) ESPmodem_Cmux: GOT ip event!!!
I (12695) ESPmodem_Cmux: PPP state changed event 266
I (12705) ResourceManager: ++  RESOURCE_INTERNET changed state: from RESOURCE_STATE_CONNECTING to RESOURCE_STATE_STARTED with target state: RESOURCE_TARGET_STATE_STARTED
I (16055) BE_CommManager: MQTT_EVENT_BEFORE_CONNECT
E (24105) esp-tls-mbedtls: mbedtls_ssl_handshake returned -0x7280
I (24115) esp-tls-mbedtls: Certificate verified.
E (24115) esp-tls: Failed to open new connection
E (24115) TRANSPORT_BASE: Failed to open a new connection
E (24145) mqtt_client: Error transport connect
E (24145) BE_CommManager: MQTT_EVENT_ERROR
E (24145) BE_CommManager: Last error code reported from esp-tls: 0x801a: ESP_ERR_MBEDTLS_SSL_HANDSHAKE_FAILED
E (24155) BE_CommManager: Last tls stack error number: 0x7280: ERROR
E (24165) BE_CommManager: Last captured errno : 0 (Success)
I (24165) BE_CommManager: MQTT_EVENT_DISCONNECTED
I (26055) mqtt_client: Client force reconnect requested
I (26055) BE_CommManager: MQTT_EVENT_BEFORE_CONNECT
W (40985) esp-tls: Failed to open new connection in specified timeout
E (40985) TRANSPORT_BASE: Failed to open a new connection
E (40985) mqtt_client: Error transport connect
E (40985) BE_CommManager: MQTT_EVENT_ERROR
E (40995) BE_CommManager: Last error code reported from esp-tls: 0x8006: ESP_ERR_ESP_TLS_CONNECTION_TIMEOUT
E (41005) BE_CommManager: Last tls stack error number: 0x0: ESP_OK
E (41005) BE_CommManager: Last captured errno : 0 (Success)
I (41015) BE_CommManager: MQTT_EVENT_DISCONNECTED
I (41055) mqtt_client: Client force reconnect requested
I (41055) BE_CommManager: MQTT_EVENT_BEFORE_CONNECT
E (51065) esp-tls: [sock=54] select() timeout
E (51065) esp-tls: Failed to open new connection
E (51065) TRANSPORT_BASE: Failed to open a new connection
E (51065) mqtt_client: Error transport connect
E (51075) BE_CommManager: MQTT_EVENT_ERROR
E (51075) BE_CommManager: Last error code reported from esp-tls: 0x8006: ESP_ERR_ESP_TLS_CONNECTION_TIMEOUT
E (51085) BE_CommManager: Last tls stack error number: 0x0: ESP_OK
E (51095) BE_CommManager: Last captured errno : 0 (Success)
I (51095) BE_CommManager: MQTT_EVENT_DISCONNECTED
I (56055) mqtt_client: Client force reconnect requested
I (56055) BE_CommManager: MQTT_EVENT_BEFORE_CONNECT
E (66065) esp-tls: [sock=54] select() timeout
E (66065) esp-tls: Failed to open new connection
E (66065) TRANSPORT_BASE: Failed to open a new connection
E (66065) mqtt_client: Error transport connect
E (66075) BE_CommManager: MQTT_EVENT_ERROR
E (66075) BE_CommManager: Last error code reported from esp-tls: 0x8006: ESP_ERR_ESP_TLS_CONNECTION_TIMEOUT
E (66085) BE_CommManager: Last tls stack error number: 0x0: ESP_OK
E (66095) BE_CommManager: Last captured errno : 0 (Success)
I (66095) BE_CommManager: MQTT_EVENT_DISCONNECTED
I (71055) mqtt_client: Client force reconnect requested
I (71055) BE_CommManager: MQTT_EVENT_BEFORE_CONNECT

PS C:\Projects\Releases_Ksc2n\ksc-2n-Tag_Plan_SW_2232_v1.0>
franz-ms-muc commented 2 years ago

Sorry, Logfile coming soon.

VasilNikolovRilabs commented 2 years ago

@franz-ms-muc What we have observed is the following error: ESP_ERR_MBEDTLS_SSL_HANDSHAKE_FAILED. The same issue with the same certificates and private keys does not happen when connecting to the back end with WiFi STA. Issue is almost always observed when using ESP MODEM with SIM7070


E (24105) esp-tls-mbedtls: mbedtls_ssl_handshake returned -0x7280
I (24115) esp-tls-mbedtls: Certificate verified.
E (24115) esp-tls: Failed to open new connection```
VasilNikolovRilabs commented 2 years ago

@franz-ms-muc Another information: it seems that HTTPS is possible over ESP MODEM with SIM7070 but not MQTTS. The problem is only happening when starting the MQTTS connection to the server, OTA via HTTPS is working fine(with the same certificates)

david-cermak commented 2 years ago

The reported error of 0x7280 means:

The connection indicated an EOF.

So it looks like the MQTT broker closed the connection before the handshake completed. The reason why it works over WiFi might be that the server would validate some timeout and the connection is simply faster over WiFi.

VasilNikolovRilabs commented 2 years ago

@david-cermak Thank for your feedback, do you have any hint for us which setting on the server side can influence the timing behavior of the TLS?

franz-ms-muc commented 2 years ago

image

VasilNikolovRilabs commented 2 years ago

@david-cermak @franz-ms-muc

I am attaching the traces of the TLS handshake with extended trace output for TLS and TCP.

In the first trace "wifi_log_netif&tls.txt" we clearly see that TLS is working using the same server and same certificates. `I (42425) mbedtls: ssl_msg.c:2346 <= write handshake message

I (42435) mbedtls: ssl_tls.c:2867 <= write finished

I (42445) mbedtls: ssl_msg.c:1789 => flush output

I (42445) mbedtls: ssl_msg.c:1801 <= flush output

I (42455) mbedtls: ssl_cli.c:4192 client state: 12

I (42455) mbedtls: ssl_cli.c:4077 => parse new session ticket

I (42465) mbedtls: ssl_msg.c:3546 => read record

I (42465) mbedtls: ssl_msg.c:1573 => fetch input

I (42475) mbedtls: ssl_msg.c:1730 in_left: 0, nb_want: 5

I (42475) mbedtls: ssl_msg.c:1755 in_left: 0, nb_want: 5

I (42485) mbedtls: ssl_msg.c:1756 ssl->f_recv(_timeout)() returned 0 (-0x0000)

W (42495) mbedtls: ssl_msg.c:4228 mbedtls_ssl_fetch_input() returned -29312 (-0x7280)

W (42505) mbedtls: ssl_msg.c:3579 ssl_get_next_record() returned -29312 (-0x7280)

W (42505) mbedtls: ssl_cli.c:4081 mbedtls_ssl_read_record() returned -29312 (-0x7280)

I (42515) mbedtls: ssl_tls.c:5323 <= handshake`

In the second trace "simcom_log_netif&tls.txt" the TLS session is started correctly: `I (49576) mbedtls: ssl_msg.c:2346 <= write handshake message

I (49586) mbedtls: ssl_tls.c:2867 <= write finished

I (49596) mbedtls: ssl_msg.c:1789 => flush output

I (49596) mbedtls: ssl_msg.c:1801 <= flush output

I (49606) mbedtls: ssl_cli.c:4192 client state: 12

I (49606) mbedtls: ssl_cli.c:4077 => parse new session ticket

I (49616) mbedtls: ssl_msg.c:3546 => read record

I (49616) mbedtls: ssl_msg.c:1573 => fetch input

I (49626) mbedtls: ssl_msg.c:1730 in_left: 0, nb_want: 5

tcp_slowtmr: processing active pcb tcp_recved: received 5 bytes, wnd 4652 (1092). I (50166) mbedtls: ssl_msg.c:1755 in_left: 0, nb_want: 5

I (50166) mbedtls: ssl_msg.c:1756 ssl->f_recv(_timeout)() returned 5 (-0xfffffffb)

I (50166) mbedtls: ssl_msg.c:1776 <= fetch input

I (50176) mbedtls: ssl_msg.c:1573 => fetch input

I (50176) mbedtls: ssl_msg.c:1730 in_left: 5, nb_want: 1046 `

MartinPatarinski commented 2 years ago

@david-cermak @franz-ms-muc After further investigation and enabling logging of lwip we were able to get more information of the root cause. During the TLS handshake procedure we receive a "Connection closed" error: lwip_recv_tcp: p == NULL, error is "Connection closed."! Whenever we retry a couple of times, the connection is established successfully and MQTT runs normally. Here is the log of a connection failed and after that connection OK attempts:

I (41180) BE_CommManager: MQTT_EVENT_BEFORE_CONNECT lwip_socket(PF_INET, SOCK_STREAM, 0) = 54 lwip_connect(54, addr=85.236.61.186 port=9883) lwip_connect(54) failed, err=-5 lwip_select(55, 0x0, 0x3fcc17e4, 0x0, tvsec=10 tvusec=0) lwip_selscan: fd=54 ready for writing lwip_select: nready=1 lwip_getsockopt(54, SOL_SOCKET, SO_ERROR) = 0 lwip_send(54, data=0x3fcc8158, size=251, flags=0x0) lwip_send(54) err=0 written=251 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x0 lwip_recv_tcp: netconn_recv err=0, pbuf=0x3fcc9898 lwip_recv_tcp: buflen=1280 recv_left=5 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 87, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=1275 recv_left=87 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=87 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=1188 recv_left=5 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 1939, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=1183 recv_left=1939 off=0 lwip_recv_tcp: deleting pbuf=0x3fcc9898 lwip_recv_tcp: top while sock->lastdata=0x0 lwip_recv_tcp: netconn_recv err=-7, pbuf=0x0 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=1183 lwip_recvfrom(54, 0x3fcc44a8, 756, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x0 lwip_recv_tcp: netconn_recv err=0, pbuf=0x3fcc9898 lwip_recv_tcp: buflen=1280 recv_left=756 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=756 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=524 recv_left=5 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 333, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=519 recv_left=333 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=333 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=186 recv_left=5 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 176, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=181 recv_left=176 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=176 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=5 recv_left=5 off=0 lwip_recv_tcp: deleting pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 4, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x0 lwip_recv_tcp: netconn_recv err=0, pbuf=0x3fccbc1c lwip_recv_tcp: buflen=4 recv_left=4 off=0 lwip_recv_tcp: deleting pbuf=0x3fccbc1c lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=4 lwip_send(54, data=0x3fcc8158, size=914, flags=0x0) lwip_send(54) err=0 written=914 lwip_send(54, data=0x3fcc8158, size=75, flags=0x0) lwip_send(54) err=0 written=75 lwip_send(54, data=0x3fcc8158, size=269, flags=0x0) lwip_send(54) err=0 written=269 lwip_send(54, data=0x3fcc8158, size=6, flags=0x0) lwip_send(54) err=0 written=6 lwip_send(54, data=0x3fcc8158, size=45, flags=0x0) lwip_send(54) err=0 written=45 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x0 lwip_recv_tcp: netconn_recv err=-15, pbuf=0x0 lwip_recv_tcp: p == NULL, error is "Connection closed."! lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=0 E (47230) esp-tls-mbedtls: mbedtls_ssl_handshake returned -0x7280 I (47230) esp-tls-mbedtls: Certificate verified. E (47240) esp-tls: Failed to open new connection E (47240) TRANSPORT_BASE: Failed to open a new connection lwip_shutdown(54, how=2) lwip_close(54) E (47250) mqtt_client: Error transport connect E (47260) BE_CommManager: MQTT_EVENT_ERROR E (47260) BE_CommManager: Last error code reported from esp-tls: 0x801a: ESP_ERR_MBEDTLS_SSL_HANDSHAKE_FAILED E (47270) BE_CommManager: Last tls stack error number: 0x7280: ERROR E (47280) BE_CommManager: Last captured errno : 0 (Success) I (47290) BE_CommManager: MQTT_EVENT_DISCONNECTED I (51180) mqtt_client: Client force reconnect requested I (51180) BE_CommManager: MQTT_EVENT_BEFORE_CONNECT lwip_socket(PF_INET, SOCK_STREAM, 0) = 54 lwip_connect(54, addr=85.236.61.186 port=9883) lwip_connect(54) failed, err=-5 lwip_select(55, 0x0, 0x3fcc17e4, 0x0, tvsec=10 tvusec=0) lwip_selscan: fd=54 ready for writing lwip_select: nready=1 lwip_getsockopt(54, SOL_SOCKET, SO_ERROR) = 0 lwip_send(54, data=0x3fcc8158, size=251, flags=0x0) lwip_send(54) err=0 written=251 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x0 lwip_recv_tcp: netconn_recv err=0, pbuf=0x3fcc9898 lwip_recv_tcp: buflen=1280 recv_left=5 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 87, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=1275 recv_left=87 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=87 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=1188 recv_left=5 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 1939, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=1183 recv_left=1939 off=0 lwip_recv_tcp: deleting pbuf=0x3fcc9898 lwip_recv_tcp: top while sock->lastdata=0x0 lwip_recv_tcp: netconn_recv err=-7, pbuf=0x0 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=1183 lwip_recvfrom(54, 0x3fcc44a8, 756, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x0 lwip_recv_tcp: netconn_recv err=0, pbuf=0x3fcc9898 lwip_recv_tcp: buflen=1280 recv_left=756 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=756 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=524 recv_left=5 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 333, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=519 recv_left=333 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=333 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=186 recv_left=5 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 176, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=181 recv_left=176 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=176 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fcc9898 lwip_recv_tcp: buflen=5 recv_left=5 off=0 lwip_recv_tcp: deleting pbuf=0x3fcc9898 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 4, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x0 lwip_recv_tcp: netconn_recv err=0, pbuf=0x3fccb72c lwip_recv_tcp: buflen=4 recv_left=4 off=0 lwip_recv_tcp: deleting pbuf=0x3fccb72c lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=4 lwip_send(54, data=0x3fcc8158, size=914, flags=0x0) lwip_send(54) err=0 written=914 lwip_send(54, data=0x3fcc8158, size=75, flags=0x0) lwip_send(54) err=0 written=75 lwip_send(54, data=0x3fcc8158, size=269, flags=0x0) lwip_send(54) err=0 written=269 lwip_send(54, data=0x3fcc8158, size=6, flags=0x0) lwip_send(54) err=0 written=6 lwip_send(54, data=0x3fcc8158, size=45, flags=0x0) lwip_send(54) err=0 written=45 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x0 lwip_recv_tcp: netconn_recv err=0, pbuf=0x3fccbed4 lwip_recv_tcp: buflen=51 recv_left=5 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fccbed4 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 1, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fccbed4 lwip_recv_tcp: buflen=46 recv_left=1 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fccbed4 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=1 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fccbed4 lwip_recv_tcp: buflen=45 recv_left=5 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fccbed4 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 40, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fccbed4 lwip_recv_tcp: buflen=40 recv_left=40 off=0 lwip_recv_tcp: deleting pbuf=0x3fccbed4 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=40 lwip_select(55, 0x0, 0x3fcc17d8, 0x3fcc17e0, tvsec=10 tvusec=0) lwip_selscan: fd=54 ready for writing lwip_select: nready=1 lwip_send(54, data=0x3fcc8158, size=55, flags=0x0) lwip_send(54) err=0 written=55 lwip_select(55, 0x3fcc1798, 0x0, 0x3fcc17a0, tvsec=10 tvusec=0) lwip_selscan: fd=54 ready for reading lwip_select: nready=1 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x0 lwip_recv_tcp: netconn_recv err=0, pbuf=0x3fccad80 lwip_recv_tcp: buflen=33 recv_left=5 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fccad80 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 28, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fccad80 lwip_recv_tcp: buflen=28 recv_left=28 off=0 lwip_recv_tcp: deleting pbuf=0x3fccad80 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=28 I (58530) BE_CommManager: MQTT_EVENT_CONNECTED lwip_select(55, 0x3fcc1868, 0x0, 0x3fcc1870, tvsec=1 tvusec=0) lwip_select: timeout expired lwip_select(55, 0x3fcc1798, 0x0, 0x3fcc17a0, tvsec=0 tvusec=0) lwip_select: no timeout, returning 0 lwip_select(55, 0x3fcc1868, 0x0, 0x3fcc1870, tvsec=1 tvusec=0) lwip_select: timeout expired lwip_select(55, 0x3fcc1798, 0x0, 0x3fcc17a0, tvsec=0 tvusec=0) lwip_select: no timeout, returning 0 lwip_select(55, 0x3fcc1868, 0x0, 0x3fcc1870, tvsec=1 tvusec=0) lwip_select(55, 0x0, 0x3fcabce8, 0x3fcabcf0, tvsec=10 tvusec=0) lwip_selscan: fd=54 ready for writing lwip_select: nready=1 lwip_send(54, data=0x3fcc8158, size=125, flags=0x0) lwip_send(54) err=0 written=125 lwip_select: timeout expired lwip_select(55, 0x3fcc1798, 0x0, 0x3fcc17a0, tvsec=0 tvusec=0) lwip_select: no timeout, returning 0 lwip_select(55, 0x0, 0x3fcc17a8, 0x3fcc17b0, tvsec=10 tvusec=0) lwip_selscan: fd=54 ready for writing lwip_select: nready=1 lwip_send(54, data=0x3fcc8158, size=31, flags=0x0) lwip_send(54) err=0 written=31 lwip_select(55, 0x3fcc1868, 0x0, 0x3fcc1870, tvsec=1 tvusec=0) lwip_selscan: fd=54 ready for reading lwip_select: nready=1 lwip_select(55, 0x3fcc1798, 0x0, 0x3fcc17a0, tvsec=0 tvusec=0) lwip_selscan: fd=54 ready for reading lwip_select: nready=1 lwip_recvfrom(54, 0x3fcc4004, 5, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x0 lwip_recv_tcp: netconn_recv err=0, pbuf=0x3fccc910 lwip_recv_tcp: buflen=34 recv_left=5 off=0 lwip_recv_tcp: lastdata now pbuf=0x3fccc910 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=5 lwip_recvfrom(54, 0x3fcc4009, 29, 0x0, ..) lwip_recv_tcp: top while sock->lastdata=0x3fccc910 lwip_recv_tcp: buflen=29 recv_left=29 off=0 lwip_recv_tcp: deleting pbuf=0x3fccc910 lwip_recvfrom(54): addr=85.236.61.186 port=9883 len=29 I (62220) BE_CommManager: MQTT_EVENT_SUBSCRIBED, msg_id=19949 lwip_select(55, 0x3fcc1868, 0x0, 0x3fcc1870, tvsec=1 tvusec=0) lwip_selscan: fd=54 ready for reading

david-cermak commented 2 years ago

As said above. The connection gets closed actively from the server, (socket operation returning 0 is EOF, as mentioned in the initial error message and my comment), so there's not much we could do on the client's end.

Unfortunately I'm not familiar with server settings, I usually run a local mosquitto which AFAIK doesn't have such config.

I think we couldn't address this on client's end, unless we silently retry, or speed up the connection somehow? (like increasing the CPU frequency or updating the baudrate if your board can handle it or perhaps using USB instead of UART?)

MartinPatarinski commented 2 years ago

Thank you , David! We managed to setup a local Mosquitto with TLS and the ESP32 device works with it via Modem internet connection. The "connection closed" is not observed. We can close this issue.

david-cermak commented 2 years ago

Thanks for the info, closing