Enabling ttyTCU0 as Regular UART on Nvidia Jetson Orin Nano
Issue Overview
Users are experiencing difficulties when attempting to enable ttyTCU0 as a regular UART on the Nvidia Jetson Orin Nano development board. The issue arises during the setup process, specifically when trying to disable the combined UART functionality and reconfigure it as a standard UART interface. Users have reported that after disabling the combined UART, they are unable to establish a functional serial connection through the same hardware interface.
The problem affects the Forecr DSBOARD-ORNX running Jetpack 5.1.2. Users have attempted various methods to resolve the issue, including disabling the serial-getty@ttyTCU0 service, using device tree overlays to modify the UART configuration, and removing console-related bootargs. Despite these efforts, the UART functionality remains non-operational, with no signal detected on the TX pin during loopback tests.
Possible Causes
-
Firmware Limitations: The combined UART includes log output from various firmware components, including the bootloader and MB1/MB2, which may not be easily separated or reconfigured.
-
Incomplete Configuration: The device tree overlay used to disable the combined UART and enable uartc may not be sufficient or correctly implemented to fully configure the UART interface.
-
Driver Issues: The necessary drivers for operating the UART as a standard interface might not be properly loaded or configured after disabling the combined UART functionality.
-
Hardware Design: The Orin Nano’s hardware design may not support using the combined UART pins as a standard UART interface without additional modifications.
-
Bootloader Configuration: Residual bootloader settings might be interfering with the reconfiguration of the UART interface.
-
Power Management: Incorrect power management settings could prevent the UART interface from being properly enabled or powered.
Troubleshooting Steps, Solutions & Fixes
-
Verify Device Tree Overlay:
Ensure that the device tree overlay is correctly disabling the combined UART and enabling the standard UART. Double-check the compatibility string and target paths. Example overlay:/dts-v1/; /plugin/; / { overlay-name = "disable combined-uart"; compatible = "nvidia,p3768-0000+p3767-0004nvidia,p3767-0004nvidia,tegra234nvidia,tegra23"; fragment@0 { target-path = "/"; __overlay__ { combined-uart { compatible = "nvidia,tegra194-tcu"; status = "disable"; }; }; }; fragment@1 { target = <&uartc>; __overlay__ { status = "okay"; }; }; };
-
Check UART Interface Initialization:
Before attempting to send data, properly initialize the UART interface with the correct baud rate. Use the following commands:sudo su stty -F /dev/ttyTHS2 115200 raw -echo cat /dev/ttyTHS2 & echo "test" > /dev/ttyTHS2
-
Examine System Logs:
Check dmesg output for any error messages related to the UART interface. Look for initialization failures or driver issues.dmesg | grep -i uart
-
Verify Pin Configuration:
Ensure that the physical pins associated with the UART interface are correctly configured and not being used by other functions. Use Jetson-IO tool to check and modify pin configurations if necessary. -
Test with Alternative UART Interfaces:
If available, try using other UART interfaces on the board to isolate whether the issue is specific to the ttyTCU0/ttyTHS2 interface or a more general problem. -
Revert to Default Configuration:
If all else fails, consider reverting to the default combined UART configuration and exploring alternative solutions for additional UART interfaces, such as:- Using USB-to-UART adapters
- Utilizing I2C or SPI to UART expander modules
- Considering an upgrade to the AGX Orin for more native UART interfaces
-
Consult Nvidia Developer Forums:
As this use case is not officially supported or verified by Nvidia, consider posting detailed logs and configuration information on the Nvidia Developer Forums for further assistance from the community or Nvidia engineers.
It’s worth highlighting that Nvidia does not officially support or recommend disabling the combined UART for use as a regular UART on the Orin Nano. If additional UART interfaces are required for your project, consider alternative solutions or hardware options as suggested above.