Flash via network port / ethernet port

Hello
is that possible to flash the very first image via network port / ethernet port / OTA ?

Hello @mozammel.hossain,

In our experience it is not possible to use OTA without having a board already flashed, given that there needs to be a mechanism to trigger the update payload.

In the past, we have told our customers to negotiate with their HW manufacturers to have all their systems flashed during production.

May I ask what is your use case?

regards,
Andrew
Embedded Software Engineer at ProventusNova

@proventusnova Hi, thank your reply.

In my case, I have build custom image using yocto-OpemEmbeddedCore and want to flash (very first flash not reflash) without USB connection.

Hello @mozammel.hossain,

Thanks for getting back with more details.

I believe you are in the same position using Yocto that you would be if you were using Jetpack.
OTA works with Yocto the same way as it works in Jetpack, and it would allow you to create full payloads to update everything in your board from your bootloader up to your rootfs, however, you would still need a way to trigger the update process from the board once the payload is in there.

You might be able to flash only the external storage device, such a NVMe or SSD, but you would need to make sure all your internal memories are flashed with something compatible with your first flash, therefore you might end up with the same issue after all, given that you would need to connect the usb cable to flash those internal memories such as the QSPI.

Why is it that you are not going to be able to use the USB connection ?

Is it going to be removed from the carrier board design ? or is it just inaccessible from outside the system ?

regards,
Andrew
Embedded Software Engineer at ProventusNova

@proventusnova is correct, it won’t matter about the filesystem. Certain parts of the Jetson need the Jetson to be in recovery mode for flash. Recovery mode turns a Jetson into a custom USB device understood only by the custom USB driver that runs on the Linux host PC. You must have the correct USB port available, although it could be from a different carrier board for flash (followed by moving the module to the correct carrier board).

I’ll also add that Jetsons do not have a traditional hardware BIOS (making the Jetson smaller, less expensive, and perhaps the most important, using less power). All of this is done in software (either in a partition of eMMC that is signed, or else in QSPI memory). That boot chain is why you cannot just insert some sort of install disk or thumb drive and install from there…the BIOS functions would cease to exist in the middle. Even if you had some sort of ethernet driver during the boot stages, you’re also performing the equivalent of a BIOS CMOS flash. It would be pretty hard to make a regular PC motherboard capable of being BIOS flashed and having the o/s installed simultaneously.

@proventusnova @linuxdev Thank you both of you.

I can and actually did flash through USB connection but I want to make more independent. Currently I am using Orin Nano devkit.

I have tried to look for BIOS in Orin Nano. There I found Boot Mamanger Menu with UEFI SD Devices, HHTPv4, PXE6, PXE4, HHTPv6 and shell. Later I fount this video for pi

Setting up an UEFI PXE server on Linux (Part 1) (youtube.com)

I also found this documentation

https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/SD/FlashingSupport.html?#configuring-a-pxe-boot-server-for-uefi-bootloader-on-jetson

So I have modified my solution little bit as I amnot flashing any Jetpack, I have build custom image with yocto using meta-tegra.

Install DHCP, TFTP, and NFS on my linux computer
Configure DHCP server with

subnet 10.46.95.0 netmask 255.255.255.0 {
    range 10.46.95.100 10.46.95.200;
    option routers 10.46.95.1;
    filename "pxelinux.0";
    next-server 10.46.95.107;
}

Configure TFTP Server with pxelinux.0 and modified pxelinux.cfg with

DEFAULT jetson
LABEL jetson
    KERNEL /Image
    APPEND console=ttyUSB0,115200n8 root=/dev/nfs rw nfsroot=10.46.95.107:/mnt/yocto_rootfs ip=dhcp

Moved the core-image-full-cmdline.ext4 to root filesystem directory
sudo mount -o loop core-image-full-cmdline.ext4 /mnt/yocto_rootfs

Configured NFS exports with
/mnt/yocto_rootfs 10.46.95.0/24(ro,sync,no_subtree_check)

then restrted DHCP and NFS service

But from boot manager when select PXE4, it can not get anyhting

Hello @mozammel.hossain,

That seems very interesting.
To be honest, we have never done something similar in the past.

Just out of curiosity, do you get any logs when you try to use PXE4 from the boot manager?

regards,
Andrew
Embedded Software Developer at ProventusNova

No logs were created. I have tried to find the board’s default IP address, but it does not have one. In the BIOS, the UEFI does not have any network drive available.

Hi mozammel.hossain,

Are you using the devkit or custom board for Orin Nano?
What’s your Jetpack version in use?

Please refer to Configuring a PXE Boot Server for UEFI bootloader on Jetson for this use case.

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