Stuck at boot screen

Hi. My Jetson TX1 stuck at boot screen. I didn’t use it and i don’t know what other people have done and changed. It exactly stuck at this screen

How can i reach my system files (home directory)?

Is this the developer carrier board? Was this previously working? Has anything been updated or changed? Is this with an HDMI monitor, and does the video go away when it fails, or is it a case of the video also getting stuck?

Yes, original TX1 developer kit.

Someone who works on it made something but i don’t have chance to contact that person so i don’t know what he has done.

Yes, HDMI monitor and video doesn’t stuck i can see the cursor blinking at bottom of the screen.

I will suggest that since you don’t know what changed, then you should probably flash. If it ran an outdated version you’d probably want to upgrade anyway. I don’t know if you have something on the system you want to save, but you could clone before flashing and still have a copy of everything. It is likely that you won’t be able to proceed without flashing anyway.

For more information on cloning:
https://elinux.org/Jetson/Cloning

The most recent R21.7 release:
https://developer.nvidia.com/linux-tegra-r217

How can i run those commands if i can’t get to gui?

Flashing or cloning are done from host. Just connect your Jetson micro usb port to host and put your Jetson in recovery mode.
Then use the commands for reading Jetson flash memory and make an image on your host.
When you’ll be sure you have access to your old data (through a loop mount of the image on host), then you may reflash with a clean image.

FYI, JetPack is just a front end to the flash script and some packaging. Only the GUI requires JetPack on the host. If you flash or clone all you need is the micro-B USB…you can even ignore ethernet.

Content you need to download for flashing only is the driver package plus sample rootfs. For clone you don’t even need the sample rootfs.

Here’s an excerpt from another post (you should use R28.2 instead of R28.1…the previous post names R28.1 files):

  1. Download the driver package (be sure to get the TX1 version, not the TX2 version) plus sample rootfs. Most recent R28.1 is at: https://developer.nvidia.com/embedded/linux-tegra
  2. Unpack the driver package (creates a "Linux_for_Tegra" subdirectory). Within this is subdirectory "rootfs"::
    tar xjvf Tegra210_Linux_R28.1.0_aarch64.tbz2
    
  3. cd into rootfs subdirectory, use sudo to unpack the sample rootfs:
    sudo tar xjvf /wherever/it/is/Tegra210_Linux_R28.1.0_aarch64.tbz2
    
  4. cd back up one directory to the "Linux_for_Tegra" directory ("cd ..").
  5. Use sudo to apply_binaries.sh:
    sudo ./apply_binaries.sh
    
  6. Verify you still have enough disk space of type ext4, perhaps 25GB:
    df -H -T .
    
  7. Put the Jetson in recovery mode (hold the recovery button while powering on the Jetson or hitting reset for an already on Jetson, connect the micro-B USB cable to host). Verify host can see the Jetson...see output from this lsusb command:
    lsusb -d 0955:7721
    
  8. Flash with sudo:
    sudo ./flash.sh -S 14580MiB jetson-tx1 mmcblk0p1
    

Sorry for the late reply. Can you give little instruction about clonning too? That’s what i need to do first.

On the other hand, i don’t have a jetpack installation on my host for the TX1. Should i install it?

Although this URL is specific to the TK1 (and thus actual command will differ versus TX1), this has some concepts which are uniform across all of the current Jetsons:
https://elinux.org/Jetson/Cloning

When a Jetson is in recovery mode nothing actually happens to the Jetson. However, the micro-OTG connector, if used with a micro-B cable (which is provided in the dev kits) will be seen by a host PC computer as a custom USB device. In the software downloads to any particular device release (and in this case R28.2) you will find a “driver” package. This is the core to all flash, clone, and update operations, and is the driver which understands this custom USB device. The driver package enables many operations, e.g., reading eMMC or writing eMMC. JetPack does nothing more than send commands to the driver package. So you need to download the driver package.
https://developer.nvidia.com/embedded/linux-tegra

