Getting started with the Nvidia Jetson Platform

Make sure you have at least 15 GB of free space on your Linux machine. This file copying process takes approximately one hour. The flashing process ends with 'Reset the board to boot from internal eMMC.'

NVIDIA Jetson TX2 Getting Started

  NVIDIA Jetson TX2 Specification
CPU Cortex A57
GPU Pascal GPU with 256 CUDA cores
RAM 8 Gbyte
Host Adaptor System xhci-hcd
Operating System Ubuntu 16.04 Linux tegra-ubuntu 4.4.38-tegra
Software Spinnaker 1.5.0.27 Linux ARM64
Camera and Firmware GS3-U3-23S6M (firmware 2.25.3.0)
BFS-U3-51S5C (firmware 1704.0.13.0)
  1. Follow NVIDIA’s Quick Start Guide file to install the latest 64-bit Linux 4 Tegra release package.64-bit Linux for Tegra R28.1 was used for this application note.
    Note: This step overwrites your existing file system.
  2. Install 64-bit Spinnaker ARM by following the readme file for installation instructions. Spinnaker 1.5.0.27 SDK - ARM64 - Ubuntu 16.04 (64-bit) — 08/22/2017 was used for this application note.

The steps above allow you to stream your USB3 camera at a maximum image size of 2 MB. To acquire images greater than 2 MB in resolution, add the following to the APPEND line:

usbcore.usbfs_memory_mb=1000

to this file:

/boot/extlinux/extlinux.conf

Benchmarks for the NVIDIA Jetson TX2

These are the results from a console application that continuously captures images using GS3-U3-23S6M and BFS-U3-51S5C-C. The resulting benchmark using the console application is shown below. The resulting benchmark using the console application is shown below. In our console application, we enabled maximum packet size supported on the Gigabit host controller, which is 9000 bytes.

GS3-U3-23S6M
  Requested
Frame
Rate
Processed
Frame
Rate
CPU
Usage
Bandwidth

1920 x 1200 Raw8

163 FPS

163 FPS

~45%

358 MB/s

BFS-U3-51S5C
  Requested
Frame
Rate
Processed
Frame
Rate
CPU
Usage
Bandwidth

2448 x 2048 BayerRG8

75 FPS

75 FPS

~50%

358 MB/s

  1. Follow NVIDIA’s readme file and boot up the pre-installed Ubuntu 14.04 on TK1.
  2. By default, Jetson TK1 does not provide support for USB3 cameras. To enable USB3 support:
    • Go to https://developer.nvidia.com/linux-tegra-rel-19 and download both of these tar-balls:
      • Driver Package: Jetson TK1
      • Sample file system
    • On the Linux PC, unzip the tar files by running the command:
      export RELEASE_NAME=Tegra124_Linux_R19.3.0_armhf.tbz2
      sudo tar xpf ${RELEASE_NAME}
      cd Linux_for_Tegra/rootfs/
      sudo tar xpf ../../Tegra_Linux_Sample-Root-Filesystem_R19.3.0_armhf.tbz2
      cd ../
      Note: It’s important to use sudo to extract these files.
    • In the extracted Linux_for_Tegra folder, edit the jetson-tk1.conf file by uncomment the line (ODMDATA=0x6209C000) for USB2 and comment in the line for USB3 (ODMDATA=0x6009C000).
    • Enter sudo ./apply_binaries.sh
    • Connect the TK1 to the Linux machine using the micro-USB cable that comes with the TK1.
    • On the TK1, hold down the Recovery button and press the Reset button once. Wait two seconds and release the Recovery button.
    • Verify that the TK1 is connected to the Linux PC by issuing the lsusb command on the Linux PC and look for a connected usb device called NVIDIA Corp.
    • Copy the Linux_for_Tegra folder unzipped in step 2 to your Linux machine.
    • In the Linux machine, enter sudo ./flash.sh -S 14GiB jetson-tk1 mmcblk0p1
  3. Reboot TK1 by pressing the Reset button.
    The steps above will allow you to stream your USB3 camera at a maximum image size of 2 MB. To acquire images greater than 2 MB in resolution, add the following to the APPEND line:
    usbcore.usbfs_memory_mb=1000
    to this file:
    /boot/extlinux/extlinux.conf

