Change console baud rate on Jetson Nano

Hi all

When doing some testing with the Jetson Nano on an Auvidea JN30B carrier board, I discovered some unexpected behavior. The device did not boot the first 2 times I powered it. From then on, it worked like a charm.
After a couple of days, the same behavior showed and when I looked into the console boot logs, garbage was showing. It seemed like the baud rate setting was not correct.

In the JN30B technical reference manual (link), it is advised to change the UART baud rate to 38400.

MCU firmware v1.1
This version of the MCU is limited to a UART baud rate of 38400 baud max. Please set the TX1/TX2 to 38400. Please edit the file /boot/extlinux/extlinux.conf. Please replace 115200n8 by 38400n8.

TIMEOUT 30
DEFAULT primary

MENU TITLE p2371-2180 eMMC boot options
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
FDT /boot/tegra210-jetson-auvidea-j90.dtb
APPEND fbcon=map:0 console=tty0 console=ttyS0,115200n8

Instead of changing it in the /boot/extlinux/extlinux.conf file, I tried to update the baud rate in the device tree through fdtget and fdtput with these steps:

  1. Copy the device tree from /boot to one of the Balena containers running
  2. Get into the container and check the bootargs: fdtget jn30b.dtb /chosen bootargs
  3. Update the bootargs to use a baud rate of 38400: fdtput -t s jn30b.dtb /chosen bootargs “kmemleak=on earlycon=uart8250,mmio32,0x70006000,38400n8”
  4. Copy back the device tree to the /boot folder
  5. Reboot the device

Because this did not update the baud rate of the console, I have tried another approach…

  1. Copy the device tree from /mnt/sysroot/active/current/boot to one of the balena containers running
  2. Get into the container and check the bootargs: fdtget jn30b.dtb /chosen bootargs
  3. Update the bootargs to use a baud rate of 38400: fdtput -t s jn30b.dtb /chosen bootargs “kmemleak=on earlycon=uart8250,mmio32,0x70006000,38400n8”
  4. Copy back the device tree to the /mnt/sysroot/active/current/boot folder
  5. Set a custom DT in the BalenaCloud application
  6. Reboot the device

Both the approaches did not change anything to the console baud rate. I know this because my Minicom settings were not changed (still on 115200) and the logs showed up perfectly. One would expect that the baud rate should be changed to 38400 Bd for the text to be readable if the DT changes had taken effect.

Has anybody encountered the problem of a device needing 3 reboots to be able to boot up correctly? You also saw garbage on the console?
And is it possible to change the baud rate from the device tree? Did I use the correct node and or property?

Thanks a lot in advance!

Hi @robbeg, thanks for the detailed description. This is definitely not an error or issue that I have seen before, and I can’t quite understand why a device would need to be booted 3 times in order to work, beyond some sort of hardware failure.

But, as for your baud rate update, your first methodology looks great, except the /boot location is likely mounted read-only, and instead of trying to write the dtb file back to /boot, try writing those changes to /mnt/boot instead.