UART communication issues between nRF54L15DK and nRF9160DK running Serial LTE Modem - "Receive stopped for reasons: 4"

System Architecture

Setup: Two-board configuration with UART communication between boards

Hardware:

Software:

  • nRF9160DK: Running Nordic's Serial LTE Modem application as Zephyr modem
  • nRF54L15DK: Custom application attempting to control the modem via UART AT commands (Cellular modem sample)

Problem Description

Error Message:
[00:00:00.103,680] <dbg> modem_cellular: modem_cellular_log_event: event timeout
[00:00:00.103,723] <dbg> modem_cellular: modem_cellular_log_state_changed: switch from power pulse to await power on
[00:00:00.103,680] <dbg> modem_cellular: modem_cellular_log_event: event timeout
[00:00:00.103,723] <dbg> modem_cellular: modem_cellular_log_state_changed: switch from power pulse to await power on
uart:~$ [00:00:02.103,775] <dbg> modem_cellular: modem_cellular_log_event: event timeout
[00:00:02.103,846] <dbg> modem_cellular: modem_cellular_log_state_changed: switch from await power on to run init script
[00:00:[00:00:02.103,775] <dbg> modem_cellular: modem_cellular_log_event: event timeout
[00:00:02.103,846] <dbg> modem_cellular: modem_cellular_log_state_changed: switch from await power on to run init script
uart:~$ 67] <dbg> modem_cellular: modem_cellular_log_event: event bus opened
[00:00:02.103,896] <wrn> modem_backend_uart_async: Receive stopped for reasons: 4
[00:00:02.103,912] <wrn> modem_backend_uart[00:00:02.103,867] <dbg> modem_cellular: modem_cellular_log_event: event bus opened
[00:00:02.103,896] <wrn> modem_backend_uart_async: Receive stopped for reasons: 4
uart:~$ Receive stopped for reasons: 8
[00:00:02.103,937] <dbg> modem_chat: modem_chat_script_start: running script: nordic_nrf91_slm_init_chat_script
[00:00:02.103,948] <dbg> modem_chat: modem_chat_script_next: n[00:00:02.103,912] <wrn> modem_backend_uart_async: Receive stopped for reasons: 8
[00:00:02.103,937] <dbg> modem_chat: modem_chat_script_start: running script: nordic_nrf91_slm_init_chat_script
uart:~$ f91_slm_init_chat_script: step: 0
[00:00:02.103,962] <dbg> modem_chat: modem_chat_script_next: sending: AT
[00:00:02.103,997] <wrn> modem_backend_uart_async: Receive stopped for reasons: 4
[00:00:0[00:00:02.103,948] <dbg> modem_chat: modem_chat_script_next: nordic_nrf91_slm_init_chat_script: step: 0
[00:00:02.103,962] <dbg> modem_chat: modem_chat_script_next: sending: AT
[00:00:02.103,997] <wrn> modem_backend_uart_async: Receive stopped for reasons: 4
uart:~$ 3] <wrn> modem_backend_uart_async: Receive stopped for reasons: 8
[00:00:02.104,085] <wrn> modem_backend_uart_async: Receive stopped for reasons: 4
[00:00:02.104,101] <wrn> modem_backend_uart_[00:00:02.104,013] <wrn> modem_backend_uart_async: Receive stopped for reasons: 8
[00:00:02.104,085] <wrn> modem_backend_uart_async: Receive stopped for reasons: 4
uart:~$ eceive stopped for reasons: 8
[00:00:02.104,184] <wrn> modem_backend_uart_async: Receive stopped for reasons: 4
[00:00:02.104,268] <wrn> modem_backend_uart_async: Receive stopped for reasons: 4
[[00:00:02.104,101] <wrn> modem_backend_uart_async: Receive stopped for reasons: 8
[00:00:02.104,184] <wrn> modem_backend_uart_async: Receive stopped for reasons: 4
[00:00:02.104,268] <wrn> modem_backend_uart_async: Receive stopped for reasons: 4
uart:~$ .104,285] <wrn> modem_backend_uart_async: Receive stopped for reasons: 8
[00:00:02.104,358] <wrn> modem_backend_uart_async: Receive stopped for reasons: 4
[00:00:02.104,373] <wrn> modem_backen[00:00:02.104,285] <wrn> modem_backend_uart_async: Receive stopped for reasons: 8
[00:00:02.104,358] <wrn> modem_backend_uart_async: Receive stopped for reasons: 4
uart:~$ sync: Receive stopped for reasons: 8
[00:00:02.104,373] <wrn> modem_backend_uart_async: Receive stopped for reasons: 8

