Introduction
Jetson Modules and Developer Kits
Software for Jetson Modules and Developer Kits
Devices Supported By This Development Guide
How Development Guide Topics Identify Devices
Quick Start Guide
Types and Models of Jetson Devices
Preparing a Jetson Development Kit for Use
L4T Over-the-Air (OTA) Updates
Architecture
Package Manifest
Jetson Nano and Jetson TX1 Package Manifest
Bootloader
Kernel
Kernel Supplements TBZ2
Kernel Headers TBZ2
NV Tegra
Nvgstapps TBZ2
Config TBZ2
Graphics Demos
NVIDIA Drivers TBZ2
NVIDIA Tools TBZ2
Weston TBZ2
Jetson AGX Xavier and TX2 Series Package Manifest
Bootloader
Kernel
Kernel Supplements TBZ2
Kernel Headers TBZ2
NV Tegra
Nvgstapps TBZ2
Config TBZ2
Graphics Demos
NVIDIA Drivers TBZ2
NVIDIA Tools TBZ2
Weston TBZ2
Software Features
Jetson Nano Software Features
Bootloaders
Toolchain
System
Kernel
I/O
CUDA
Graphics
EGL and OpenGL ES Support
Video Decoders
Video Encoders
Display Outputs
Conversion, Scaling, Cropping, and Rotation Formats
CSI and USB Camera Features
Audio
Low Memory Warning Feature
Jetson AGX Xavier Software Features
Bootloader
Toolchain
Kernel
Debug Interface
Camera Interface
LSIO
HDMI
DP
PCIE
SDMMC
SATA
SATA-Marvel (over PCIe)
UFS
Security Engine
USB 3.0
EQOS
Power Modes (Profiles)
RTC
Watchdog
System
CUDA
Graphics
EGL Details
GL and Vulkan Details
Multimedia
Video Decoders
Video Encoders
Display Outputs
Conversion, Scaling, Cropping, and Rotation Formats
CSI and USB Camera Features
BPMP I2C Master
SPE-UART
SPE DMA
I2C Slave
CAN
Audio
Jetson TX2 Series Software Features
Bootloaders
Toolchain
Kernel
Debug Interface
Camera Interface
Kernel I/O Interfaces
Max-Q and Max-P
RTC
Watchdog
GPIO
System
CUDA
Graphics
EGL and OpenGL ES Support
Video Decoders
Video Encoders
Display Outputs
Conversion, Scaling, Cropping, and Rotation Formats
CSI and USB Camera Features
Audio
Jetson TX1 Software Features
Boot Loaders
Toolchain
Kernel
Debug Interface
Kernel I/O Interfaces
CUDA
Graphics
EGL and OpenGL ES Support
Video Decoders
Video Encoders
Display Outputs
Conversion, Scaling, and Rotation Formats
CSI and USB Camera Formats
Jetson Module Support
Jetson Nano
Jetson TX2 Series
Jetson TX2i Flashing Support
Jetson TX2i Power-On
Jetson TX2i Module-Specific Features
Operating Profiles
Feature Support for Error Correction Code
Compatibility Issues
Setting Up Your File System
Sample Root File System
Setting Up the Root File System
Step 1: Set Up the Root File System
Step 2: Copy the rootfs to the Device
Hardware Setup
Jetson Developer Kit Module Setup
Jetson Nano
Carrier Board Preparation
Platform Board Layout
Jetson AGX Xavier
Carrier Board Preparation
Platform Board Layout
Jetson TX2 Series Devices
Carrier Board Preparation
Platform Board Layout
Enabling Bluetooth Audio
Jetson TX1
Carrier Board Preparation
Platform Board Layout
Voltage and Current Monitor
Jetson Nano
Configuring the Voltage and Current Monitor
Jetson AGX Xavier
Configuring the Voltage and Current Monitor
Jetson TX2
Configuring the Voltage and Current Monitor
Jetson TX1
Configuring the Voltage and Current Monitor
ASoC Driver for Jetson Products
ALSA
DAPM
Device Tree
Audio Driver
Audio Hub
Software Architecture
Platform Driver
ADMAIF
Codec Driver
XBAR
AMX
ADX
I2S
Mixer
SFC
ASRC
SPDIF
DMIC
MVC
OPE
DSPK
Machine Driver
Dynamic Audio Routing
Codec Driver Instantiation Using Device Tree
Clocking and Power Management
Audio Playback/Capture Examples
Troubleshooting
Examples
ADMAIF
I2S
DMIC
ADX
AMX
Jetson Module EEPROM Layout
Configuration of Vendor-Specified MAC Addresses
Value of the CRC-8 Byte
BSP Customization
Boot Options
CBoot Boot Options
Node Properties
Examples
Rebuilding the DTB
Linux Host System Prerequisites
Setting Up a TFTP Server on the Host System
Extracting Tegra Linux Driver Package
Login Credentials
Installing Additional Packages
Configuring NFS Root on the Linux Host
Determining Version and Platform Information
Flashing and Booting the Target Device
Before You Begin
Before You Begin
Flash Script Usage
Flashing to a Flash Drive
Flashing a Specific Partition
Increasing Internal Memory Partition for Root File System
Determining the Success of a Driver Update
Reconfiguring a Jetson Device with oem-config
About Communication Through the Debugging Port
Headless Mode Flow in oem-config
Bootloader
Boot Flow
Jetson Nano Boot Flow
BootROM
Bootloader Components
TegraBoot
TegraBoot CPU
CBoot
U-Boot
Jetson AGX Xavier Boot Flow
BootROM
Bootloader Components
TegraBoot
CBoot
Jetson TX2 Boot Flow
BootROM
Bootloader Components
TegraBoot
C-Boot
U-Boot
Jetson TX1 Boot Flow
BootROM
Bootloader Components
TegraBoot
TegraBoot CPU
CBoot
U-Boot
Partition Configuration
Families of Platforms
Partition Configuration File
Root Element
Device Element
Partition Element
Default Partition Overview
Jetson AGX Xavier and Jetson TX2 Series
Jetson Nano (SKU 0000)
U-Boot Customization
Requirements
Placeholders in Commands
Downloading and Building U-Boot
Prerequisite
Before Flashing
Flashing U-Boot Full L4T Image
Flashing U-Boot Only
Changing the Boot Memory Device Partition Layout
eMMC IC Property
Root Filesystem Size
GPT Partitions
LNX Partition
APP Partition
Full Boot Memory Device Partition Layout
Building the Device Tree Compiler
Replacing the Kernel
Copying the Root Filesystem
Boot Sequence and Sysboot Configuration Files
Optimizing U-Boot Boot Time
Disabling PCIe Support
Enabling/Disabling ASPM Support
Disabling USB Support
Environment Configuration
Setting Environment Variables
Compile Time
Manufacturing and Flashing Time
extlinux.conf Modifications
Debugging in the U-Boot Environment
Bootloader Update and Redundancy
A/B Slot Layout
A/B System Update
Partition Selection
Update Engine
Bootloader Implementation
Partition Settings
Update Engine States
When the Update Engine is Launched
Enabling A/B Redundancy
Bootloader Tools
Boot Control
Bootloader Update Payload Generator
SMD Image Generator
Running the Update Engine
Update Engine State Machine
Manually Modifying Boot Slots
Sample Boot Log
Generating the Bootloader Payload Update (BUP)
MB1 Platform Configuration
Jetson AGX Xavier MB1 Platform Configuration
About MB1 BCT
Pinmux and GPIO Configuration
Common Prod Configuration
Controller Prod Configuration
Pad Voltage Configuration
PMIC Configuration
Security Configuration
GPIO Interrupt Mapping Configuration
Storage Device Configuration
UPHY Lane Configuration
OEM-FW Ratchet Configuration
BootROM Reset PMIC Configuration
Miscellaneous Configurations
Jetson TX2 MB1 Platform Configuration
About MB1 BCT
Jetson TX2 Pinmux and GPIO Configuration
Jetson TX2 Prod Configuration
Jetson TX2 Pad Voltage Configuration
Jetson TX2 PMIC Configuration
Configuring Generic Rails
Configuring Security Configuration Registers
Miscellaneous Configurations
PMIC
BootROM
Flashing
Security
Secureboot
Fuses and Security
Overall Fusing and Signing Binaries
Installing the L4T Secureboot Package
Generating the RSA Key Pair
Preparing the SBK Key
Preparing the DK(KEK)/ODM Fuses
Burning PKC [DK(KEK), SBK] Fuses
odmfuse.sh Extra Options
Signing and Flashing Boot Files
Accessing the Fuse from the Target
Example: Burning the Fuse in a Factory Environment
Building the Fuse in a Trusted Environment
Burning the Fuse Blob in a Factory Environment
Example: Flashing Signed Images in a Factory Environment
Trusty, a Trusted Execution Environment
Architecture
Execution Steps
Trusted Application Development
Default Trusted Applications
Manifests for Trusted Applications
Accessing MMIO Regions
How to Implement a New Trusted Application
How to Communicate with Other Applications
Trusty API Reference
Encrypted Keyblob
Encrypted Keyblob Overview
Encrypted Keyblob Format
EKB Binary Size Restrictions
EKB Decryption
SE Keyslot Clearing
SE Usage
Design Considerations
Kernel Customization
Obtaining the Kernel Sources with Git
Manually Downloading and Expanding Kernel Sources
Building the NVIDIA Kernel
Preparing to Build External Kernel Modules
Building External Kernel Modules
How To Enable PMIC-WDT
Kernel Boot Time Optimization
Device Tree Nodes
Real-time Clock
Environment Configuration
Disable Console over UART
Secondary Bootloader
Compile-Time Configuration
Asynchronous Probe
File System
Sound
Modularize Kernel Driver
Disable Debugging
Display Configuration and Bringup
Setting HDMI or DP Screen Resolution
Mirroring or Extending Displays
Hard-coding Kernel Display Boot Mode for HDMI
Guidelines
nvimp_util: A Tool for Calculating Memory Bandwidth for a Particular Display Configuration (IMP)
Command line switches
Multi-Head/Multi-Window Input Configurations
Output Values
Device Tree Configuration
Seamless Display on DP (over USB-C)
The L4T Toolchain
Toolchain Information
Downloading the Toolchain
Extracting the Toolchain
Setting the CROSS_COMPILE Environment Variable
Camera Development
Camera Software Development Solution
Camera Architecture Stack
Camera API Matrix
Approaches for Validating and Testing the V4L2 Driver
Applications Using libargus Low-Level APIs
Applications Using GStreamer with the nvarguscamerasrc Plugin
Applications Using GStreamer with V4L2 Source Plugin
Applications Using V4L2 IOCTL Directly
ISP Support
Infinite Timeout Support
Symlinks Changed by Mesa Installation
Other References
Sensor Software Driver Programming Guide
Camera Core Library Interface
Direct V4L2 Interface
Camera Modules and the Device Tree
Individual Imaging Device
Device Properties
Property-Value Pairs
Property-Value Pairs (Version 2.0 Only)
Example Piece-wise Linear Compression Function
Example Digital Overlap WDR Exposure Frame (3840×2160)
Port Binding
To verify the port binding result
Sensor Pixel Clock
SerDes Pixel Clock
Port Index
V4L2 Kernel Driver (Version 1.0)
Macro Definitions
Sensor-Private Data
Configuring Regmap
Configuring Controls
Setting Up Control Registers
Read-Write Wrapper in the Register
Power Functions
Setting Up the V4L2 Subdevice and Camera Common
Control Handlers
Boot-Time Initialization
Removing Sensor Drivers
V4L2 Kernel Driver (Version 2.0)
Macro Definitions
Sensor-Private Data
Regmap
Sensor Controls
Control Handlers
How Controls Are Implemented
Setting Up Registers for the Control Handler
Read-Write Wrapper in the Register
Power Functions
Stream Functions
Miscellaneous Functions
Control Operations
Boot-Time Initialization
Removing Sensor Drivers
Kernel Configuration
Device Registration
Using Plugin Manager
Using the Main Platform Device Tree File
Verifying the V4L2 Sensor Driver
Debugging Tips
Mode Tables
Camera Sensor Drivers Porting Guide
Changes for the V4L2 API
Changes to Device Tree Properties
Porting version 1.0 drivers to version 2.0
Multimedia
Multimedia API
GStreamer-based Multimedia Playback
Installing GStreamer
Using NvGstPlayer
GStreamer API
GStreamer-based Camera Capture
Clock Frequency and Power Management
Clocks
Overriding Default Clock Rates
Configuring GPU Clocks
Configuring Clocks
Power Management for Jetson Nano and Jetson TX1 Devices
Interacting Features
Kernel Space Power Saving Features
Chipset Power States
Clock and Voltage Management
Regulator Framework
CPU Power Management
Frequency Management with cpufreq
Idle Management with cpuidle
Memory Power Management
EMC Frequency Scaling Policy
Supported Modes and Power Efficiency
Thermal Management
Linux Thermal Framework
Thermal Zone
Thermal Management in Linux
Thermal Sensors
Thermal Cooling
Thermal Specifications
Software-Based Power Consumption Modeling
Power Monitor Information
Carrier Board Information (Jetson TX1 only)
Examples
Under Voltage and Over Current Protection
Related Tools and Techniques
GPU 3D Frequency Scaling
Getting and Setting Frequencies
Maximizing Jetson Nano or Jetson TX1 Performance
Using CPU Hotplugging
nvpmodel GUI
Power Management for Jetson AGX Xavier Devices
Interacting Features
Kernel Space Power Saving Features
Chipset Power States
Clock and Voltage Management
Regulator Framework
CPU Power Management
Idle Management with cpuidle
Memory Power Management
EMC Frequency Scaling Policy
Supported Modes and Power Efficiency
Fan Mode Control
Fan Mode Configuration
Default Fan Mode
Thermal Management
Linux Thermal Framework
Thermal Zone
Thermal Management in Linux
Thermal Sensors
Thermal Cooling
Thermal Management in BPMP
Thermal Sensing
SOC_THERM
AOTAG
BPMP Thermal Framework
Hardware Throttling
Hardware Thermal Shutdown
Thermal Specifications
Software-Based Power Consumption Modeling
Related Tools and Techniques
CPU Hot Plug
CPU Frequency Scaling
GPU 3D Frequency Scaling
Getting and Setting Frequencies
Maximizing Jetson AGX Xavier Performance
Fan Speed Control
nvpmodel GUI
Power Management for Jetson TX2 Series Devices
Interacting Features
Kernel Space Power Saving Features
Chipset Power States
Clock and Voltage Management
CPU Power Management
Idle Management with cpuidle
Memory Power Management
EMC Frequency Scaling Policy
Supported Modes and Power Efficiency
Thermal Management
Linux Thermal Framework
Thermal Zone
Configuring a Thermal Zone Using the Device Tree
Thermal Management in Linux
Thermal Sensors
Thermal Cooling
Thermal Management in BPMP
Thermal Sensing
SOC_THERM
AOTAG
BPMP Thermal Framework
Hardware Throttling
Thermal Specifications
Software-Based Power Consumption Modeling
Related Tools and Techniques
CPU Hot Plug
CPU Frequency Scaling
GPU 3D Frequency Scaling
Getting and Setting Frequencies
Maximizing Jetson TX2 Performance
nvpmodel GUI
Fan Speed Control
Applications and Tools
Design for Debugging
DFD Improvements
CoreSight Trace Sinks ETF and ETR
CoreSight AMBA Trace ID (ATID) Mapping
Debugging with Register Trace Buffers
Locating RTRACE Output
Debugging the Kernel on Tegra Devices
Reconfiguring and Rebuilding the Kernel
Modifiying the Configuration Files
Using KGDB
At Boot: Kernel Command Line
Graphics Sample Application
NVIDIA Graphics Sample Applications
Building the Samples
Starting the Graphics System
Running the Sample Applications
Upstream Sample Application: Gears
tegrastats Utility
Reported Statistics
Running tegrastats
Re-Deploying tegrastats
tegrastats Options
How to Submit a Bug Report
Related Documentation
Legal Information
Introduction
Legal Information