Jetson Orin Nano 8GB module on Custom Board - Boot from ASM1166 SATA Drive

Hello.

We have developed a carrier board for the p3767 module. It works well for the purpose, but our customer has another potential use for it that we would like to make it appropriate for. Currently using JetPack 5.1.1 but will move to 6 soon.

Unfortunately, due to the initial requested specs, we designed the board with one M.2 M key slot. However we would like to increase the storage potential of the device to host multiple drives.

We have found an M.2 adapter board with an ASMedia device ASM1166 with 6 SATA slots. Plugging this into a Jetson Orin Nano Developer kit running from an SD card image, SATA drives are recognised fine once the operating system is running.

The Nano modules we purchase from your supplier do not come fitted with an SD card socket, and we do not wish to run the OS from an SD card anyway. The solution would be to boot from one of the drives attached to the SATA adapter.

Booting with no bootable media and the SATA drive with a single partition, we see that the hard drive is recognised by the UEFI Interactive shell:

As it recognises it here, does this mean it would be able to boot from it? That is appears here means that I do not have to add a driver to the kernel image?

To flash to our board using an SSD drive we have been using :

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c ./tools/kernel_flash/flash_l4t_nvme.xml --network usb0 --external-only --showlogs p3767_ondis nvme0n1p1

Is there a simple method of flashing and booting to this SATA drive?

Many thanks for any help.

Ben.

You should boot into kernel first from other media and see if your drive is really recognized in kernel first.

There is no simple method.

Thank you for your reply.

So the drive is recognised:

And it also appears as a boot option:

And the details of the PCIe device show in the EFI shell:

Please could you assistance in the steps that would be required to flash the SATA drive as boot drive so I can do some more research?

Many thanks,

Ben.

That SATA drive is recognized as sda1 on your device. Thus, actually the flash command is same as flashing a USB drive.

https://docs.nvidia.com/jetson/archives/r35.5.0/DeveloperGuide/IN/QuickStart.html

Thanks.

I ran this command as shown in the webpage you linked:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device sda1 -c ./tools/kernel_flash/flash_l4t_external.xml -p “-c bootloader/t186ref/cfg/flash_t234_qspi.xml” --network usb0 --showlogs p3767_ondis internal

And unfortunately I got this error message whilst flashing:

Many thanks,

Ben.

Please dump the uart console log during this flash failure.

Also, show us your dmesg after boot into kernel with that sda1 detected.

Thank you for your help.

I have switched to using a Nvidia Jetson Orin Nano 8GB as the test article, to remove any questions about hardware issues with our carrier board. Attaching the M.2 sata card as before results in the same behaviour.

I have attached the debug uart output from a failed flash attempt, as well as the dmesg file from a freshly written JetPack 5.1.1 SD image, which has the SATA drive listed as /dev/sda1

The debug uart at flash seems indicate the sata controller is being found and loaded:

[ 5.502361] tegra194-pcie 14160000.pcie: Link up
[ 5.503878] tegra194-pcie 14160000.pcie: PCI host bridge to bus 0004:00

But then later it it has:

Connection timeout: device /dev/sda is still not ready.

However I’m not sure whether this message is coming from the dev kit or is a response to a query from the flashing machine.

Many thanks,

Ben.
dmesg.txt (90.0 KB)
uart_out_failed_flash.txt (99.6 KB)

The possible cause of this issue is

  1. When you are booting into kernel, kernel has the driver to enable that PCIe- SATA adapter. lspci command in this case will tell what driver is in use.

  2. When doing initrd flash, as its name, it is booting into initrd to do flash work. Such driver from (1) could be missing in initrd so it can load pcie device but it does not have the device driver.

Hello.

Thank you for your assistance with this issue.

You identifying that the possible cause was in the initrd of the flashing process, led me to try to flash with flash.sh which I believe does not use initrd.

With JetPack 6 I used the command:

sudo ./nvsdkmanager_flash.sh --storage sda1

with the orin nano 8GB dev kit and it flashed and booted from the SATA drive fine.

I will work now to make the necessary changes to JetPack 6 to bring up our custom board and we have a solution.

Many thanks again for your assistance.

Ben.