Jp5.0.2 Xavier NX boot from SATA

FYI, I doubt 10GiB is big enough for any Jetson. Some random tips:

  • To see the size of the entire sda:
    sudo blockdev --getsize64 /dev/sda
  • To see the size of sda1, as the “flash -S <size>” option sees it:
    sudo blockdev --getsize64 /dev/sda1
  • On Xavier or older, use a size evenly divisible by either “1024*1024” (“MiB”), or “1024*1024*1024” (“GiB”).

according to the log, it seems sata is not able to get enumerated when boot to initrd. Thus, not able to flash.

Hi linuxdev

I connect the sata to host

Here’s the result

For reference, the partition sdb1 is 1000203091968 bytes.

  • 1000203091968 / (1024*1024) = 953868 MiB
  • 1000203091968 / (1024*1024*1024) GiB won’t work since it is not evenly divisible by 1024 (931.51171875 GiB…note the floating point).

So this works: "-S 953868MiB (assumes it is a rootfs partition…odd sizes work ok if not used for rootfs).

Hi WaneyWWW

I have tried on Jp4.6.2 with the same configuration(SOM, board, 1T sata storage, host, xml)

-s Size set to 22GiB

Here’s the log and command
flash_1-6_0_20221123-124646.log (74.2 KB)

sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device sda1 -c ./tools/kernel_flash/flash_l4t_external.xml -S 22GiB --massflash 10 --showlogs jetson-xavier-nx-devkit-emmc sda1

And I’am trying again on J5.0.2 with these configuration

Hi,

The key problem here is not what flash tool you are using. It is just simple that your device is not able to get enumerated in initrd in jp5.0.2 anymore.

Try to compare the uart log between these two and see if that is the cause.

It is case-sensitive. Lower case “-s” won’t work. Use upper case.

Attach is the log of j4.6.2 during flashing
flash_uart_log_4.6.2.txt (182.0 KB)

Compare to 4.6.2, the sata device(sda) seems can’t mount during flashing on j5.0.2

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

Why j4.6.2 can mount while initrd, and j5.0.2 can not?

Is there any dts or method can mount the external while initrd?

Sorry for the typo, I used the upper case

It looks like pcie in initrd is not able to detect the drive.

Could you try to boot up with nvme and share the result of lspci -vvv + dmesg?

Here’re logs boot from nvme and connect with sata ssd
lspci_log_sata.txt (7.4 KB)
dmesg_sata.txt (79.9 KB)

Here’re logs boot from nvme and disconnect sata ssd
lspci_log.txt (7.4 KB)
dmesg.txt (82.2 KB)

Hi,

I want to say this again. I need result of “sudo lspci -vvv”.

Also, do you have to use this kind of SATA drive for production or it is okay to test another kind?

Hi,

Also want to ask, is your test still on Xavier NX devkit or it is on your custom board?

Hi,

The test is on our custom board

Is it possible to test this on NX devkit or AGX Xavier devkit?

NX devkit and AGX Xavier devkit has no SATA port

Yes, I know. Your SATA is also not a SATA devcie to jetson. Your design has a SATA to PCIe converter.

My point is if you can use same converter on NX/AGX devkit to test.

No, that is impracticable

I will check again the circuit and compare to nvme, because boot from nvme is work now

Hi,

Below is my summary of this issue so far. Could you confirm?

  1. Jetpack4.6.x can flash this SATA without problem.

  2. In jetpack5.0.2, when booting to emmc, you can see your SATA driver under /dev/

  3. In jetpack5.0.2, when you tried initrd flash to flash this SATA, it failed because initrd cannot enumerate SATA drive.

Yes, they are