Hi,
I'm using the nRF54L15 (custom board, nRF54L15 DK base) with NCS v3.1.0.
I have two UARTs:
- uart30 — Shell/console (needs
CONFIG_SHELL_BACKEND_SERIAL=y, which requires interrupt-driven) - uart21 — External modem (LARA-R6001) using async/DMA API (
uart_callback_set,uart_tx,uart_rx_enable)
Problem: When CONFIG_UART_INTERRUPT_DRIVEN=y is enabled (required by the shell), uart_callback_set() on uart21 returns -ENOSYS (-88). When I disable interrupt-driven, the modem works but the shell doesn't.
What I've tried:
CONFIG_UART_NRFX_UARTE_LEGACY_SHIM=n— still returns -88CONFIG_SHELL_BACKEND_SERIAL_API_ASYNC=y— config resolves but no serial outputCONFIG_SHELL_BACKEND_SERIAL_API_POLLING=y— prompt appears but cannot type (RX doesn't work)CONFIG_UART_ASYNC_ADAPTER=y— still returns -88- Both
CONFIG_UART_ASYNC_API=yandCONFIG_UART_INTERRUPT_DRIVEN=ysimultaneously — modem still gets -88
My overlay (relevant parts):
dts
chosen {
zephyr,console = &uart30;
zephyr,shell-uart = &uart30;
};
&uart21 {
status = "okay";
current-speed = <115200>;
pinctrl-0 = <&uart21_default>;
pinctrl-1 = <&uart21_sleep>;
pinctrl-names = "default", "sleep";
};
&uart30 {
status = "okay";
current-speed = <1000000>;
pinctrl-0 = <&uart30_default>;
pinctrl-1 = <&uart30_sleep>;
pinctrl-names = "default", "sleep";
};
```
My prj.conf:
```
CONFIG_UART_ASYNC_API=y
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_NRFX_UARTE21=y
CONFIG_SHELL=y
CONFIG_SHELL_BACKEND_SERIAL=y
CONFIG_UART_CONSOLE=y
CONFIG_SOC_NRF_FORCE_CONSTLAT=y
Is there a way to configure per-instance UART API selection on the nRF54L15 with NCS 3.1.0? For example, uart30 using interrupt-driven and uart21 using async/DMA?
Thank you.
