lte_lc: Failed to set functional mode. Please check XSYSTEMMODE nrf9160

I'm checking the function by uploading the code to the pcb that uploaded the nrf9160 chip.

I checked that the network communication is normal on the previous 9160dk board.

As a result of uploading the code to the custom board and trying again, it has been confirmed that there is a problem with the modem as shown below.

[00:01:21.507,904] <err> lte_lc: Failed to subscribe to CEREG notifications, error: 65536
[00:01:21.507,904] <err> lte_lc: Failed to enable notifications, error: -14
[00:01:21.507,904] <err> nrf_modem_lib_netif: lte_lc_func_mode_set, error: -14
[00:01:21.507,934] <inf> NRFX_EXAMPLE: conn_mgr_all_if_connect, error: -14
[00:01:31.515,136] <err> nrf_modem_lib_netif: Modem error: 0xfff, PC: 0x0
[00:01:31.515,167] <err> lte_lc: Failed to set functional mode. Please check XSYSTEMMODE.
[00:01:31.515,167] <err> nrf_modem_lib_netif: lte_lc_func_mode_set, error: -14
Fatal error received from the connectivity layer
getaddrinfo() failed, err -11
[00:01:33.515,350] <err> lte_lc: Failed to set functional mode. Please check XSYSTEMMODE.
[00:01:33.515,380] <err> nrf_modem_lib_netif: lte_lc_func_mode_set, error: -14
[00:01:33.515,411] <inf> NRFX_EXAMPLE: conn_mgr_all_if_disconnect, error: -14

I don't know how to change the uart pin and see if the modem's firmware is the problem.

It would be nice if you could give me some advice.

Thank you.

Parents
  • Thank you for your response.

    Currently, the SIM slot connection on the personal PCB is as follows.

    In that structure
    Can't I use the normal lte library?

    and also i try this code

    char response[128];
        LOG_INF("*********************************************************************");
        err = nrf_modem_at_cmd(response, sizeof(response), "AT");
        if (err == 0) {
            LOG_INF("Network Registration Status: %s", response);
        } else {
            LOG_ERR("Failed to get network registration status");
        }
        LOG_INF("Resetting LTE modem...");
        nrf_modem_at_cmd(response, sizeof(response), "AT+CFUN=4"); 
        k_sleep(K_SECONDS(2));  // wait
        nrf_modem_at_cmd(response, sizeof(response), "AT+CFUN=1");
        LOG_INF("LTE modem reset complete.");
        err = nrf_modem_at_cmd(response, sizeof(response), "AT+CFUN?");
        if (err == 0) {
            LOG_INF("LTE Functionality Mode: %s", response);
        } else {
            LOG_ERR("Failed to check LTE mode");
        }

     LOG_INF("*********************************************************************");

    [00:00:00.390,808] <inf> http_client: HTTP client sample started
    [00:00:00.390,838] <inf> http_client: Checking SIM card presence...
    [00:00:00.390,838] <inf> http_client: Bringing network interface up
    [00:00:00.390,869] <err> lte_lc: nrf_modem_at_printf failed, reported error: -1
    [00:00:00.390,869] <err> lte_lc: Failed to subscribe to CEREG notifications, error: -1
    [00:00:00.390,869] <err> lte_lc: Failed to enable notifications, error: -14
    [00:00:05.390,960] <inf> http_client: *********************************************************************
    [00:00:05.390,991] <err> http_client: Failed to get network registration status
    [00:00:05.390,991] <inf> http_client: Resetting LTE modem...
    [00:00:07.391,082] <inf> http_client: LTE modem reset complete.
    [00:00:07.391,113] <err> http_client: Failed to check LTE mode
    [00:00:07.391,113] <inf> http_client: *********************************************************************

    Then, should I make a new transfer code?

Reply
  • Thank you for your response.

    Currently, the SIM slot connection on the personal PCB is as follows.

    In that structure
    Can't I use the normal lte library?

    and also i try this code

    char response[128];
        LOG_INF("*********************************************************************");
        err = nrf_modem_at_cmd(response, sizeof(response), "AT");
        if (err == 0) {
            LOG_INF("Network Registration Status: %s", response);
        } else {
            LOG_ERR("Failed to get network registration status");
        }
        LOG_INF("Resetting LTE modem...");
        nrf_modem_at_cmd(response, sizeof(response), "AT+CFUN=4"); 
        k_sleep(K_SECONDS(2));  // wait
        nrf_modem_at_cmd(response, sizeof(response), "AT+CFUN=1");
        LOG_INF("LTE modem reset complete.");
        err = nrf_modem_at_cmd(response, sizeof(response), "AT+CFUN?");
        if (err == 0) {
            LOG_INF("LTE Functionality Mode: %s", response);
        } else {
            LOG_ERR("Failed to check LTE mode");
        }

     LOG_INF("*********************************************************************");

    [00:00:00.390,808] <inf> http_client: HTTP client sample started
    [00:00:00.390,838] <inf> http_client: Checking SIM card presence...
    [00:00:00.390,838] <inf> http_client: Bringing network interface up
    [00:00:00.390,869] <err> lte_lc: nrf_modem_at_printf failed, reported error: -1
    [00:00:00.390,869] <err> lte_lc: Failed to subscribe to CEREG notifications, error: -1
    [00:00:00.390,869] <err> lte_lc: Failed to enable notifications, error: -14
    [00:00:05.390,960] <inf> http_client: *********************************************************************
    [00:00:05.390,991] <err> http_client: Failed to get network registration status
    [00:00:05.390,991] <inf> http_client: Resetting LTE modem...
    [00:00:07.391,082] <inf> http_client: LTE modem reset complete.
    [00:00:07.391,113] <err> http_client: Failed to check LTE mode
    [00:00:07.391,113] <inf> http_client: *********************************************************************

    Then, should I make a new transfer code?

