How to flush to L4T and get access to bootloader of orin dev board?

Hi,

I’m trying to access the Dual core lock step mode in Orin chip;s ARM core through modifying tegra234-mb1-bct-misc-common.dtsi in the bootloader folder. However, it seems I can’t locate this file. I activate my orin develop board through the oem-config ubuntu setup described here: Getting Started with Jetson AGX Orin Developer Kit | NVIDIA Developer. and install the jetpack components as described in the same page. There is no such a folder called L4T/bootloader/ in the system after I successfully activated the board.

Does that mean I need to flash my orin boards into L4T? If so, do we have a document for this? If not, can someone help on locating this tegra234-mb1-bct-misc-common.dtsi file?

Your topic was posted in the wrong category. I am moving this to the Jetson AGX Orin category for visibility.

Thanks! Yeah, I meant to ask in Orin forum.

There is always a need for a x86 ubuntu host when you want to work with Orin.

This x86 host is for flashing the jetson device and that file should be on that x86 host if you ever installed sdkmanager.

Hi Wayne, thanks for the reply.

Can I ask two more questions? First, do we have a tutorial on how to flash the Orin chips with a x86 host? Can I do that even I have already activated through the oem-configuration? Does that mean I need to erase the original OS image?

Second, if the flashing process fails, do we have any recover process? Just in case the board turns out not working through my flashing.

  1. Every jetson platform could be flashed by host machine and that also means erasing the data.
    The easiest way is using sdkmanager.
    NVIDIA SDK Manager | NVIDIA Developer
    And there is a document for using flash tool also.
    Jetson Linux 35.1 | NVIDIA Developer → developer guide

  2. There are recovery mode button on the board. When you follow the correct way to press those buttons, your board will be in recovery mode. This is totally hardware triggered event, so no matter what software flash failed on your board, this method will always take effect.
    Also, recovery mode is just a mode to let your host able to flash your device. It does not “recover” anything. This is a common question from new users.

Hi Wayne, thanks for the help.

I was following your step and using a NVIDIA SDK Manager. My problem is that the SDK manager can’t connected to my orin board, even I try to enforce it into recovery mode.

To do so, I did what is instructed in this document: NVIDIA Jetson Orin - Wizard Flashing by pressing and hold the recovery button and pressing the reset button. Yet, the orin chip never show up in my lsusb list.

Do you happen to know what may cause this?

Best, Yiming.

Are you sure the flash port you are using is correct and your type C cable is a good quality one?

Are you sure your host is not a VM? (VM sometimes has problem in detecting devices)

Hi,
After a while of trying and debugging, I figure out what cause the problem of unable to connect the device. I am now able to connect the device to my x86 host and use sdk manager to flash it.

My new problem is that, After I successfully flash it (shows up finished on sdk manager), the next step is to install Jetson packages including CUDA, etc. I need to connect to my orin chips with either usb port or ethernet port, both require an IPv4 address which I’m not aware of.

So I try to boot the orin chips with a monitor, a keyboard and a mouse. I was not be able to completely boot it. The nvidia logo page showed up, and several lines of information was showing up:

"Jetson UEFI firmware (version 1.0-d7fb19b built on 2022-08-10T20:18:13-07:00)", this is on the top.

 "** WARNING: Test Key is used. **"
 "L4TLauncher: Attempting GRUB Boot"
 "L4TLauncher: Attempting Direct Boot"

And I lost the device afterwards, although the progress bar finishes.

Could you give me a hint on what’s happening here? I can still connect it to my x86 host but I have no idea of how to boot it, either through the host or with a monitor and a keyboard/mouse setup.

Best, Yiming.

Are you sure you’ve flashed the board and sdkmanager told you the flash is successful?

BTW, what is the exact cause that makes your board not able to get flashed?

The reason my board was not be able to get flashed was according to the tutorial I used, the power supply need to be disconnected while flashing the board. But I find out only when I connect the board with the power supply, can my host machine detect the board.

