Migrating MQTT Sample to a Custom Board

Hi,

I have successfully built and ran the MQTT sample (/opt/nordic/ncs/v2.7.0/nrf/samples/net/mqtt) on the nRF9160-DK. I did have a few problems with SIM coverage and firmware versions which was sorted in this ticket.

 MQTT Sample Not Connecting on nRF9160 Board 

I would now like to move this code onto my own board.

When I run this code on my own board, I see this error.

*** Booting nRF Connect SDK v2.7.0-5cb85570ca43 ***
*** Using Zephyr OS v3.6.99-100befc70c74 ***
[00:00:00.431,610] <inf> network: Bringing network interface up and connecting to the network
[00:00:00.658,813] <inf> nrf_modem_lib_trace: Trace thread ready
[00:00:00.666,107] <inf> nrf_modem_lib_trace: Trace level override: 2
[00:00:00.667,724] <err> lte_lc: Could not send AT command, error: 65536
[00:00:00.667,755] <err> lte_lc: Failed to set system mode and mode preference, err -14
+CEREG: 2
+CEREG: 4
+CEREG: 2,"B984","00542616",9
+CSCON: 1
+CEREG: 2,"B984","00542616",9,0,11
+CSCON: 0
 

My overlay file is shown below.

&pinctrl {
        uart0_default: uart0_default {
                group1 {
                        psels = <NRF_PSEL(UART_TX, 0, 6)>, <NRF_PSEL(UART_RX, 0, 7)>;
                };
        };

        uart0_sleep: uart0_sleep {
                group1 {
                        psels = <NRF_PSEL(UART_TX, 0, 6)>, <NRF_PSEL(UART_RX, 0, 7)>;
                        low-power-enable;
                };
        };
};

&uart0 {
        status = "okay";
        current-speed = < 115200 >;
        /delete-property/ rts-pin;
        /delete-property/ cts-pin;
};

/* Enable uart1 for tracing. */

&uart1 {
   status = "okay";
   current-speed = <1000000>;
   pinctrl-0 = <&uart1_default>;
   pinctrl-1 = <&uart1_sleep>;
   pinctrl-names = "default", "sleep";
};

/ {
   chosen {
      nordic,modem-trace-uart = &uart1;
   };
};

I use UART0 for my serial terminal.

Would appreciate your pointers on this,

Thanks,

Rod 

