Introduction
Jetson Developer Kits and Modules
Software for Jetson Modules and Developer Kits
Documentation for Jetson Modules and Developer Kits
Devices Supported by This Document
How Developer Guide Topics Identify Devices
Quick Start
Types and Models of Jetson Devices
Preparing a Jetson Developer Kit for Use
Over-the-Air Update
Updating from the NVIDIA APT Server
Updating a Jetson Device
Updating a Host
Debian Packages on the NVIDIA APT Server
Update Packages for Jetson Devices
Update Packages for Hosts
Customizing Debian Packages
Downloading Debian Packages for Later Use
Updating Jetson Linux with Image-Based Over-the-Air Update
Terms and Abbreviations
Overall High-Level Flow
Preparing the OTA Payload Package
Trigger the OTA Process
Preparing for an Image-Based OTA Update
nv_ota_start.sh, a Utility for Triggering OTA
Update with Rootfs Redundancy Enabled
Update with Partition Layout Changes
Back Up and Restore Files on the APP Partition
Complete and Secure OTA
Customization
Rootfs Customization
Partition Layout Customization
Update Process Customization
Recovery Image Customization
Recovery Task Customization
Miscellaneous Customization: Ethernet Connectivity Requirement
Updating the Rootfs Partition with a Customized Updater and Image
Updating an Individual Partition
Examples
Architecture
Jetson Board Support Package
Artificial Intelligence
Computer Vision
Camera
Display
CUDA Toolkit
Graphics
Multimedia
Developer Tools
JetPack SDK
Package Manifest
Jetson Nano and Jetson TX1 Package Manifest
Bootloader
Kernel
Kernel Supplements TBZ2
Kernel Headers TBZ2
Tools
nv_tegra
Nvgstapps TBZ2
Config TBZ2
Graphics Demos
NVIDIA Drivers TBZ2
NVIDIA Tools TBZ2
Weston TBZ2
Jetson Xavier NX Series, AGX Xavier Series, and TX2 Series Package Manifest
Bootloader
Kernel
Kernel Supplements TBZ2
Kernel Headers TBZ2
Tools
NV Tegra
Nvgstapps TBZ2
Config TBZ2
Graphics Demos
NVIDIA Drivers TBZ2
NVIDIA Tools TBZ2
Weston TBZ2
Software Features
Jetson Xavier NX Series Software Features
Bootloader
Toolchain
Kernel
Camera Interface
LSIO
HDMI
DP
PCIE
SDMMC
Security Engine
USB 3.0
Ethernet
Ethernet Controller Features (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 Nano Devices 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 Series Software Features
Bootloader
Toolchain
Kernel
Debug Interface
Camera Interface
LSIO
HDMI
DP
PCIE
SDMMC
DRAM ECC
SATA
SATA-Marvel (over PCIe)
UFS
Security Engine
USB 3.0
Ethernet
Ethernet Controller Features (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
Ethernet Controller Features (EQOS)
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
Audio
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 Jetson Device
Root File System Redundancy
Rootfs Selection
Rootfs Selection with Unified Bootloader and Rootfs A/B Disabled
Rootfs Selection with Unified Bootloader and Rootfs A/B Enabled
How to Create Redundant Root File Systems
Managing Rootfs Slots with nvbootctrl
Using UUID for Root File System Partitions APP and APP_b
Over-the-Air Update with Rootfs Redundancy Enabled
Hardware Setup
Jetson Developer Kit Setup
Jetson Xavier NX Series
Carrier Board Preparation
Carrier Board Layout
Jetson Nano Devices
Carrier Board Preparation
Carrier Board Layout
Jetson AGX Xavier Series Devices
Carrier Board Preparation
Carrier Board Layout
Jetson AGX Xavier Industrial Information
Jetson TX2 Series Devices
Carrier Board Preparation
Carrier Board Layout
Jetson TX2i Information
Jetson TX1
Carrier Board Preparation
Carrier Board Layout
Enabling Bluetooth Audio
Voltage and Current Monitor
Power Monitor Device Tree Properties
Jetson Xavier NX Series
Configuring the Voltage and Current Monitor
Jetson Nano Devices
Configuring the Voltage and Current Monitor
Jetson AGX Xavier Series
Configuring the Voltage and Current Monitor
Jetson TX2 Series (Except Jetson TX2 NX)
Configuring the Voltage and Current Monitor
Jetson TX2 NX
Configuring the Voltage and Current Monitor
Jetson TX1
Configuring the Voltage and Current Monitor
Jetson Module EEPROM Layout
Configuration of Vendor-Specified MAC Addresses
Value of the CRC-8 Byte
Configuring Jetson Expansion Header
Running Jetson-IO
Main Screen: Selecting a Header
Header Screen
Compatible Hardware Screen
Expansion Header Configuration Screen
Configuring the CSI Connector
Main Screen: Save
Command Line Interface
Adding Support for Custom Hardware
Device Tree Overlays
Creating a Simple Device Tree Overlay
Creating a Custom Device Tree Overlay
CAN (Controller Area Network)
Important Features
Jetson Platform Details
Enabling CAN
Kernel DTB
Pinmux
Kernel Drivers
Managing the Network
Debug Methods
Loopback test
Other Methods
Obtaining Higher Bit Rates
Changing the CAN parent clock on T194 platforms
Changing the CAN Clock Rate
CAN on Jetson Nano Devices
To connect an MCP251x chip to Jetson Nano
Audio Setup and Development
ASoC Driver for Jetson Products
ALSA
DAPM
Device Tree
ASoC Driver
Audio Hub Hardware Architecture
ASoC Driver Software Architecture
Platform Driver
ADMAIF
Codec Driver
Codec Driver Instantiation Using Device Tree
XBAR
AMX
ADX
I2S
Mixer
SFC
DMIC
MVC
DSPK
AHUB Client TX Port Names
ASoC Machine Driver
Clocking and Power Management
Changing the PLL_A Base Rate on Newer Processors
Changing the PLL_A Base Rate on Older Processors
High Definition Audio
Features Supported
Software Driver Details
USB Audio
Features Supported
Software Driver Details
Enabling Bluetooth Audio
Board Interfaces
40-pin GPIO Expansion Header
Pinmux Configuration
Device Tree Configuration for a Custom Audio Card
Populate Codec Node
Jetson I2S Node
Codec and CPU DAI Link Setup
Enable Codec Driver
Update the Machine Driver to Support a Custom Audio Card
Add an Initialization Function for the Codec
Register the Initialization Function for the Codec
Add Support for Runtime Configuration of Codec Parameters
HD Audio Header for Jetson AGX Xavier
Audio Formats Supported
Usage Guide
Usage and Examples
I2S
Playback
Capture
I2S Internal Loopback
AHUB Usage in Hostless Mode
Multi-Channel (TDM) Capture
DMIC
Stereo Capture
Mono Capture (L)
Mono Capture (R)
DSPK: Playback
MVC: Applying Gain on Stream with MVC
AMX
Multiplexing Two Streams
Multiplexing Three Streams
ADX: Demultiplexing a Single Stereo Stream into Two Mono Streams
SFC: Rate Conversion from 48000 to 44100 Hz
Mixer: Mixing Two Input Streams
HDMI/DP Playback
USB
Playback
Capture
Troubleshooting
No Sound Cards Found
Sound Not Audible or Not Recorded
I2S Software Reset Failed
XRUN Observed During Playback/Capture
Audio Pops and Clicks
PCIe Endpoint Mode
Hardware Requirements
Assumptions
Flashing the PCIe Endpoint on a Jetson Xavier NX Series System
Flashing the PCIe Endpoint on a Jetson AGX Xavier Series System
Connecting and Configuring the Systems
Testing PCIe Endpoint Support
Bringing Up an Ethernet Interface Over PCIE
BSP Customization
Boot Options
Choosing a Boot Device for Jetson AGX Xavier Series Platforms
Node Properties
Examples
Rebuilding the DTB
Choosing a Boot Device for Other Platforms
Linux Host System Prerequisites
Setting Up a TFTP Server on the Host System
Extracting Jetson Linux Driver Package
Login Credentials
Installing Additional Packages
Repackaging Debian Packages
Building the Debian Bootloader Package Yourself
Versions of the Bootloader Package
Pre-Dependencies and Dependencies
Package Scripts
Building Kernel Debian Packages Yourself
Working with the Packages
Package Dependencies
nvidia-l4t-kernel
Pre-Dependencies and Dependencies
Package Scripts
nvidia-l4t-kernel-dtbs
Pre-Dependencies and Dependencies
Package Scripts
nvidia-l4t-kernel-headers
Pre-Dependencies and Dependencies
Package Scripts
nvidia-l4t-jetson-io
Pre-Dependencies and Dependencies
Package Scripts
Configuring NFS Root on the Linux Host
Determining Version and Platform Information
Improving System Performance
Lightweight Window Manager Alternatives
Flashing and Booting the Target Device
Before You Begin
Basic Flash Script Usage
Basic Flashing Procedures
Flash Script Usage
Flashing to a USB Drive
Flashing to an NVMe Drive
Flashing to an SD Card
Flashing to an External Storage Device
Changing Boot Order with CBoot
Changing Boot Order with U-Boot
Flashing a Specific Partition
Flashing for NFS as Root
Flashing with initrd
Flashing to Multiple Jetson Devices
Flashing for Network Boot
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
Skipping oem-config
Modifying Jetson RAM Disk
Bootloader
Boot Flow
Jetson Xavier NX Series and Jetson AGX Xavier Series Boot Flow
BootROM
Bootloader Components
TegraBoot
CBoot
Jetson Nano Boot Flow
BootROM
Bootloader Components
TegraBoot
TegraBoot CPU
CBoot
U-Boot
Jetson TX2 Boot Flow
BootROM
Bootloader Components
TegraBoot
CBoot
U-Boot
Jetson TX1 Boot Flow
BootROM
Bootloader Components
TegraBoot
TegraBoot CPU
CBoot
U-Boot
Partition Configuration
NVIDIA Jetson Platforms and Platform Series
Partition Configuration File
Root Element
Device Element
Partition Element
Default Partition Overview
Jetson Xavier NX Development Module (P3668-0000), QSPI_NOR Partition
Jetson Xavier NX Development Module (P3668-0000) SD Card Partition
Jetson Xavier NX Production Module (P3668-0001 or 0003) QSPI_NOR Partition
Jetson Xavier NX Production Module (P3668-0001 or 0003) emmc_user Partition
Jetson Nano Development Module (P3448-0000) Flashed to On-Board Memory
Jetson Nano Development Module (P3448-0000) Flashed to Micro SD Card
Jetson Nano Production Module (P3448-0002)
Jetson Nano 2GB Development Module (P3448-0003) Flashed to On-Board Memory
Jetson Nano 2GB Development Module (P3448-0003) Flashed to Micro SD Card
Jetson AGX Xavier Series (P2888 and P2888-nnnn), sdmmc_boot Partition
Jetson AGX Xavier Series (P2888 and P2888-nnnn), sdmmc_user Partition
Jetson AGX Xavier Industrial (P2888-0008), QSPI_NOR Partition
Jetson TX2 Series (P3489 and P3489-nnnn), sdmmc_boot Partition
Jetson TX2 Series (P3489 and P3489-nnnn), sdmmc_user Partition
Jetson TX1 (P2180)
External Storage Device Partition
Bootloader Update and Redundancy
Jetson Nano/TX1 Update and Redundancy
TegraBoot and Partition Layout
Redundancy Boot Firmware
Generating the Bootloader Update Payload (BUP)
Bootloader Update
Bootloader Update Flow
Sample Logs in BUP Generation, Boot, and Update for BFS/KFS
Jetson Xavier NX / AGX Xavier / TX2 Update and Redundancy
A/B Slot Layout
A/B System Update
Bootloader Implementation
When the Update Engine is Launched
Enabling A/B Redundancy
Bootloader Tools
Running the Update Engine
Update Engine State Machine
Manually Modifying Boot Slots
Sample Boot Log
Generating the Bootloader Update Payload (BUP)
U-Boot Customization
Requirements
Placeholders in Commands
Downloading and Building U-Boot
Prerequisite
Before Flashing
Flashing U-Boot Full Jetson Linux Driver Package 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
Debugging in the U-Boot Environment
MB1 Platform Configuration
Jetson Xavier NX Series and Jetson AGX Xavier Series 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 Series 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
Secure Boot
Fuses and Security
Overall Fusing and Signing Binaries Flow
Installing the Secure Boot Package
Generating the RSA Key Pair
Preparing the SBK Key
Preparing the User Key
Preparing the DK(KEK)/ODM Fuses
Burning PKC [DK(KEK), SBK] Fuses
odmfuse.sh Options
Signing and Flashing Boot Files
Accessing the Fuse from the Target
Fusing to Multiple Jetson Devices
Building and Flashing a Factory-Signed Firmware Blob
Signing and Encrypting Kernel, Kernel-DTB, Initrd, and extlinux.conf Files
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
Key Derivation Function of a Fuse Key and User-Defined Key
Encrypted Keyblobs
Encrypted Keyblob Overview
Encrypted Keyblob Format
Encrypted Keyblob Generation and Device Provisioning
Encrypted Keyblob Decryption
SE Keyslot Clearing
SE Usage
Secure Samples
Key Maintenance and EKBs
KDF of Fuse Keys
EKB Generation
EKB Extraction
Tool for EKB Generation
EKB Extraction Sample
Hardware Random Number Generator Function
AES-256 Hardware Key Derivation Function in Trusty OS
Flow of the AES-256 Hardware KDF
API Functions
Disk Encryption
Setup Preparation
Details of Operation
The Threat Model
Disk Encryption Implementation in Jetson Linux
Manufacturing process
Rollback Protection through Ratcheting
Rollback Protection for MB1-BCT, MB2, and Later Components
MB1-BCT
MB2 and Later Components
Ratchet Configuration File
Incrementing the Version Number of MB2 and Later Components
OEM-Set Components
Ratchet Updating in CBoot for MB1-BCT
Rollback Protection for User Applications
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
Using the L4T Real-Time Kernel Package
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 Options
Multi-Head/Multi-Window Input Configurations
Output Values
Device Tree Configuration
Seamless Display on DP (over USB-C)
Jetson Linux 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
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
Loadable Kernel Module (LKM)
Kernel Configuration
Device Registration
Using Plugin Manager
Using the Jetson-IO Tool
Using the Main Platform Device Tree File
Verifying the V4L2 Sensor Driver
Debugging Tips
Mode Tables
Camera Sensor Drivers Porting
Changes for the V4L2 API
Changes to Device Tree Properties
Porting version 1.0 drivers to version 2.0
Jetson Virtual Channel with GMSL Camera Framework
Platforms
GMSL Protocol
GMSL Camera
CSI Connectivity
Jetson TX2
Jetson AGX Xavier Series
Hardware Module Connectivity
Software Framework and Programming
Driver Framework
Device Tree Programming
Constraints
Validation
Known Issues
General Issues
Xavier-Specific
Plugin Manager Board ID
Argus NvRaw Tool
Prerequisites for Use
Hardware and Operating System Prerequisites
Software Package Prerequisites
Camera Sensor Modes
nvargus_nvraw Command
Usage
Examples: Basic Operations
Examples: Displaying Sensor Information
Examples: Capturing Images
Examples: Other Operations
Limitations
Sensor Processing Engine (SPE)
Multimedia
Multimedia API
GStreamer-based Multimedia Playback
Installing GStreamer
Using NvGstPlayer
GStreamer API
GStreamer-based Camera Capture
Accelerated Decode with ffmpeg
Decode Functional Flow
Accelerated GStreamer
GStreamer-1.0 Installation and Setup
Decode Examples
Audio Decode Examples Using gst-launch-1.0
Video Decode Examples Using gst-launch-1.0
Image Decode Examples Using gst-launch-1.0
Encode Examples
Audio Encode Examples Using gst-launch-1.0
Video Encode Examples Using gst-launch-1.0
Image Encode Examples Using gst-launch-1.0
Supported H.264/H.265/VP8/VP9 Encoder Features with GStreamer-1.0
Camera Capture with GStreamer-1.0
Camera Capture with GStreamer-1.0
Progressive Capture Using nvv4l2camerasrc
Raw-YUV Capture Using v4l2src
Camera Capture and Encode Support with OpenCV
Video Playback with GStreamer-1.0
Video Playback Examples
Properties
Video Decode Support with OpenCV
Video Streaming with GStreamer-1.0
Video Format Conversion with GStreamer-1.0
NVIDIA Input and Output Formats
Video Scaling with GStreamer-1.0
Video Cropping with GStreamer-1.0
Video Transcode with GStreamer-1.0
CUDA Video Post-Processing with GStreamer-1.0
gst-videocuda
gst-nvivafilter
Video Rotation with GStreamer-1.0
Video Composition with GStreamer-1.0
Interpolation Methods for Video Scaling
EGLStream Producer Example
EGL Image Transform Example
GStreamer Build Instructions
nvgstcapture-1.0 Reference
Command Line Options
CSI Camera Supported Resolutions
CSI Camera Runtime Commands
USB Camera Runtime Commands
Notes
nvgstplayer-1.0 Reference
nvgstplayer Command Line Options
nvgstplayer Runtime Commands
Video Encoder Features
Supported Cameras
CSI Cameras
USB 2.0 Cameras
Industrial Camera Details
NVIDIA Hardware Acceleration in the WebRTC Framework
Typical Buffer Flow
Application and Unit Test Setup
Important Method Calls
The WebRTC Package
Limitations
Clock Frequency and Power Management
Clocks
Overriding Default Clock Rates
Configuring GPU Clocks
Configuring VIC Clocks
VIC Dynamic Voltage and Frequency Scaling
Sysfs Paths for DVFS Control
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
WiFi Power Management
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
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 Xavier NX Series and Jetson AGX Xavier Series 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 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
Jetson TX2, TX2i, and TX2 4GB
Jetson TX2 NX
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
Jetson Module Adaptation and Bring-Up
Bring-Up Framework for Checking I/O Functions
Jetson Xavier NX Series Adaptation and Bring-Up
Board Configuration
Board Naming
Root Filesystem Configuration
MB1 Configuration Changes
Pinmux Changes
GPIO Changes
PMIC Changes
Porting the Linux Kernel
PCIe Controller Configuration
Jetson Xavier NX Developer Kit Default PCIe Configuration
Enabling PCIe in a Customer CVB Design
PCIe Configuration Example
Debug PCIe Link-Up Failure
Enabling the PCIe ASPM
Porting USB (Universal Serial Bus)
USB Structure
Required Device Tree Changes
Flashing the Build Image
Jetson Nano Adaptation and Bring-Up
Board Configuration and Developer Kits
Jetson Nano
Jetson Nano 2GB
Board Naming
Placeholders in the Porting Instructions
Root Filesystem Configuration
Pinmux Changes
Updating the Bootloader Pinmux
Accessing GPIOs via “gpio” Device Labels
Exporting Pinmux for the Jetson Linux Kernel
Porting U-Boot
Porting the Linux Kernel
Creating Device Tree Overlay Files
Modifying the Kernel Device Tree
Porting USB
USB Structure
UPHY Lane Assignment
Required Device Tree Changes
Fan speed control mapping table
Other Considerations When Porting
Boot Time Reduction
Root Filesystem
Kernel
Customizing Settings for Flashing the Module
Jetson AGX Xavier Series Adaptation and Bring-Up
Board Configuration
Board Naming
Placeholders in the Porting Instructions
Camera Connector Pin Differences
Root Filesystem Configuration
MB1 Configuration Changes
Pinmux Changes
GPIO Changes
PMIC Changes
Enabling WDT_RESET_OUT_N Pin for Watchdog Timeout
Porting the Linux Kernel
PCIe Controller Configuration
Jetson AGX Xavier Developer Kit Default PCIe Configuration
Enabling PCIe in a Customer CVB Design
PCIe Configuration Example
Debug PCIe Link-Up Failure
Enabling the PCIe ASPM
Porting USB (Universal Serial Bus)
USB Structure
UPHY Lane Assignment
Required Device Tree Changes
Flashing the Build Image
Jetson TX2 Series Adaptation and Bring-Up
Board Configuration
Board Naming
Placeholders in the Porting Instructions
MB1 Configuration Changes
Pinmux Changes
Updating the Bootloader Pinmux
GPIO Changes
PMIC Changes
Porting the Linux Kernel
Porting USB (Universal Serial Bus)
USB Structure
UPHY Lane Assignment
Required Device Tree Changes
For a Host-Only Port
Removing the DRAM ECC Partition
Flashing the Build Image
Jetson TX2 NX Adaptation and Bring-Up
Board Configuration
Board Naming
Root Filesystem Configuration
MB1 Configuration Changes
Pinmux Changes
GPIO Changes
PMIC Changes
Porting the Linux Kernel
Porting USB (Universal Serial Bus)
USB Structure
UPHY Lane Assignment
Removing the DRAM ECC Partition
Flashing the Build Image
Jetson TX1 Adaptation and Bring-Up
Board Naming
Placeholders in the Porting Instructions
Pinmux Changes
Updating the Bootloader Pinmux
Porting U-Boot
Porting the Linux Kernel
Creating Device Tree Overlay Files
Pad Power Detection
USB Lane Mapping
R24 Required Device Tree Changes
R24 Example 1
R24 Example 2
R28 Required Device Tree Changes
R28 Example 1
R28 Example 2
Other Considerations When Porting
Flashing the Build Image
Hardware Bring-Up Checklist
Before Power-On
Initial Power-On
Initial Software Flashing
Power
Power Optimization
USB 2.0 PHY
USB 3.0
HDMI
Audio
UART
SD Card Pinouts
Fan
Sensors I2C: General
Sensors I2C: Touch Screen (Optional)
PEX (Optional)
SATA (Optional)
PCIe (Optional)
Embedded Display(s) (Optional)
Imager(s) (Optional)
Software Bring-Up Checklist
Preparation
Bring-up Hardware Validation
Boot Validation
Kernel and Peripherals, Port and Validation
System Power and Clocks
Graphics Programming
Binary Shader Program Management
Automatic Shader Cache
Comparison and Combination
GLSLC Shader Program Compiler
Compiled Shader Program Characteristics
Libraries Loaded on Demand
EGLDevice
EGLDevice
EGLOutput
EGLStream
Extensions
Runtime Configuration
Conditions Requiring a Stream Surface
Implementation
Rendering to EGLDevice
Creating a Stream Surface
Cross-Process and Cross-Partition EGLStream Applications
Connecting a Surface to a Screen
Setting Up the Display with DRM
Board-to-Display Connectors
EGLStream
EGLStream Producers
EGLStream Consumers
EGLStream Operation Modes
Mailbox Mode
FIFO Mode
EGLStream Pipeline
Building a Cross-Process EGLStream Pipeline
Cross-Process EGLStream Example
OpenGL ES Programming Tips
Programming Efficiently
State
Geometry
Shader Programs
Textures
Miscellaneous
Optimizing OpenGL ES Applications
Avoiding Memory Fragmentation
Video Memory Overview
Allocating and Freeing Video Memory
Best Practices for Video Memory Management
Graphics Driver CPU Usage
Performance Guidelines
Graphics Sample Applications
NVIDIA Graphics Sample Applications
Building the Samples
Starting the Graphics System
Running the Sample Applications
Upstream Sample Application: Gears
Window Systems
Weston (Wayland) Windowing System
Weston/Wayland Architecture
Shells
Configuration
Environment Variables
Running Weston 6.0
Multiple Display Heads
Example of weston.ini Display Options
Hot-Plugging
Verified Use Cases
Issues Fixed in Weston
Known Issues
Compositing Mode in Weston
NV16/NV24 in Weston
Shared-Memory Rendering
DMA Buffer Rendering
VPR Memory
Weston dma-buf Support
Buffer Allocation
Buffer Write/read from CPU
Wayland Protocol to Post dma-buf Buffers to Weston
GL Renderer in Weston
Display Hardware Compositing in Weston
Weston dma-buf Sample
weston-debug
Gnome-Wayland Desktop Shell Support
X Window System
Starting X Server Manually
Runtime Configuration
Using xrandr for Runtime Configuration
Querying Supported Displays and Screen Resolutions
Obtaining Additional Help
Modifying the Static Configuration (Optional)
Using nvidia-xconfig to Configure xorg.conf
Getting Help with nvidia-xconfig
Specifying a Custom EDID for the Display
Setting Color Bit-Depth
Specifying Modes
Enabling Debug Mode
Multi-Display X Server Layout
Configurations that Require Editing xorg.conf
Enabling Screen Saver Features
Configuring EDID Polling and Native Resolution
Enabling Blending and Video Overlays
LXDE
Applications and Tools
Debugging on Jetson Platforms
Debugging Improvements
CoreSight Trace Sinks ETF and ETR
CoreSight AMBA Trace ID (ATID) Mapping
Jetson Nano Devices, Jetson TX2 Series, and Jetson TX1
Jetson Xavier NX Series and Jetson AGX Xavier Series
Uncore: Performance Monitor Unit
Device-Specific Features and Limitations
Debugging with Register Trace Buffers
Locating RTRACE Output
Program Trace Macrocell
Using the PTM
Decode Trace Example
Debugging the Kernel on Jetson Devices
Reconfiguring and Rebuilding the Kernel
Modifying the Kernel Configuration File
Using KGDB
Starting KDGB at Boot from the Kernel Command Line
tegrastats Utility
Reported Statistics
Running tegrastats
Re-Deploying tegrastats
tegrastats Command Line Options
Generic Timestamp Engine
Enabling the GTE Driver
Running Sample GTE Tests
How to Submit a Bug Report
Related Documentation
Published Documents
READMEs
Legal Information
Introduction
Legal Information