Jetson nano Boot messages are not hiding

Hi All
I have read many discussion on this forum where people are saying they are able to remove messages from jetson nano boot .I have tried most of it still i am not able to hide all.
Here i am attaching my extlinux.conf

TIMEOUT 10
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} vt.global_cursor_default=0  root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 net.ifnames=0 quiet

Any help is welcome that what am i doing wrong

If you run the command “cat /proc/cmdline”, what shows up?

Hi
I am attaching output of cat /proc/cmdline

tegraid=21.1.2.0.0 ddr_die=4096M@2048M section=512M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 console=ttyS0,115200n8 debug_uartport=lsport,4 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff780000 core_edp_mv=1075 core_edp_ma=4000 gpt  earlycon=uart8250,mmio32,0x70006000  root=/dev/sda1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 vt.global_cursor_default=0  root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 net.ifnames=0 quiet

That should use “quiet” correctly, but it might be that this does not entirely eliminate boot messages in Linux. Assuming this is not a serial console, and you are speaking of the locally attached HDMI monitor (please verify if this is the case, versus something like a serial console), then U-Boot should not show up either. However, to verify this with an easy test, can you temporarily remove the word “quiet” from “/boot/extlinux/extlinux.conf” and see if the boot messages increase?

Also, what is your ultimate goal for this? For example, are you trying to speed up boot, or perhaps just wanting the end user to not see the boot messages?

I am curious about what kind of boot log you are talking about here.

Hi
I meant the kernel messages which comes on startup of jetson nano

Hi
I am speaking of locally hdmi monitor .
I have deleted quiet from extlinux.conf and yes messages does increase .

My ultimate goal is that end user should not see the boot messages.

Note that stages of boot prior to the Linux kernel won’t output to the monitor anyway (except perhaps for a logo?), and so you should be able to do this entirely from the Linux kernel’s command prompt. The effect of “quiet” says this is working as expected, and so you should be able to use the extlinux.conf file to disable local terminal debug messages.

If you look at this command:
cat /proc/cmdline
…then you will see the arguments passed to the kernel at boot. This one is for local console boot messages:
console=tty0

This particular argument is unusual in that most arguments have only one occurrence, and any extra arguments prior to the last argument are ignored. Console is different in that it accepts both a serial console argument and a local console argument. I am thinking if you add this to the end of the extlinux.conf's APPEND key/value pair, then it should work: console=ttyS0,115200n8 console=`

In theory what this would do is keep serial console (unrelated to your issue, and serial console is very useful) while removing the local monitor’s console. It is easy to test, so if this does not work, then you can move on to device tree. I am not positive, but I think the “fbconmap=map:0” is ok to keep (it is the kernel messages being sent to the console which matters, not the fact that a console is possible).

Does that work? If not, then what do you see from this?
cat /proc/device-tree/chosen/bootargs

Note that in extlinux.conf the “APPEND” is normally a combination of inheriting from the argument “${cbootargs}”. The content of “${cbootargs}” is from the device tree’s “chosen->bootargs” node. You could remove “console=tty0” from that device tree node and simply remove any occurrence of “console=tty0” from ever reaching “${cbootargs}”. If you need to change the device tree just ask (the earlier steps I mentioned might be enough, so let’s try the easy way first).

Hi
Attaching screenshot and output of command so may be it will become more clear .
cat /boot/extlinux/extlinux.conf

TIMEOUT 10
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} vt.global_cursor_default=0  root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 net.ifnames=0 quiet console=ttyS0,115200n8 console=

 

Output of cat /proc/device-tree/chosen/bootargs

tegraid=21.1.2.0.0 ddr_die=4096M@2048M section=512M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 console=ttyS0,115200n8 debug_uartport=lsport,4 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff780000 core_edp_mv=1075 core_edp_ma=4000 gpt tegra_fbmem=0x800000@0x92ca9000 is_hdmi_initialised=1  earlycon=uart8250,mmio32,0x70006000  root=/dev/sda1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 vt.global_cursor_default=0  root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 net.ifnames=0 quiet console=ttyS0,115200n8 console=

These are the messages which is coming on local HDMI .I want to remove these

Are those messages the only ones showing up? If so, then this is a rather interesting case. However, what is the output of “cat /proc/cmdline”? We have all of the other information from the APPEND of extlinux.conf, plus we have the device tree node. What we don’t have is what the final cmdline is. This is still interesting because it shows most content has gone away (if that screenshot is the only boot output).

Hi there
here is output of cat /proc/cmdline

tegraid=21.1.2.0.0 ddr_die=4096M@2048M section=512M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 console=ttyS0,115200n8 debug_uartport=lsport,4 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff780000 core_edp_mv=1075 core_edp_ma=4000 gpt tegra_fbmem=0x800000@0x92ca9000 is_hdmi_initialised=1  earlycon=uart8250,mmio32,0x70006000  root=/dev/sda1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 vt.global_cursor_default=0  root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 net.ifnames=0 quiet console=ttyS0,115200n8 console=

My end goal is to create a type of kiosk with nano so i have removed all the jetson boot up logo etc .so this is the only messages which are upcoming up in boot.
Thank you so much for looking into it.Attaching a video for your reference.

