Https://forums.developer.nvidia.com/t/enabling-the-correct-uarts-on-the-orin-nx/249687

I’m trying to get UART0 to work with an Orin Nano in Jetpack 6 and not having any luck.
Has anything changed in the background with Jetpack 6 that would make the instructions in this post not work?

Tried changing the status for serial@31100000 to “okay” in the DTB file before flashing, but nothing seems to happen. I can disable the serial@31000000 and have it stop working, so I know the device tree is changed, but can’t get serial@31100000 to register a UART device. I’m using a custom carrier board, but also testing on an Orin Nano dev board just to see if the UART0 is registering as a device. (it’s not so far)

EDIT : I don’t know if tegra194-hsuart is the correct way to do it, but it works for me so far

I encountered the same issue. it changed in the new 36.3 release.

you have to change the block serial@3110000 to :

serial@3110000 {
			compatible = "nvidia,tegra194-hsuart";
			reg = <0x00 0x3110000 0x00 0x10000>;
			interrupts = <0x00 0x71 0x04>;
			clocks = <0x03 0x9c>;
			resets = <0x03 0x65>;
			status = "okay";
			reset-names = "serial";
		};

Then, at the bottom, there’s an aliases block in which you have to add it.
Here’s mine, derived from a orin nano devkit. I added serial3 = "/bus@0/serial@3110000" and in my OS it appears as /dev/ttyTHS3:

aliases {
		mmc0 = "/bus@0/mmc@3400000";
		serial0 = "/serial";
		serial1 = "/bus@0/serial@3100000";
		serial2 = "/bus@0/serial@3140000";
		serial3 = "/bus@0/serial@3110000";
		i2c0 = "/bus@0/i2c@3160000";
		i2c1 = "/bus@0/i2c@c240000";
		i2c2 = "/bus@0/i2c@3180000";
		i2c3 = "/bus@0/i2c@3190000";
		i2c4 = "/bpmp/i2c";
		i2c5 = "/bus@0/i2c@31b0000";
		i2c6 = "/bus@0/i2c@31c0000";
		i2c7 = "/bus@0/i2c@c250000";
		i2c8 = "/bus@0/i2c@31e0000";
		qspi0 = "/bus@0/spi@3270000";
		rtc0 = "/bpmp/i2c/vrs@3c";
		rtc1 = "/bus@0/rtc@c2a0000";
		nvdla0 = "/bus@0/host1x@13e00000/nvdla0@15880000";
		nvdla1 = "/bus@0/host1x@13e00000/nvdla1@158c0000";
		tegra-camera-rtcpu = "/rtcpu@bc00000";
	};

Thanks so much! That seems to have worked. I was so close, but was missing the reset-names line. Just for anyone reading this, you have to make the change in the pre-flash .dtb file. Decompiling, modifying and recompiling the working (post-flash) .dtb file doesn’t seem to work after the unit is flashed.

1 Like

Cheers!