Children
  • What modem FW version are you running on your nRF9160?

    Did you try with the AT client alone?

    Have you verified that the SIM connections are soldered correctly i.e. measure the signals on your device?

  • I am having the same issue with the nrf9151 custom board.

    Starting with the Multi Service NrfCloud Sample, with COAP support enabled.

    I am using a nrf9161dk as my reference, everything works on the nrf9161dk reference but I get the following error on the custom 9151 board:

    *** Booting nRF Connect SDK v2.9.0-7787b2649840 ***
    *** Using Zephyr OS v3.7.99-1f8f3dc29142 ***
    [00:00:00.262,542] <inf> main: nRF Cloud multi-service sample has started, version: 1.0.0, protocol: CoAP
    [00:00:00.262,573] <inf> application: Reset reason: 0x50001
    [00:00:00.262,725] <inf> cloud_connection: Enabling connectivity...
    [00:00:00.596,191] <err> lte_lc: Failed to set functional mode. Please check XSYSTEMMODE.
    [00:00:00.596,191] <err> nrf_modem_lib_netif: lte_lc_func_mode_set, error: -14
    [00:00:00.596,252] <err> conn_mgr_conn: conn_mgr_if_connect failed for iface 1 (0x2000c7e0). Error: -14
    [00:00:00.596,252] <inf> cloud_connection: Setting up nRF Cloud library...
    [00:00:00.689,422] <inf> nrf_cloud_info: Device ID: 50363953-3234-4a32-8048-1a2ab4bd2a37
    [00:00:00.695,404] <err> nrf_cloud_info: Error requesting the IMEI: 65536
    [00:00:00.780,853] <inf> nrf_cloud_info: UUID: 50363953-3234-4a32-8048-1a2ab4bd2a37
    [00:00:00.786,499] <inf> nrf_cloud_info: Modem FW: mfw_nrf91x1_2.0.2
    [00:00:00.786,529] <inf> nrf_cloud_info: Protocol: CoAP
    [00:00:00.786,560] <inf> nrf_cloud_info: Download protocol: HTTPS
    [00:00:00.786,590] <inf> nrf_cloud_info: Sec tag: 16842753
    [00:00:00.786,590] <inf> nrf_cloud_info: CoAP JWT Sec tag: 16842753
    [00:00:00.786,621] <inf> nrf_cloud_info: Host name: coap.nrfcloud.com
    [00:00:00.881,805] <inf> nrf_cloud_credentials: Sec Tag: 16842753; CA: No, Client Cert: No, Private Key: No
    [00:00:00.881,866] <inf> nrf_cloud_credentials: CA Size: 0, AWS: Unlikely, CoAP: Unlikely
    [00:00:00.881,866] <err> nrf_cloud_credentials: CA Certificate not found in sec tag 16842753
    [00:00:00.881,866] <err> nrf_cloud_credentials: Private Key not found in sec tag 16842753
    [00:00:00.881,896] <wrn> cloud_connection: nRF Cloud credentials are not installed. Claim and onboard device on nrfcloud.com to continue.
    uart:~$

    I moved on and tried the at client application on both boards and found that the AT commands do not respond properly on the custom board, specifically when trying to set CFUN=31, or any other valid value, I get +CME Error:531.

    These same CFUN commands work just fine on the nrf9161dk

    The build for each board is on the same workspace, and I only added an overlay to redirect my UART0 to my preferred pins for the custom 9151 board, all other project settings are the same.

    I also rewrote the modem firmware to both boards, mfw_nrf91x1_2.0.2.zip, to both

    I also ran the At command to check the modem firmware version on each board and both state, %SHORTSWVER: nrf91x1_2.0.2

    Also note that I tested both boards with and without the SIM card installed and the results are the same, the nrf9161dk responds to commands correctly and the custom 9151 board does not.

    lastly, I have had this board reviewed by Nordic and I beeped out the SIM connections. As The command responses are the same with or without a SIM installed on both boards, I would surmise that this is a modem issue not a SIM card issue, so the board layout should not be an issue.

    when running at%xsystemmode? result is, %XSYSTEMMODE: 1,1,1,3

    I hope this does not highjack this issue from the original poster.

    Thank you

  •  thanks for notifying, I have received your ticket that you registered. As yours is related to nRF9151 I will provide an answer to you in the ticket. 

    Kind regards,
    Øyvind

  • Sorry for the late reply.

    First of all, there was a p0.14 p0.13 uart pin, so I opened the uart pin.
    The test was carried out using the serial lte modem code using the AT command. However, unlike the previous development board where the AT command was executed, it was found that the following strange characters were continuously printed in the serial monitor window.

    In addition, I confirmed that the Ready phrase is output when I look at the phrase output through the at_client.

    I don't have a clue what the problem is yet. Is there any other way to check?

Related