This is becoming more interesting! Those messages are purely from the last stages of boot under the Linux kernel, so kernel command line should do the job. Normally the kernel considers only the last instance of some setting passed to it on command line. Earlier on you have “console=tty0”, which is the specification causing print in Linux. Then, at the end, this should be overridden since it has “console=” (and no “tty0”). I am thinking that perhaps some of the code related to what prints at the very end might not be looking at the last specification for “console=”. This seems reasonable since “console=” is one of the few tokens one can pass and it might have meaning in both the first and last instance (all due to having serial console plus regular console).

If this is the case, then you might need to use the device tree. You would edit node “chosen->bootargs”, and remove the “console=tty0” from it, then install the tree again. An example for doing this:

# If dtc is not installed, then:
sudo apt-get install device-tree-compiler
# This might have warnings, ignore them for now unless something fails.
dtc -I fs -O dts -o extracted.dts /proc/device-tree
# Now use a text editor on extracted.dts, find "bootargs" under "chosen". Look for "console=tty0",
# and remove it. Then create a binary from this:
dtc -I dts -O dtb -o edited.dtb extracted.dts
# Place a copy of this at:
/boot
# Add an FDT key/value pair naming this in "/boot/extlinux/extlinux.conf", causing it to become:
LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      FDT /boot/edited.dtb
      INITRD /boot/initrd
      APPEND ${cbootargs} vt.global_cursor_default=0  root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 net.ifnames=0 quiet

Once this boots you should find that file “/proc/device-tree/chosen/bootargs” no long has “console=tty0”, and this would be reflected in “cat /proc/cmdline”.

Alternate: Create a second boot entry instead of modifying the first. Use serial console to select this alternate entry (which would be the one with a new “LABEL” and new “MENU LABEL”). This is safer and leaves the original entry always available.

If there is no more “console=tty0”, and the problem persists, then you have found a bug. The workaround would then probably become one of setting the log level such that those logs are ignored during boot.

Hi
Thanks for your response .I followed all your steps but still the console tty0 is not removing from my cat /proc/cmdline output.

tegraid=21.1.2.0.0 ddr_die=4096M@2048M section=512M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 console=ttyS0,115200n8 debug_uartport=lsport,4 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff780000 core_edp_mv=1075 core_edp_ma=4000 gpt tegra_fbmem=0x800000@0x92ca9000 is_hdmi_initialised=1  earlycon=uart8250,mmio32,0x70006000  root=/dev/sda1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 vt.global_cursor_default=0  root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 net.ifnames=0 quiet console=ttyS0,115200n8 console=

I am wondering have you tried to change the loglevel to the kernel cmdline? For example, “loglevel=0”

Did you remove the “console=tty0” from the device tree? Be certain it is gone from “cat /proc/device-tree/chosen/bootargs”. Once it is gone there, then simply remove all “console=tty0” from extlinux.conf. Then the “console=” (without any argument) would need removal.

Then, as mentioned by @WayneWWW, the next workaround would be setting loglevel to disable logging of messages. Like the other “APPEND” values in extlinux.conf you can put the “loglevel=0” on the end to add that to the command line.

I did all steps mentioned by you to remove console=tty0 from device tree but it is not seems to have any effect on bootargs.
Not sure why after i remove from device -tree it is still not changing bootargs.

Added loglevel=0 but still same messages no change

tegraid=21.1.2.0.0 ddr_die=4096M@2048M section=512M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 console=ttyS0,115200n8 debug_uartport=lsport,4 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff780000 core_edp_mv=1075 core_edp_ma=4000 gpt tegra_fbmem=0x800000@0x92ca9000 is_hdmi_initialised=1  earlycon=uart8250,mmio32,0x70006000  root=/dev/sda1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 vt.global_cursor_default=0 loglevel=0 root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 net.ifnames=0 quiet console=ttyS0,115200n8 console=

If the bootargs still has that in it, then it means the device tree (for whatever reason) is still one of the others. The device tree is possibly in two places:

  • In “/boot” with “extlinux.conf” naming it, or
  • In a partition (which requires a flash to update, though you don’t have to update the rootfs).
  • For the case when the extlinux.conf named FDT is found, then the partition is ignored.
  • Special exception is if security fuses are burned, then only the signed partition version is accepted.

Once you change this in the partition device tree there is no need to use any extlinux.conf version. Even the “console=” (without argument) should be removed (I’m not certain what the effect of this is since console has two entries and not one…one for serial and one for regular terminal). Can you be certain that (other than for serial console) all console= in extlinux.conf is also removed?

There is some difference in flashing different Jetson models for the device tree partition. I don’t know from memory what the correct command would be, but could someone say what the particular DTB file is for flashing of the SD card dev kit (if it is for a third party carrier and eMMC model, then we’d have to use their initial device tree)? And what the command is to flash just that partition without flashing any rootfs content?

Hi
Looks like it is solved i think device tree was not changing because of FDT key value pair i have to add in twice only then it is hiding tty0 in “/cat/proc/device-tree/chosen/bootargs”

here attaching my extlinux.conf

TIMEOUT 10
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      FDT /boot/edited.dtb
      INITRD /boot/initrd
      FDT /boot/edited.dtb
      APPEND ${cbootargs} vt.global_cursor_default=0 loglevel=0 root=/dev/mmcblk0p1 rw rootwait rootfstype
=ext4 net.ifnames=0 quiet console=ttyS0,115200n8 console=

strange thing is that if i comment even one occurrence of dtb file its now working.