NVIDIA Tegra Jetson Nano

Board description

NVIDIA Jetson Nano developer kit hardware booting from SD-card:

URL: https://developer.nvidia.com/embedded/jetson-nano-developer-kit
Wiki: https://elinux.org/Jetson_Nano

Test results

The Yocto Project releases in the table below have been tested by the Mender community. Please update it if you have tested this integration on other Yocto Project releases:

Yocto Project Build Runtime
warrior (2.7) :test_works: :test_works:

Build Means that the Yocto Project build using this Mender integration completes without errors and outputs images.
Runtime Means that Mender has been verified to work on the board. For U-Boot-based boards, the integration checklist has been verified.

Getting started

Prerequisites

  • A supported Linux distribution and dependencies installed on your workstation/laptop as described in the Yocto Mega Manual
    • NOTE. Instructions depend on which Yocto version you intend to use.
  • Google repo tool installed and in your PATH .

Setup Yocto environment

Set the Yocto Project branch you are building for:

# set to your branch, make sure it is supported (see table above)
export BRANCH="warrior" 

Create a directory for your mender-tegra setup to live in and clone the
meta information.

mkdir mender-tegra && cd mender-tegra

Initialize repo manifest:

repo init -u https://github.com/mendersoftware/meta-mender-community \
           -m meta-mender-tegra/scripts/manifest-tegra.xml \
           -b ${BRANCH}

Fetch layers in manifest:

repo sync

Setup build environment

Initialize the build environment:

source setup-environment tegra

Building the image

You can now proceed with building an image:

MACHINE=jetson-nano bitbake core-image-base

Replace core-image-base with your desired image target here and in the sections below.

Using the build output

After a successful build, the images and build artifacts are placed in tmp/deploy/images/jetson-nano.

The sd-card image package for Jetson Nano has a name like core-image-base-jetson-nano.sdcard. This file can be used to initially provision the sd-card using dd (replace /dev/sdc with the location of your sd-card):

sudo dd bs=4M status=progress if=tmp/deploy/images/jetson-nano/core-image-base-jetson-nano.sdcard of=/dev/sdc conv=fsync

On the other hand, if you already have Mender running on your device and want to deploy a rootfs update using this build, you should use the Mender Artifact files, which have .mender suffix. You can either deploy this Artifact in managed mode with the Mender server (upload it under Releases in the server UI) or by using the Mender client only in Standalone deployments.

See additional notes below about standalone updates on warrior and later branches.

References

  • meta-tegra: The base BSP layer with support for NVIDIA tegra. See completed pull request here for modifications to support Mender.
  • meta-mender-tegra layer in meta-mender-community: Customization for mender on tegra, including u-boot and partitioning. See completed pull request here for initial modifications to support NVIDIA Jetson-tx2 (pull request for Jetson-Nano here).
  • The official Mender documentation explains how Mender works. This is simply a board-specific complement to the official documentation.

Standalone Updates and Bootloader Components

Updates of bootloader components as referenced on the TX2 mender hub page are not supported yet on Jetson-Nano, due to the lack of support from Nvidia for redundant boot on this platform. Nvidia may add support in the future. This means standalone updates do not use the mender-install-manual script as done on TX2 but use standard mender -install. It also means mender upgrades across meta-tegra yocto branches are unlikely to work properly, given possible dependencies between boot components and root filesystem components.

Known issues

  1. The Jetson-Nano production module is not supported.

If this post was useful to you, please press like, or leave a thank you note to the contributor who put valuable time into this and made it available to you. It will be much appreciated!

3 Likes

Hey,
hopefully i did not miss a point here, but these instruction seem not to be working for me.

When i try to build the jetson-nano image with MACHINE=jetson-nano bitbake core-image-base parsing the recipe fails.

NOTE: Your conf/bblayers.conf has been automatically updated.
Parsing recipes: 100% |####| Time: 0:00:58
Parsing of 907 .bb files complete (0 cached, 907 parsed). 1437 targets, 91 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing PROVIDES 'u-boot-bup-payload'
u-boot-bup-payload was skipped: incompatible with machine jetson-nano (not in COMPATIBLE_MACHINE)
NOTE: Runtime target 'mender-tegra-bup-payload-install' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['mender-tegra-bup-payload-install', 'u-boot-bup-payload']
ERROR: Required build target 'core-image-base' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-base', 'u-boot', 'mender-tegra-bup-payload-install', 'u-boot-bup-payload']
Summary: There were 2 ERROR messages shown, returning a non-zero exit code.

I know that this is quite a new wiki entry and related to the Pull request, but even working with feature/jetson-nano branch did not help. It feels like i missed something, eventhough i am not sure what :confused:.
Would be cool, if you can point me in a direction that might be helpful

@Langhalsdino sorry I just noticed this post.

Can you please confirm you have the latest in the PR here and especially this change:
RDEPENDS_${PN}_tegra186 += "mender-tegra-bup-payload-install"

You could also try out the latest zeus support at this PR, you’ll need to use the zeus mender branch here. This is working for me on nano after testing it today.

Thank you for the good information regarding Yocto. I have a question during the image creation to install Yocto on nVidia Nano Devkit.

With the above, core-image-base is working, but core-image-weston and core-image-minimal are not working as follows,

[5.xxxxx] EXT4-fs (mmcblk0p1) : bad geometry: block count 1074176 exceeds size of device (1048576 blocks) mount: mounting /dev/mmcblk0p1 on /mnt failed: Invalid argument

There could be some problems on sdcard partitioning for image of core-image-weston and core-image-minimal.
Do you have any idea on this problem?
Thanks!

from,
BG

Hi @bg.kim,

There was a similar question here, NVIDIA Tegra Jetson TX2 which might help you move forward. There was a bug in the integration but the fix has been merged on the warrior branch in meta-mender-community

1 Like

2 posts were split to a new topic: NVIDIA Tegra Jetson Nano - Debian support?