I am following the MQTT example provided https://infocenter.nordicsemi.com/topic/sdk_nrf5_v16.0.0/iot_sdk_app_mqtt.html?cp=7_5_0_4_2_4_6 with nRFSDK 16.0.0 and nRF52DK
I have similar problem like this thread (I can't find a solution in this thread) but with the non secure port 1883. I established 6lowpan connection with nRF52DK and raspberry pi w. The ping6 shows fine and the LED 1 is ON
ping6 2001:db8::63:f7ff:fe14:8e3 -c 4 PING 2001:db8::63:f7ff:fe14:8e3(2001:db8::63:f7ff:fe14:8e3) 56 data bytes 64 bytes from 2001:db8::63:f7ff:fe14:8e3: icmp_seq=1 ttl=255 time=222 ms 64 bytes from 2001:db8::63:f7ff:fe14:8e3: icmp_seq=2 ttl=255 time=149 ms 64 bytes from 2001:db8::63:f7ff:fe14:8e3: icmp_seq=3 ttl=255 time=122 ms 64 bytes from 2001:db8::63:f7ff:fe14:8e3: icmp_seq=4 ttl=255 time=145 ms
and the interface address is same as the example 2001:db8::1.
Connection changed to non secure with the port 1883
static void app_mqtt_connect(void) { mqtt_client_init(&m_app_mqtt_client); memcpy(m_app_mqtt_client.broker_addr.u8, m_broker_addr.u8, IPV6_ADDR_SIZE); m_app_mqtt_client.broker_port = APP_MQTT_BROKER_PORT; m_app_mqtt_client.evt_cb = app_mqtt_evt_handler; m_app_mqtt_client.client_id.p_utf_str = (uint8_t *)m_client_id; m_app_mqtt_client.client_id.utf_strlen = strlen(m_client_id); m_app_mqtt_client.p_password = NULL; m_app_mqtt_client.p_user_name = NULL; m_app_mqtt_client.transport_type = MQTT_TRANSPORT_NON_SECURE; //m_app_mqtt_client.p_security_settings = &m_tls_keys; m_app_mqtt_client.p_security_settings = NULL; m_app_mqtt_client.protocol_version = MQTT_VERSION_3_1_1; UNUSED_VARIABLE(mqtt_connect(&m_app_mqtt_client)); }
And disabled the legacy mode (#define BLE_6LOWPAN_LEGACY_MODE 0)
When pressing button 1 on DK, the mosquitto broker response like this
1610669581: New client connected from 2001:db8::63:f7ff:fe14:8e3 as nrfPublisher (c1, k60). 1610669581: No will message specified. 1610669581: Sending CONNACK to nrfPublisher (0, 0) 1610669671: Client nrfPublisher has exceeded timeout, disconnecting. 1610669671: Socket error on client nrfPublisher, disconnecting.
And tshark listens on port 1883
1 0.000000000 2001:db8::63:f7ff:fe14:8e3 → 2001:db8::1 TCP 80 49153 → 1883 [SYN] Seq=0 Win=3584 Len=0 MSS=896 2 0.000313993 2001:db8::1 → 2001:db8::63:f7ff:fe14:8e3 TCP 80 1883 → 49153 [SYN, ACK] Seq=0 Ack=1 Win=64660 Len=0 MSS=1220 3 0.096899823 2001:db8::63:f7ff:fe14:8e3 → 2001:db8::1 MQTT 102 Connect Command 4 0.097272815 2001:db8::1 → 2001:db8::63:f7ff:fe14:8e3 TCP 76 1883 → 49153 [ACK] Seq=1 Ack=27 Win=64634 Len=0 5 0.101568718 2001:db8::1 → 2001:db8::63:f7ff:fe14:8e3 MQTT 80 Connect Ack 6 0.402768953 2001:db8::1 → 2001:db8::63:f7ff:fe14:8e3 TCP 80 [TCP Retransmission] 1883 → 49153 [PSH, ACK] Seq=1 Ack=27 Win=64634 Len=4 7 1.012792260 2001:db8::1 → 2001:db8::63:f7ff:fe14:8e3 TCP 80 [TCP Retransmission] 1883 → 49153 [PSH, ACK] Seq=1 Ack=27 Win=64634 Len=4 8 2.262781237 2001:db8::1 → 2001:db8::63:f7ff:fe14:8e3 TCP 80 [TCP Retransmission] 1883 → 49153 [PSH, ACK] Seq=1 Ack=27 Win=64634 Len=4 9 4.742809773 2001:db8::1 → 2001:db8::63:f7ff:fe14:8e3 TCP 80 [TCP Retransmission] 1883 → 49153 [PSH, ACK] Seq=1 Ack=27 Win=64634 Len=4 10 9.622823178 2001:db8::1 → 2001:db8::63:f7ff:fe14:8e3 TCP 80 [TCP Retransmission] 1883 → 49153 [PSH, ACK] Seq=1 Ack=27 Win=64634 Len=4 11 19.702820089 2001:db8::1 → 2001:db8::63:f7ff:fe14:8e3 TCP 80 [TCP Retransmission] 1883 → 49153 [PSH, ACK] Seq=1 Ack=27 Win=64634 Len=4 12 39.542833533 2001:db8::1 → 2001:db8::63:f7ff:fe14:8e3 TCP 80 [TCP Retransmission] 1883 → 49153 [PSH, ACK] Seq=1 Ack=27 Win=64634 Len=4 13 78.582847983 2001:db8::1 → 2001:db8::63:f7ff:fe14:8e3 TCP 80 [TCP Retransmission] 1883 → 49153 [PSH, ACK] Seq=1 Ack=27 Win=64634 Len=4 14 90.307113109 2001:db8::1 → 2001:db8::63:f7ff:fe14:8e3 TCP 76 1883 → 49153 [FIN, ACK] Seq=5 Ack=27 Win=64634 Len=0
However, there is no response from the nRF52DK, the UART interface shows
<info> app: Physical layer in connectable mode. <info> app: Physical layer: connected. <info> app: IPv6 Interface Up.
It seems that the board hangs for ever, even-though the ping6 still works fine, but no more actions with any buttons. Also tried a break point at mqtt_handle_packet() in mqtt_rx.c, but this event is never called.
== Update ==
Enabled mqtt config log (#define MQTT_CONFIG_LOG_ENABLED 1, and #define MQTT_CONFIG_LOG_LEVEL 4) and after pressing button 1 returns this
<debug> mqtt_enc: Encoding Protocol Description. Str:MQTT�0 Size:00000004. <debug> mqtt_enc: >> pack_utf8_str USL:00000006 BL:0000007B, B:0x20004B7D, O:00000000 A:0000007B <debug> mqtt_enc: >> pack_uint16 V:0004 BL:0000007B, B:0x20004B7D, O:00000000 A:0000007B <debug> mqtt_enc: Encoding Protocol Version 04. <debug> mqtt_enc: >> pack_uint8 V:04 BL:0000007B, B:0x20004B7D, O:00000006 <debug> mqtt_enc: Encoding Keep Alive Time 003C. <debug> mqtt_enc: >> pack_uint16 V:003C BL:0000007B, B:0x20004B7<debug> mqtt_enc: >> pack_uint8 V:10 BL:00000080, B:0x20004B7B, O:00000000 <debug> mqtt_enc: >> RL:0x00000018 O:00000001 P:0x20004B7B <debug> mqtt_enc: << RLS:0x00000001 <debug> mqtt_lwip: [0x2000C028]: TCP Write in Progress, length 0x0000001A. <debug> mqtt_lwip: [0x2000C028]: TCP Write Complete.
And further button 1 press the function "mqtt_connect" returns error code 51460