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 Charlie,

    Thanks for the pointers. I have updated my overlay file as below.

    / {
       chosen {
          nordic,modem-trace-uart = &uart1;
       };
    };
    
    &uart0 {
    	status = "okay";
    	current-speed = < 115200 >;
    	pinctrl-0 = <&uart0_default>;
       	pinctrl-1 = <&uart0_sleep>;
       	pinctrl-names = "default", "sleep";
    	/delete-property/ rts-pin;
    	/delete-property/ cts-pin;
    };
    
    /* Enable uart1 for tracing. */
    
    
    &uart1 {
       	status = "okay";
       	current-speed = <1000000>;
       	pinctrl-0 = <&uart1_default_alt>;
       	pinctrl-1 = <&uart1_sleep_alt>;
       	pinctrl-names = "default", "sleep";
    	/delete-property/ rts-pin;
    	/delete-property/ cts-pin;
    };
    
    
    &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;
    		};
    	};
    };
    
    &pinctrl {
    	uart1_default_alt: uart1_default_alt {
    		group1 {
    			psels = <NRF_PSEL(UART_RX, 0, 14)>;
    			bias-pull-up;
    		};
    		group2 {
    			psels = <NRF_PSEL(UART_TX, 0, 13)>;
    		};
    	};
    
    	uart1_sleep_alt: uart1_sleep_alt {
    		group1 {
    			psels = <NRF_PSEL(UART_TX, 0, 14)>,
    				<NRF_PSEL(UART_RX, 0, 13)>;
    			low-power-enable;
    		};
    	};
    };
    
    

    Which has enabled me to see output on my terminal,

     and looks like trace is working. 

    This is my trace file.

    trace-2024-09-18T14-24-19.592Z.mtrace

    Rod

  • Hi Rod,

    I am not able to open your provided trace file. Are you able to open trace file in Wireshark on your end?

    Best regards,
    Dejan

  • Hi Dejan,

    Sorry for the delay in getting back to you, i have been on holiday.

    I have tried to open the file in Wireshark and am unable too. To check, i had a look at other .mtrace files that others have uploaded and tried the trace file on this ticket.

     RE: STUCK LTE Connection 

    I was unable to open that file.

    When i look at the types of files that Wireshark open, i dont see .mtrace ?

    Do i need to create a different type of trace? How do  do that?

    Rod

  • Hi Rod,

    You might not have taken traces correctly or somehow trace file got corrupted. Can you try to do it again? Please have a look at instructions on how to capture modem trace in our Cellular IoT Fundamentals course. It should be possible to upload file in mtrace format.

    Best regards,
    Dejan

  • Hi Dejan,

    I started by trying this process using the nRF9169DK board

    I produced this trace file

    trace-2024-10-17T12-47-05.939Z.mtrace

    which opened automatically in Waveshark.

    I noticed that I was unable to subsequently open the same file in Waveshark but had to open the file that had been saved in Waveshark.

    nrf9160_WS.pcapng

    Anyway, this seems to work OK.

    I then tried this on my own board using the same process and this is where i see problems.

    Although I seem to be generating a .mtrace file, Waveshark reports no data.

    Im guessing I have something wrong with my UART set up?

    This is my overlay file 

    / {
       chosen {
          nordic,modem-trace-uart = &uart1;
       };
    };
    
    &uart0 {
    	status = "okay";
    	current-speed = < 115200 >;
    	pinctrl-0 = <&uart0_default>;
       	pinctrl-1 = <&uart0_sleep>;
       	pinctrl-names = "default", "sleep";
    	/delete-property/ rts-pin;
    	/delete-property/ cts-pin;
    };
    
    /* Enable uart1 for tracing. */
    
    
    &uart1 {
       	status = "okay";
       	current-speed = <1000000>;
       	pinctrl-0 = <&uart1_default_alt>;
       	pinctrl-1 = <&uart1_sleep_alt>;
       	pinctrl-names = "default", "sleep";
    	/delete-property/ rts-pin;
    	/delete-property/ cts-pin;
    };
    
    
    &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;
    		};
    	};
    };
    
    &pinctrl {
    	uart1_default_alt: uart1_default_alt {
    		group1 {
    			psels = <NRF_PSEL(UART_RX, 0, 14)>;
    			bias-pull-up;
    		};
    		group2 {
    			psels = <NRF_PSEL(UART_TX, 0, 13)>;
    		};
    	};
    
    	uart1_sleep_alt: uart1_sleep_alt {
    		group1 {
    			psels = <NRF_PSEL(UART_TX, 0, 14)>,
    				<NRF_PSEL(UART_RX, 0, 13)>;
    			low-power-enable;
    		};
    	};
    };
    
    


    Regards,

    Rod

Reply
  • Hi Dejan,

    I started by trying this process using the nRF9169DK board

    I produced this trace file

    trace-2024-10-17T12-47-05.939Z.mtrace

    which opened automatically in Waveshark.

    I noticed that I was unable to subsequently open the same file in Waveshark but had to open the file that had been saved in Waveshark.

    nrf9160_WS.pcapng

    Anyway, this seems to work OK.

    I then tried this on my own board using the same process and this is where i see problems.

    Although I seem to be generating a .mtrace file, Waveshark reports no data.

    Im guessing I have something wrong with my UART set up?

    This is my overlay file 

    / {
       chosen {
          nordic,modem-trace-uart = &uart1;
       };
    };
    
    &uart0 {
    	status = "okay";
    	current-speed = < 115200 >;
    	pinctrl-0 = <&uart0_default>;
       	pinctrl-1 = <&uart0_sleep>;
       	pinctrl-names = "default", "sleep";
    	/delete-property/ rts-pin;
    	/delete-property/ cts-pin;
    };
    
    /* Enable uart1 for tracing. */
    
    
    &uart1 {
       	status = "okay";
       	current-speed = <1000000>;
       	pinctrl-0 = <&uart1_default_alt>;
       	pinctrl-1 = <&uart1_sleep_alt>;
       	pinctrl-names = "default", "sleep";
    	/delete-property/ rts-pin;
    	/delete-property/ cts-pin;
    };
    
    
    &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;
    		};
    	};
    };
    
    &pinctrl {
    	uart1_default_alt: uart1_default_alt {
    		group1 {
    			psels = <NRF_PSEL(UART_RX, 0, 14)>;
    			bias-pull-up;
    		};
    		group2 {
    			psels = <NRF_PSEL(UART_TX, 0, 13)>;
    		};
    	};
    
    	uart1_sleep_alt: uart1_sleep_alt {
    		group1 {
    			psels = <NRF_PSEL(UART_TX, 0, 14)>,
    				<NRF_PSEL(UART_RX, 0, 13)>;
    			low-power-enable;
    		};
    	};
    };
    
    


    Regards,

    Rod

Children
Related