If you were flashing, then you’d need data for the driver package to flash…this is the sample rootfs after apply_binaries.sh is used (apply_binaries.sh should be run with sudo and is part of the driver package). You could, as an option, flash using a pre-existing clone (however, do not do this if the clone is from a different version of L4T…don’t restore an R28.1 clone into an R28.2 system).

The driver package can clone by reading partitions as binary data. Because the rootfs partition is mmcblk0p1, then copying mmcblk0p1 would be a clone of your file system.

Do not do two operations in a row for a Jetson in recovery mode, e.g., you can’t clone twice, you can’t clone and then flash. You need to reset recovery mode between each operation.

You do not need JetPack to clone or flash. This is a convenience. You only need JetPack when you are adding extra packages. After JetPack flashes a Jetson the Jetson will reboot and then ethernet will be used for that packaging on the freshly flashed Jetson. You could just run JetPack later after a manual flash by unchecking flash within JetPack. You’d have manually enter the IP address and any password as prompted for by JetPack (the automatic IP address detect only works after a fresh JetPack flash).

The driver package creates subdirectory “Linux_for_Tegra/”. If you were to do a fresh command line flash you’d use “sudo” to unpack the sample rootfs in “Linux_for_Tegra/rootfs/”. Then you’d run “sudo ./apply_binaries.sh” from “Linux_for_Tegra/” to get the NVIDIA drivers put into the rootfs directory (the sample rootfs is purely Ubuntu…the binaries are drivers understanding the specific hardware). With this in place you can flash normally:

# Put Jetson in recovery mode, connect micro-B USB.
# Verify on the host that the Jetson is seen:
lsusb -d 0955:7721
sudo ./flash.sh -S 14580MiB jetson-tx1 mmcblk0p1

To instead clone the rootfs without altering the Jetson itself you would do this (be sure you have a LOT of disk space…this will take time since it is creating a file the size of the entire Jetson root file system):

# Put Jetson in recovery mode, connect micro-B USB.
# Verify on the host that the Jetson is seen:
lsusb -d 0955:7721
sudo ./flash.sh -r -k APP -G backup.img jetson-tx1 mmcblk0p1

Beware that cloning command syntax can change depending on which driver package release you use. This example is for R28.2.

You do not need JetPack to clone, flash, or restore. You can use JetPack to do this…which in turn will download what is needed and do essentially what the above says to do manually. If you are to install extra packages, then you do need JetPack.

In the flash case “-r” is not used…a rootfs will be generated. In the latter case the “-G” says it is cloning, and there is no purpose in generating a rootfs, so “-r” is used. When clone completes you will have files “backup.img” and “backup.img.raw”. There isn’t anything you can do with the smaller “backup.img” other than flash with it by renaming it “system.img” and copying it to “bootloader/system.img”. You could also copy the larger “system.img.raw” to “bootloader/system.img” and this file would flash exactly the same as the non-raw file…but it would take a lot longer. flash.sh does not care if the file is the smaller sparse image type or the uncompressed raw image, and other than time required to flash, the two have the same end result. Sparse files are written in stone and immutable to any tools I know of…raw files can do anything a real file system can do.

It is in fact this raw clone file which is the one you will have use for because it can be loopback mounted on your host, explored, edited, repaired, used for historic reference, so on. This can also be used for a slower flash as a backup for failed systems. There is a utility which would let you convert this to a “sparse” file as well (this is what “backup.img” is…a sparse file…sort of like compressing). I throw away my “backup.img” and keep only the “backup.img.raw”. When I’m done I use “bzip2 -9” on my raw file to compress it.

To view the content of the clone raw file:
sudo mount -o loop backup.img.raw /mnt

cd /mnt
ls
# Explore a perfect duplicate of the Jetson.
# Optionally edit.
cd <somewhere not under "/mnt">
sudo umount /mnt

I will emphasize that you should not restore a cloned rootfs onto a Jetson which had a different release. If you are going to restore from a clone simply place a copy of your clone as file name “system.img” in “Linux_for_Tegra/bootloader/system.img”, and then flash:

sudo ./flash.sh <b>-r</b> jetson-tx1 mmcblk0p1