Context:

  • Following Nordic's Serial LTE Modem documentation to use nRF9160DK as standalone modem
  • nRF54L15DK acts as host controller sending AT commands over UART
  • Communication fails with async UART receive error

Current Configuration

nRF54L15DK Configuration (Host side):

  • UART Async API enabled on UARTE30
  • Modem cellular UART buffer sizes: 6000 bytes
  • Enhanced RX enabled
  • Modem debug logging enabled

nRF9160DK: Running modified Serial LTE Modem application

Questions 

  1. Error Analysis: What does error reason code 4 mean in modem_backend_uart_async context?

  2. UART Wiring: What's the correct UART pin mapping between nRF54L15DK and nRF9160DK for SLM communication?

  3. Flow Control: Does the Serial LTE Modem application require hardware flow control (RTS/CTS)?

  4. Baud Rate: What baud rate should be used for UART communication with SLM application?

  5. Reference Code: Are there examples of nRF54L15 communicating with nRF9160DK running SLM?

  6. SLM Configuration: Does the Serial LTE Modem application need specific configuration for external UART control?

  • Hello,

    1. The error you are seeing in terms of modem_backend_uart_async , could be related to power level of both devices, flow control settings or other configurations those are related to UART communication. How have you powered the device? Is this same for both devices?

    2. There is no explicit mapping for SLM communication between nRF9160 and nRF54L15. But in the SLM_shell (Cellular: SLM Shell) sample you can see the pin mapping between nRF9160 and few other SoCs. You can try to set the relevant UART pins on the nRF54L15DK for TX, RX, RTS, and CTS, to match the pins on the nRF9160DK side.

    3. yes.

    4. The default baud rate for UART communication with the Serial LTE Modem (SLM) application is 115200 which is set in device tree. 

    However, the maximum baud rate can set 460800 (nRF91 Series as a Zephyr-compatible modem). 

    I think we need more information to help you precisely. Can you share your application folder so we can look at the code, config and board file as well?

  • Hello Kazi Afroza,

    I have configured the power pin enable functionality on the SLM. After some debugging I realized the modem is not being turned on from sleep which results in no response on AT commands. However, if I manually generate an interrupt on configured SLM power pin the rest of the communication went through. 

    Moreover, I have noticed that if I use custom pins for UART configuration on nrf54L15 DK instead of the default board provided UART30 config, i noticed those errors. So I'm not sure if the choice of pins for UART change the functionality somehow. Do we need to have CTS/RTS enabled for this async uart communication? What happens if we dont use hw flow control at all? 

    Another change i did was I added these two lines in overlay-cmux.conf: (found in another support ticket)

    CONFIG_MODEM_CMUX_MTU=127
    CONFIG_MODEM_CMUX_WORK_BUFFER_SIZE=134


    Please find attached my applcation folder.7651.nrf9160.zip
     

  • Due to tight project deadlines, I'd greatly appreciate any available updates, preliminary insights, or workarounds. Happy to provide additional logs/configurations if it helps expedite the process.

  • Hello,

    ''Moreover, I have noticed that if I use custom pins for UART configuration on nrf54L15 DK instead of the default board provided UART30 config, i noticed those errors. ''

    UART peripheral pins are restricted on nRF54L15. Not all pins can be used for all UART instances. In the default pin setting, UART30 uses pin from P0. 

     UART30 is restricted to using pins from GPIO port 0 (P0) only. Peripherals cannot mix pins from different ports, and no peripheral is able to cross over to the P0 domain from other ports. You can look at this previous case (+) Question on nRF54L15 QFN48 pin assignment - Nordic Q&A - Nordic DevZone - Nordic DevZone

Related