I have two of my sdkmanager screen shot attached. I’m pretty sure the flash was successful, as the sdkmanager shows up and it ask me to continue to the next step, which is to install Jetson SDK Components.

To install SDK components, I need to figure out the ip address, etc. So I disconnect the board and try to boot it to check the ip address.



Is there a way I can re-flash it or something?

Hi,

I finally manage to get the flash work successful. After flashing, I can now boot my Orin chips and get into the systems.

So back to my original question, when I want to modify this tegra234-mb1-bct-misc-common.dtsi file in the bootloater folder, which I currently can find on my host machine. Does that mean I need to modify it and reflash the orin chips? As per my understanding, what is on my host machine is the Linux image we use to flash orin.

Best, Yiming.

Yes, after you modify mb1 bct files, you have to flash the board again.

But you can directly use flash.sh to flash instead of using sdkmanaer.

Thanks! Just to double check, when I use flash.sh in the Linux_for_Tegra folder, I still need to set the board to recovery mode right?

Yes. Recovery mode is needed whenever you want to flash a board.

Thank you so much Wayne for the patience. I’ve got one more question to hold me up. According to the instruction, except for changing the configuration in tegra234-mb1-bct-misc-common.dtsi, which I have done. I also need to modify the device tree node containing cpu idle information.

My question is that I did not find the corresponding .dtsi file under the Linux_for_Tegra/ folder that describe the cpu states. According to some reference online I found out, should I suppose to be looking something like tegra234-p3701-power-tree.dtsi under the <top>/hardware/nvidia/platform/t23x/ <top>/hardware/nvidia/soc/t23x ? Is this folder a sub-directory of Linux_for_Tegra/? Can you point me a direction? I have went through Jetson AGX Orin Platform Adaptation and Bring-Up and it seems didn’t mention this part?

Hi,

Not every dtsi is for the same software. What you saw, those dtsi under your Linux_for_Tegra, are for the MB1 bootloader software.

However, what you are asking for is the device tree for kernel. And those source codes need to download separately.

Download the public source here.

Hi,

I have followed the following steps to modify the kernel and flash. Download the source of 35.1, modify the device tree node I’m looking for (cpu idle state), build the kernel (successful), copy the nvgpu.ko and Image to the corresponding directory, ./apply_binaries.sh (successful) and sudo ./flash.sh xxx xxx (The target t186ref has been flashed successfully, reset the board to boot from internal eMMC).

However, I was not be able to boot, I’ve got no response after the first starting page (the nvidia logo page).

Do you happen to know which step possibly goes wrong? There are some errors in the log file of ./flash.sh. Such as ERROR: failed to read rcm_state and ERROR: Skip generating mem_bct because sdram_config is not defined. Do you think that’s the root cause? Was it because the kernel image I build is faulty?

And, by the way, the board is becoming very hot now, hope everything is all right.

Hi,

Actually, I am not sure why you need to run apply_binaries.sh. This preparation is already done by the sdkmanager.

My point is, you don’t need to download another “Linux_for_Tegra” folder by yourself. Sdkmanager shall already install one for you in your ~/nvidia folder on host.

Also, I feel what you are doing is not related to what you changed to device tree… Device trees are files with “dtb” as it suffix. But you just told me you only copy Image and nvgpu.ko.

It means you didn’t copy new dtb at all. Thus, if your only change is in dtb and you didn’t copy it but device cannot boot up, then I guess the issue is not related to your dtb change…

The reason I do all the steps is because the dtb I need is not in my Linux_for_Tegra folder, so I downloaded it from the source (L4T Archive) and modify the dtb file there, compile that kernel to make sure the dtb modification reflect in the os and try to flash that into my board.

Are you suggesting all I need to do is to download the dtb file I need and copy those dtb file into my Linux_for_Tegra folder? Maybe I need to add some include in the overall dtsi file?

Best, Yiming.