How to disable boot output on ttyS0 on TX2NX

Hello! I’m trying to completely disable boot output & console ability for ttyS0 on Jetson TX2NX.
Researching this, I found these steps I can do:

  1. Remove console-port in serial@3100000 node from:
source/public/hardware/nvidia/platform/t18x/lanai/kernel-dts/common/tegra186-p3636-0001-common.dtsi
source/public/hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-platforms/tegra186-quill-common.dtsi

  1. Edit /nvidia-sdk/p3636.conf.common
Line 110: Replace ODMDATA=0x2090000; with ODMDATA=0x14000;
Line 126: Replace with CMDLINE_ADD="fbcon=map:0 net.ifnames=0 isolcpus=1-2";
  1. Edit source/public/hardware/nvidia/platform/t18x/lanai/kernel-dts/tegra186-p3636-0001-p3509-0000-a01.dts
chosen {
      board-has-eeprom;
      // bootargs ="console=ttyS0,115200";
      // stdout-path = &uarta;
      nvidia,tegra-joint_xpu_rail;
};
  1. Edit BPMP
cd $Nvidia_SDK$/Linux_for_Tegra/bootloader/t186ref

# Create BPMP backup
cp tegra186-bpmp-p3636-0001-a00-00.dtb tegra186-bpmp-p3636-0001-a00-00.dtb.bak

# Decompile BPMP
dtc -I dtb -O dts tegra186-bpmp-p3636-0001-a00-00.dtb > bpmp.dts

# Replace serial node port to 0xff:
      serial {
            port = <0xff>;
            has_input;
      };

# Recompile BPMP
dtc -I dts -O dtb bpmp.dts > tegra186-bpmp-p3636-0001-a00-00.dtb
  1. Reflash Jetson TX2NX

It does disable the Kernel prints and Ubuntu log-in part but it doesn’t disable the bootup sequence prints (from CBoot, I suppose). How can I disable the bootup sequence? Am I using the wrong ODMDATA value because I have only found it on Jetson Nano subforum and not in TX2 subforum.

Thank you!

Hi therealmatiss,

Please configure ODMDATA=0x2010000 to disable Debug Console here.

May I know what’s your use case to disable all debug messages?
Are you trying to use debug UART interface as normal UART communicating with other device?

1 Like

We have a production device, which has a chip connected to that UART and it’s responding to the boot prints causing the system to not boot.

Unfortunately, this is not working. Our device is constantly sending data to that UART port when it’s powered up - it still fails to boot up.

I managed to solve this issue. This issue was actually not a part of Debug UART but instead of a feature in the U-Boot called Autoboot. By default for Nvidia Jetson, it’s set to wait 2 seconds for any input via UART to stop booting up. I had to re-compile U-Boot from sources and disable the Autoboot abortion feature.

  1. Download U-Boot sources & Toolchain
wget https://developer.nvidia.com/embedded/l4t/r32_release_v7.2/sources/t186/public_sources.tbz2
tar -xf public_sources.tbz2
tar -xf Linux_for_Tegra/source/public/u-boot_src.tbz2

wget http://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
tar -xf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
  1. Edit Jetson TX2NX U-Boot configuration file u-boot/configs/p3636-0001_defconfig
    There are different CONFIG_BOOTDELAY options but -2 is the one that disables boot interruption entirely. Different defconfig is used for different Jetson’s this one is TX2.
Add line 14: CONFIG_BOOTDELAY=-2
  1. Install dependencies
sudo apt update
sudo apt install build-essential libssl-dev bison flex
  1. Setup environment
# export CROSS_COMPILE=$YOUR_TOOLCHAIN_PATH$/bin/aarch64-linux-gnu-

export CROSS_COMPILE=/home/flasher/uboot-development/toolchain/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
  1. Compile U-Boot
cd u-boot
make distclean
make p3636-0001_defconfig
make
  1. Copy compiled binary
cp $NvidiaSDK/bootloader/t186ref/p3636-0001/u-boot.bin $NvidiaSDK/bootloader/t186ref/p3636-0001/u-boot.bin.bak

cp u-boot.bin $NvidiaSDK/bootloader/t186ref/p3636-0001/u-boot.bin
  1. Reflash Jetson & enjoy being able to boot up with Debug UART connected to any other device.
1 Like

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