Parents
  • Hi Rod,

    Did you manage to collect a modem trace through either uart1 or RTT terminal?

    I see you also play with link monitor before. If this is a new custom board, are you able to see it can successfully connect with network when you check with link monitor after programming Serial LTE modem (nordicsemi.com)?

    Best regards,

    Charlie

  • Hi Charlie,

    No, I didn't manage to get the trace to work.

    I tried the serial LTE example,

    / {
    	chosen {
    		ncs,slm-uart = &uart1;
    	};
    };
    
    &uart0 {
    	status = "okay";
    	hw-flow-control;
    };
    
    &uart1 {
    	compatible = "nordic,nrf-uarte";
    	current-speed = <115200>;
    	status = "okay";
    
    	pinctrl-0 = <&uart1_default_alt>;
    	pinctrl-1 = <&uart1_sleep_alt>;
    	pinctrl-names = "default", "sleep";
    };
    
    
    
    &i2c2 {
    	status = "disabled";
    };
    
    &pinctrl {
    	uart1_default_alt: uart1_default_alt {
    		group1 {
    			psels = <NRF_PSEL(UART_RX, 0, 7)>;
    			bias-pull-up;
    		};
    		group2 {
    			psels = <NRF_PSEL(UART_TX, 0, 6)>;
    		};
    	};
    
    	uart1_sleep_alt: uart1_sleep_alt {
    		group1 {
    			psels = <NRF_PSEL(UART_TX, 0, 6)>,
    				<NRF_PSEL(UART_RX, 0, 7)>;
    			low-power-enable;
    		};
    	};
    };
    

    I am using my own overlay file, above to redirect the serial. terminal.

    Im getting this as an output

    All pins have been configured as non-secure
    [Sec Thread] Secure image initializing!
    TF-M Float ABI: Hard
    Lazy stacking enabled
    Booting TF-M v2.0.0-ncs2
    Ready

    Rod

  • Hi Dejan,

    In the process of moving to UART0, I noticed an error in my overlay file which I have now corrected. (I labeled the pins a xx_default_alt and listed the names as xxx_default, without the _alt)

    I am now able to generate a .mtrace file.

     However, it doesn't open in waveshark which reports no packets

    my prj.conf file is as follows

    # General
    CONFIG_HW_ID_LIBRARY=y
    CONFIG_ASSERT=y
    
    # Logging
    CONFIG_LOG=y
    CONFIG_MQTT_HELPER_LOG_LEVEL_DBG=y
    
    # Networking
    CONFIG_NETWORKING=y
    CONFIG_NET_SOCKETS_OFFLOAD=y
    CONFIG_NET_SOCKETS=y
    CONFIG_POSIX_API=y
    CONFIG_NET_IPV4=y
    CONFIG_NET_TCP=y
    CONFIG_NET_NATIVE=y
    CONFIG_NET_CONNECTION_MANAGER=y
    
    # ZBus
    CONFIG_ZBUS=y
    
    # Zephyr state framework
    CONFIG_SMF=y
    
    # MQTT
    CONFIG_MQTT_HELPER=y
    CONFIG_MQTT_CLEAN_SESSION=y
    
    CONFIG_MQTT_SAMPLE_TRANSPORT_BROKER_HOSTNAME="test.mosquitto.org"
    #CONFIG_MQTT_SAMPLE_TRANSPORT_BROKER_HOSTNAME="192.168.1.124"
    
    CONFIG_MQTT_SAMPLE_TRANSPORT_CLIENT_ID="SeaHorse_Test_Data"
    CONFIG_MQTT_SAMPLE_TRANSPORT_PUBLISH_TOPIC="publish/topic"
    CONFIG_MQTT_SAMPLE_TRANSPORT_SUBSCRIBE_TOPIC="subscribe/topic"
    
    #Modem Trace
    #CONFIG_NRF_MODEM_LIB_TRACE=y
    #CONFIG_AT_HOST_LIBRARY=y
    
    CONFIG_NRF_MODEM_LIB_TRACE_BACKEND_UART_ZEPHYR=y
    
    CONFIG_UART_ASYNC_API=y
    CONFIG_SERIAL=y
    
    #UART Trace
    CONFIG_USE_SEGGER_RTT=n
    CONFIG_RTT_CONSOLE=n
    CONFIG_UART_CONSOLE=y
    CONFIG_LOG_BACKEND_RTT=n
    CONFIG_LOG_BACKEND_UART=y
    
    # UART configuration
    CONFIG_SERIAL=y
    CONFIG_UART_ASYNC_API=y
    CONFIG_UART_1_ASYNC=y
    CONFIG_UART_1_INTERRUPT_DRIVEN=n
    
    # Power management
    CONFIG_PM_DEVICE=y
    
    # TFM logging over uart1
    CONFIG_TFM_LOG_LEVEL_SILENCE=n
    CONFIG_TFM_SECURE_UART1=y
    CONFIG_TFM_SECURE_UART_SHARE_INSTANCE=y
    CONFIG_TFM_EXCEPTION_INFO_DUMP=y
    CONFIG_TFM_SPM_LOG_LEVEL_DEBUG=y
    
    # General
    CONFIG_HW_STACK_PROTECTION=y
    CONFIG_HW_ID_LIBRARY_SOURCE_IMEI=y
    CONFIG_PICOLIBC=y
    CONFIG_DK_LIBRARY=y
    CONFIG_AT_HOST_LIBRARY=y
    
    # Modem trace
    CONFIG_NRF_MODEM_LIB_TRACE=y
    CONFIG_NRF_MODEM_LIB_TRACE_BACKEND_UART=y
    CONFIG_SERIAL=y
    CONFIG_UART_ASYNC_API=y
    
    CONFIG_UART_0_ASYNC=y
    CONFIG_UART_0_INTERRUPT_DRIVEN=n
    
    # Disable Duplicate Address Detection (DAD)
    # due to not being properly implemented for offloaded interfaces.
    CONFIG_NET_IPV6_NBR_CACHE=n
    CONFIG_NET_IPV6_MLD=n
    
    # Zephyr NET Connection Manager and Connectivity layer.
    CONFIG_NET_CONNECTION_MANAGER_MONITOR_STACK_SIZE=1024
    CONFIG_NRF_MODEM_LIB_NET_IF=y
    

    Regards,

    Rod

  • Hi Rod,

    Can you send your latest trace file so that I can also try to open it?

    What happens when you switch to some older NCS version? Is tracing successful?

    You could try choosing "Autoselect" for modem trace database.

    Can you double check that you tried to open correct mtrace file?

    Have you tried to use snippets to enable traces as it was suggested by Charlie previously?

    Best regards,
    Dejan


  • Hi Dejan,

    To answer your questions.

    Can you send your latest trace file so that I can also try to open it?

    >> Attatched below.

    trace-2024-10-23T14-53-28.874Z.mtrace


    What happens when you switch to some older NCS version? Is tracing successful?

    >> I get the same error/lack of packets

    You could try choosing "Autoselect" for modem trace database.

    >> The window pops up and sits for ages




    Can you double check that you tried to open correct mtrace file?

    >>> Yes, I am using the correct file.

    Have you tried to use snippets to enable traces as it was suggested by Charlie previously?

    >>> Yes, I tried that too.

    Rod

  • Hi Rod,

    Your trace file seems to be empty. As I mentioned previously, you could try to use RTT instead of UART and do tracing with RTT.

    Best regards,
    Dejan

  • Hi Dejan,

    I tried RTT previously and could get that to work either, Do I need to use the RTS/CTS signals for flow control?

    We started down this route to address the initial error of 

     lte_lc: Could not send AT command, error: 65536

    Failed to set system mode and mode preference, err -14

    Do you have any suggestions on how i can address these, without having the trace files?

    Rod

Reply
  • Hi Dejan,

    I tried RTT previously and could get that to work either, Do I need to use the RTS/CTS signals for flow control?

    We started down this route to address the initial error of 

     lte_lc: Could not send AT command, error: 65536

    Failed to set system mode and mode preference, err -14

    Do you have any suggestions on how i can address these, without having the trace files?

    Rod

Children
Related