NVIDIA Jetson TX1 Getting Started

  NVIDIA Jetson TX1 Specification
CPU Cortex A57
GPU Maxwell GPU with 256 CUDA cores
RAM 4 Gbyte
Host Adaptor System xhci-hcd
Operating System Ubuntu 16.04 Linux tegra-ubuntu 3.10.96-tegra
Software Spinnaker 1.5.0.37 Linux ARM64
Camera and Firmware GS3-U3-23S6M (firmware 2.25.3.0)
BFS-U3-51S5C (firmware 1704.0.13.0)
  1. Follow NVIDIA’s Quick Start Guide file to install the latest 64-bit LT4 release package. L4T release package ->Tegra X1->Jetson TX1 R24.2.1 - September 2016 was used for this application note.
    Note: This step overwrites your existing file system.
  2. Install 64-bit Spinnaker ARM by following the readme file for installation instructions. Spinnaker 1.5.0.27 SDK - ARM64 - Ubuntu 16.04 (64-bit) — 08/22/2017 was used for this application note.
  3. Install the g++ compiler in order to install the Spinnaker SDK’s C++ samples:
    sudo apt-get update
    sudo apt-get install build-essential

The steps above allow you to stream your USB3 camera at a maximum image size of 2 MB. To acquire images greater than 2 MB in resolution, add the following to the APPEND line:

usbcore.usbfs_memory_mb=1000

to this file:

/boot/extlinux/extlinux.conf

Benchmarks for NVIDIA Jetson TX1

These are the results from a console application that continuously captures images using GS3-U3-23S6M and BFS-U3-51S5C-C. The resulting benchmark using the console application is shown below.

The resulting benchmark using the console application is shown below. In our console application, we enabled maximum packet size supported on the Gigabit host controller, which is 9000 bytes.

 

GS3-U3-23S6M
  Requested
Frame
Rate
Processed
Frame
Rate
CPU
Usage
Bandwidth

1280 x 960 Raw8

202 FPS

202 FPS

~32%

236 MB/s

1920 x 1200 Raw8

163 FPS

155 FPS

~30%

340MB/s

BFS-U3-51S5C
  Requested
Frame
Rate
Processed
Frame
Rate
CPU
Usage
Bandwidth

2448 x 2048 BayerRG8

75 FPS

75 FPS

~37%

358 MB/s

The following tables benchmark the performance of running selected USB3 or GigE cameras on the following boards: ODROID-XU; Samsung Exynos 5250 Arndale, and NVIDIA Jetson TK1 sand TX1, and TX2. 

Troubleshooting

Image Transfer Fails to Start when Image Size is Bigger than 2 MB

Cause: The USBFS buffer size is too small (16 MB by default). Use the following command to check usbfs_memory_mb size.

cat /sys/module/usbcore/parameters/usbfs_memory_mb

Solution: Increase the memory by adding the following to the APPEND line:

usbcore.usbfs_memory_mb=1000
to this file:
/boot/extlinux/extlinux.conf

If this method fails to set the memory limit, run the following command:
sudo sh -c 'echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb'

Camera is Detected but Cannot Stream

Cause: The USB3 bus power provided by the ARM board is not sufficient to power the camera.

Solution: Power the USB3 camera using a GPIO cable.

GigE Camera Frame Rates are extremely low on Jetson TK1, TX1, or TX2 board

Cause: The socket buffer size by default is too low.

Solution: Increase socket buffer size by typing in the following in Terminal:

sudo sysctl –w net.core.rmem_max=33554432
sudo sysctl –w net.core.wmem_max=33554432
sudo sysctl –w net.core.rmem_default=33554432
sudo sysctl –w net.core.wmem_default=33554432