UART B issues with custom carrier

Hi. Using a custom carrier with Orin NX + SSD, flashed with a image built with Yocto (Jetson Linux release: R35.5.0 JetPack release: 5.1.3)

I’m able to find 2 UARTs: /dev/ttyTCU0 (debug) and /dev/ttyTHS0 (UART A), however, I’m not able to find UART B.

I’m testing by doing a chant between RX with TX and doing picocom at that port and see if I receive my input back.

This makes me confused because, when I boot, this is my dmesg output:

root@p3768-0000-p3767-0000:~# dmesg | grep tty
[    0.000000] Kernel command line: mminit_loglevel=4 console=ttyTCU0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 nospectre_bhb ipv6.disable=1 audit=0 ipv6.disable=1 audit=0
[    0.275490] 31d0000.serial: ttyAMA0 at MMIO 0x31d0000 (irq = 65, base_baud = 0) is a SBSA
[    1.882535] printk: console [ttyTCU0] enabled
[    3.756296] 3100000.serial: ttyTHS0 at MMIO 0x3100000 (irq = 17, base_baud = 0) is a TEGRA_UART
[    3.771035] 3130000.serial: ttyTHS3 at MMIO 0x3130000 (irq = 63, base_baud = 0) is a TEGRA_UART
[    3.785787] 3140000.serial: ttyTHS4 at MMIO 0x3140000 (irq = 64, base_baud = 0) is a TEGRA_UART
[    7.382253] systemd[1]: Created slice Slice /system/getty.
[    7.383918] systemd[1]: Created slice Slice /system/serial-getty.
[    8.187436] usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB0
[    8.222714] usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB1
[    8.472178] usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB2
[    8.491034] usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB3

So it looks like I have 3 UARTS, but they are different from what I can test?

I think the UART I’m not able to get is the one related to M.2 KEY E. Do I have to enable something extra? (even tho I find it weird it appears 3 uarts available on the dmesg.)

Also, I get different addresses from what Ive seen in other posts in this forum:

        UART0 => UART2(PX04, PX05, PX06, PX07): uartb@3110000 (serial1) - Unused => To M.2 Key E
        UART1 => UART1(PR02, PR03, PR04, PR05): uarta@3100000 (serial0) - /dev/ttyTHS0 => General UART
        UART2 => UART3(PCC05, PCC06): uartc@c280000 (serial2) - /dev/ttyTCU0 => Debug

I dont have any c280000 or 3110000.

Could someone help?

From what I understand, in the device tree I could find

serial@3100000 {/* UARTA, for 40 pin header */
    status = "okay";
};

mttcan@c310000 {
    status = "okay";
};

serial@3140000 {
    /* UARTE, Goes to M2.E and also some of the pins to bootstrap */
    status = "okay";
};

serial@31d0000 {/* UARTI - SBSA */
    status = "okay";
};

but no serial@3110000 which refers to uartb.

Im not sure why are there so many UARTs, since Orin NX has only 3.

Adding a new node:

serial@3110000 {/* UARTB */
    status = "okay";
};

seems like it worked:

[    3.746453] 3100000.serial: ttyTHS0 at MMIO 0x3100000 (irq = 17, base_baud = 0) is a TEGRA_UART
[    3.761178] 3110000.serial: ttyTHS1 at MMIO 0x3110000 (irq = 63, base_baud = 0) is a TEGRA_UART
[    3.776142] 3130000.serial: ttyTHS3 at MMIO 0x3130000 (irq = 64, base_baud = 0) is a TEGRA_UART
[    3.790859] 3140000.serial: ttyTHS4 at MMIO 0x3140000 (irq = 65, base_baud = 0) is a TEGRA_UART

Hi robyawyx,

For UART-B, it should be the one from M.2 Key E.
Please enable serial@3110000 node in device tree and you should see it from dmesg. → seems you’ve verified it in your 2nd response.

These 2 UARTs seem the virtual one used for debug.
You can check if they are created by nvgetty,

uartc@c280000 is the one reserved when you disable Tegra Combined Uart (/dev/ttyTCU0) and use it as normal UART, but we don’t support and verify this use case yet.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.