RS-232 Communication Issue on Jetson (JetPack 5.1.2) – No Signal on TX Pin

Dear NVIDIA Support,

I’m currently testing RS-232 communication on a custom Jetson carrier board running JetPack 5.1.2. However, I am not observing any voltage change on the TX line (SODIMM Pin 99) when sending data. Below are the details of my environment and what I’ve tried so far:


■ Environment

  • JetPack version: 5.1.2
  • Board: Custom carrier board with Jetson module
  • Pin in use: SODIMM Pin 99 (UART0_TXD)

■ What I’ve done

  1. Added user to dialout group:

    sudo adduser $USER dialout  
    
  2. Disabled nvgetty:

    sudo systemctl disable nvgetty.service  
    
  3. Verified active UARTs with:

    sudo dmesg | grep -i tty  
    

    → Confirmed ttyTHS0 is listed and corresponds to UART0

  4. Sent test string to UART0 TX:

    echo "hello" > /dev/ttyTHS0  
    
  5. Confirmed that GPIO level on Pin 99 can be toggled using gpioset (so the pin is physically responsive)


■ Pinmux Configuration
The pinmux settings for UART0_TXD and UART0_RXD are default (UB3_TXD, UB3_RXD), as shown in the attached screenshot and pinmux.dtsi. The UART0 function appears to be correctly assigned.

■ Problem
Despite all the above steps, there is no signal change or voltage output observed on SODIMM Pin 99 when sending data via /dev/ttyTHS0.


■ Question
Is there any additional step required in JetPack 5.1.2 or pinmux configuration to fully enable UART0 for RS-232 level communication?
Do I need to check anything else in the device tree or kernel configuration?

Thank you very much for your support.
Orin-nabel-pinmux.txt (65.8 KB)

Hi SS.nb,

It seems you are using serial interface from M.2 Key E port.
Have you verified UART loopback test for this interface?

As my understanding, SODIMM Pin 99 (UART0_TXD) should be uart-b, which maps to 3110000.serial.
Please enable this node(serial@3110000) in device tree.

Thank you for your response.

Sorry for the confusion — I’m not trying to use the serial interface from the M.2 Key E port.

My goal is to use the UART for external RS-232 communication with another device, not for internal debugging or M.2.

Instead of a loopback test, I am observing the TX pin (SODIMM Pin 99) with an oscilloscope to confirm whether there is any voltage change during transmission.

I have configured the pinmux settings using the official spreadsheet tool as previously shown (UB3_TXD / UB3_RXD), but I’m wondering if this alone is not sufficient.

Should I also enable a specific serial node (e.g. serial@3100000 or serial@3110000) in the device tree explicitly for this to work?

Any advice would be appreciated.

Thank you for your previous responses.

I was able to get the UART TX pin working by explicitly modifying the Device Tree as follows:

Environment

  • JetPack Version: 5.1.2
  • Board: Custom carrier board for Jetson Orin

1. Device Tree modification

File location:
/Linux_for_Tegra/source/public/hardware/nvidia/soc/t23x/kernel-dts/tegra234-soc/tegra234-soc-uart.dtsi

I changed the serial@3110000 node (UARTB, /dev/ttyTHS1) to:

serial@3110000 {
    status = "okay";
};

Then I rebuilt and flashed the kernel. After this change, the TX pin output started working as expected.


However, I couldn’t find this requirement explicitly documented in the Jetson Linux Developer Guide or official pinmux/DT overlay workflows.

  • Is there any official documentation or reference that describes this step?
  • Or is there a more standard/clean way to enable UARTB for external RS-232 communication?

Any guidance or clarification would be greatly appreciated.

The serial interface and the mapping may differ due to the releases.
You can refer to 9.7 Universal Asynchronous Receiver/Transmitter(UART) in official Technical Reference Manual document for details, Or https://elinux.org/Jetson/L4T/peripheral/#Mapping_3 for the mappings.

We would suggest also checking the dmesg and device tree for the current status.

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