TX2 NX RS232 Communication Problem

Hi there,

I’m working on our custom carrier board with TX2 NX SOM. When I test the RS232 connection, the TX2 NX can send messages correctly but it can not receive (messages returns back to the host).

Additionally, while TX2 NX’s RS232 connection confirmed and rebooting, some messages received to the host PC like that:

welcome to lk
adc initialized
chip_revision initialized
speedo initialized
dt initialized
clk_init_mrq: mrq handler registered
383 clocks registered
clock initialized
reset initialized
i2c5 controller initialized
i2c10 controller initialized
initialized i2c mrq handling
i2c initialized
thermal initialized
fuse initialized
soctherm initialized
aotag initialized
cvc initialized
regulator initialized
dvs initialized
t186_dvs initialized
pm initialized
tegra186_reset initialized
uart initialized
sku_init: not sku 00
sku initialized
modules initialized
tag initialized
avfs_clk_platform initialized
parse_possible_parent_table: pllp_bb not in allowed parent table for axi_cbb
clock_dt initialized
powergate initialized
avfs_gpu initialized
clock_gpu initialized
debugfs_mrq initialized
emc initialized
gpmu2bpmp initialized
mc_init_mrq: mrq handler registered
mc initialized
pg_mrq initialized
pg_legacy_mrq initialized
pm_post initialized
ppm initialized
uphy_dt initialized
uphy initialized
mrq initialized
tag is 91572a54614f84d0fd0c270beec2c56f
tag_lateinit initialized
clock_debugfs initialized
thermal_test initialized
avfs_clk_platform_post initialized
avfs_debugfs initialized
clock_pto initialized
cvc_dt initialized
debugfs_cons_init initialized
dvs_debugfs initialized
rm initialized
edp initialized
gboost initialized
powergate_debug initialized
regulator_post initialized
sku_debugfs initialized
speedo_debugfs initialized
soctherm_debug initialized
aotag_hsm initialized
sc7_diag initialized
starting app shell
entering main console loop

I have also tested with Xavier NX and Nano (Jetpack 4.5.0) but I have not seen these messages before. Has anyone encountered this before?


hello mehmetdeniz,

those messages looks like bootloaders logs (i.e. little kernel) after MB2 and before CBoot.
you may also check Jetson TX2 Boot Flow for reference,

may I know which JetPack release version it is?
could you please also share your hardware connections for reference.

Hello @JerryChang,

JetPack 4.5.1

We used these pins:
207 UART1_RTS*
209 UART1_CTS*

and used /dev/ttyTHS2 to the kernel side


hello mehmetdeniz,

recap this via Jetson TX2 NX Product Design Guide,

PIN#  | Module Pin Name | Tegra X2 Signal | Usage/ Description |  Usage on DevKit
203   | UART1_TXD       |  UART3_TX       |  UART #1 Transmit. |  Expansion Header
205   | UART1_RXD       |  UART3_RX       |  UART #1 Receive   |  Expansion Header

you may also check kernel logs for the mapping, i.e. $ dmesg | grep THS;
it should used by uartc: serial@c280000. this is being used for output BPMP logs.

you may disassembler the bpmp-dtb file to remove the configuration.
for example,

-	serial {
-		port = <3>;
-		has_input;
-	};

Hello @JerryChang

the output is here:

[ 0.937710] 3110000.serial: ttyTHS1 at MMIO 0x3110000 (irq = 33, base_baud = 0) is a TEGRA_UART
[ 0.938612] c280000.serial: ttyTHS2 at MMIO 0xc280000 (irq = 34, base_baud = 0) is a TEGRA_UART
[ 0.939398] 3130000.serial: ttyTHS3 at MMIO 0x3130000 (irq = 35, base_baud = 0) is a TEGRA_UART

Now we will check the bpmp-dtb file.


we found this file in this path Linux_for_Tegra/bootloader/tegra186-bpmp-p3636-0001-a00-00.dtb

  • we transformed .dtb file to .dts

  • Removed this serial part

-	serial {
-		port = <3>;
-		has_input;
-	};

Then what should we do now?

Should we

  • turn it to dtb,
  • replace the original file (tegra186-bpmp-p3636-0001-a00-00.dtb)
  • and re-flash it (sudo ./flash.sh -r -k kernel-dtb jetson-xavier-nx-devkit-tx2-nx mmcblk0p1)?


hello mehmetdeniz,

yes, you may convert the DTS into a DTB with below commands,
for example,
$ dtc -I dts -O dtb -o new-output.dtb temp.dts

please check flash configuration file for reference, kernel-dtb partition is the device tree blob instead of bpmp-dtb.
I haven’t try this before, you may please have a try with this command,
i.e. $ sudo ./flash.sh -r -k bpmp-fw-dtb jetson-xavier-nx-devkit-tx2-nx mmcblk0p1.
otherwise, you should run a whole image flash to update it.

I flashed the bpmp-fw-dtb but it has not worked.

I also reflashed the full system, updated the dtb file. Our problem have not solved yet


hello mehmetdeniz,

could you please double check the bpmp-dtb file has remove the configuration correctly. (i.e. tegra186-bpmp-p3636-0001-a00-00.dtb)

hello mehmetdeniz,

we had also test this with TX2 NX, it’s confirmed we’re able to disable BPMP logs.
here’re steps for your reference,

  1. Enable THS2 with /Linux_for_Tegra/kernel/dtb/tegra186-p3636-0001-p3509-0000-a01.dtb
+	serial@c280000 {
+		compatible = "nvidia,tegra186-hsuart";
+		status = "okay";
+	};
  1. Disable bpmp-dtb port with /Linux_for_Tegra/bootloader/t186ref/tegra186-bpmp-p3636-0001-a00-00.dtb
-	serial {
-		port = <3>;
-		has_input;
-	};
  1. perform full flash to update these two dtb files.

Hello @JerryChang

I will try it as soon as possible and share the results

thanks a lot

Hello @JerryChang
I tried and it worked

In step 1, /Linux_for_Tegra/bootloader/tegra186-p3636-0001-p3509-0000-a01.dtb file has still this configuration. That’s why I don’t change it.

In step 2, I removed this serial part
Our failure comes using the wrong file (we used the /Linux_for_Tegra/bootloader/tegra186-bpmp-p3636-0001-a00-00.dtb file).

In step 3, I ran this script:
$ sudo ./flash.sh -r -k bpmp-fw-dtb jetson-xavier-nx-devkit-tx2-nx mmcblk0p1

Thanks a lot

Hi JerryChang,

I followed your instruction but nothing output from THS2.

  1. It seems like THS2 is enabled.
p@p-desktop:~$ dmesg | grep THS
[    0.940063] 3110000.serial: ttyTHS1 at MMIO 0x3110000 (irq = 33, base_baud = 0) is a TEGRA_UART
[    0.941255] c280000.serial: ttyTHS2 at MMIO 0xc280000 (irq = 34, base_baud = 0) is a TEGRA_UART
[    0.942203] 3130000.serial: ttyTHS3 at MMIO 0x3130000 (irq = 35, base_baud = 0) is a TEGRA_UART

  1. After I removed “serial” part from Linux_for_Tegra/bootloader/t186ref/tegra186-bpmp-p3636-0001-a00-00.dtb.
    BPMP logs are not output now.

Is there anything I can check?

(I’m using TX2 NX with R32.5.1)


so, you’re having success to disable BPMP logs,
please initial another new topic thread for further supports since this has been solved.