Configuring nrf54l15dk UART with nrf9151dk SLM

Hi, I'm struggling to setup an application on the nrf54l15dk to control the nrf9151dk SLM over UART.

I have done the Cellular IoT Course and successfully controlled the nrf9151dk running the SLM in Lesson 2 Exercise 1. I want to do the same thing but using the nrf54l15dk as the controller for the modem over UART.

I am struggling to find the correct configuration to set this up. I have found many things which look like they are relevant but I cannot seem to piece all the information together. The following Kconfig options appear frequently:

  1. CONFIG_MODEM_CELLULAR
  2. CONFIG_SM_AT_CLIENT
  3. CONFIG_MODEM
  4. CONFIG_MODEM_MODULES
  5. CONFIG_MODEM_CELLULAR
  6. CONFIG_NET_L2_PPP
  7. CONFIG_NETWORKING
  8. CONFIG_UART_INTERRUPT_DRIVEN

I have also seen the following DT config:

&uart20 {
    nrf91-slm {
        compatible = "nordic,nrf91-slm";
    };
};
I've found the following files which might be relevant:
  • zephyr/drivers/modem/modem_cellular.c
  • zephyr/samples/drivers/modem/at_client/

There also seem to be multiple modem APIs available:

  1. Modem Chat
  2. Modem CMUX
  3. Modem Pipe
  4. Modem pipelink
  5. Modem PPP
  6. Modem Ubx

Please could someone assist me on the correct way to do this, as the documentation is not particularly clear around this area. Do I need to manually send AT commands to the modem or is there a library which does this already? Do I even need a modem library for this or should I just do everything over UART?

I have not got the nrf9151dk connected at the moment, I just want to validate that the nrf54l15dk can output the correct AT commands over UART given a button input or similar (which I already have working).

Parents
  • Hi,

    Great to hear that you have successfully completed the Cellular IoT Course. It looks now you want nRF54L15DK to act as a UART terminal from which you want to send the AT commands to a nRF9151DK SLM. You do not need the Zephyr modem subsystem, PPP, CMUX, or cellular Kconfig options just to send AT and receive OK. SLM already implements all modem logic and expects plain AT commands over UART. Here is the Step by step plan for your setup:

    1. You need to prepare the nRF9151DK (modem side) by building and flashing Serial Modem to the nRF9151DK which is available here ncs-serial-modem. When building, include app/overlay-external-mcu.overlay.
    2. Wire nRF9151DK to the nRF54L15DK according to the tables used by AT Client Shell sample. Also make sure the following things aswell:
      1. On nRF54L15DK, open Board Configurator and disable VCOM0 (“Connect port VCOM0”) so P0.00-P0.03 are free for UART30.
      2. In Board Configurator, set VDD so that nRF54L15DK and nRF91DK use the same I/O voltage.
    3. Bring up UART on nRF54L15DK (host side) by building and flashing AT Client Shell sample (samples/sm_at_client_shell)
    4. Then open a terminal to the nRF54L15DK console and try sending a simple AT command over UART to nRF9151DK which should return and print OK on the nRF54L15 shell to confirm SLM is alive.

    Once the AT Client Shell sample works, you can replace with your button logic. However remember at this stage you are still just “manual AT over UART” so no Zephyr modem/PPP needed (your initial “button sends AT” task)

    Only when you want IP networking on the nRF54L15DK (sockets, DNS etc), then on the nRF9151DK you can build serial modem with other configurations (like app/overlay-cmux.conf AND app/overlay-ppp.conf) and may use Serial Modem PPP shell sample on the nRF54L15DK side.

    Best Regards,
    Syed Maysum

  • Hi Syed,

    Thanks for that response! That's what I had come to the conclusion of in the end, so glad I'm on the right lines.

    I have no need for IP networking, but I was expecting their to be some sort of library for handling AT commands. I have seen AT monitor, AT host and AT parser in zephyr documentation. Are any of these applicable to the host side, or are they all for the modem side/nRF91?

    I can implement plain AT commands, but I'd rather not spend too much time doing this if a library already exists.

    Thank you!

  • Hi,

    The AT components you’ve seen in the Zephyr/NCS docs (AT Host, AT Monitor, AT Parser, AT Shell) are modem-side helpers, intended to run on the nRF91 itself when an application on the same device talks to its internal modem. They are not meant for an external MCU acting as a host over UART.

    For a host MCU (such as the nRF54L15DK) controlling an nRF9151 over UART, Nordic provides a separate, dedicated solution as part of the Serial Modem add-on:

    • Serial Modem AT Client library (It provides host-side AT handling, similar to the AT Host / AT parser / AT monitor / AT shell libraries)
    • AT Client Shell sample (It is reference host application on nRF54L15DK that demonstrates using this library to send AT commands to an nRF91 over UART)

    These are explicitly designed for an external host controlling an nRF91 over UART.

    Best Regards,
    Syed Maysum

  • Thank you for your help with this, Syed!
    I have got this setup and working correctly now. I've had a couple of further questions, but I have raised a new ticket for these.

Reply Children
No Data
Related