### Install Dependency Packages Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/HardwareAccelerationInTheWebrtcFramework.html Installs necessary packages for building the WebRTC sample application. Ensure your firewall allows HTTP ports for streaming. ```bash apt-get install -y --no-install-recommends \ g++ \ libjsoncpp-dev \ libssl-dev \ uuid uuid-dev \ gstreamer1.0-plugins-base \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-ugly \ gstreamer1.0-plugins-bad \ libgstreamer1.0-0 \ libgstreamer-plugins-base1.0-dev \ ``` -------------------------------- ### Install Triton and Prepare DeepStream Application Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/TestPlanValidation.html Installs Triton, prepares the DeepStream Triton model repository, and sets up test video and backend. ```bash cd /opt/nvidia/deepstream/deepstream/samples sudo ./prepare_ds_triton_model_repo.sh sudo apt -y install ffmpeg sudo ./prepare_classification_test_video.sh sudo ./triton_backend_setup.sh ``` -------------------------------- ### Start X Server Manually Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/WindowingSystems/XWindowSystem.html Use this command to manually start the X server when services like lightdm or gdm3 are not enabled. Command-line arguments may vary by platform. Display configuration can be set in xorg.conf before starting, and runtime configuration with xrandr after. ```bash $ sudo -b X -ac -noreset -nolisten tcp ``` -------------------------------- ### Check Grub Installation Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Bootloader/UEFI.html Verify the installed Grub version and list the files installed in the EFI directory. This helps confirm a successful Grub installation. ```bash # Check installed Grub version $ sudo grub-install --version # Check the installed files $ ls -R /boot/efi ``` -------------------------------- ### Start iperf3 Server Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/TestPlanValidation.html Run the iperf3 command with the '-s' flag to start the server on the target device. ```bash iperf3 -s ``` -------------------------------- ### Install Git Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Kernel/KernelCustomization.html Installs the Git version control system. Ensure Git is installed before proceeding with source code operations. ```bash sudo apt install git ``` -------------------------------- ### Video Playback Example Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Multimedia.html A basic GStreamer pipeline for playing video files. This example uses hardware-accelerated decoding for efficient playback. ```bash gst-launch-1.0 filesrc location=video.mp4 ! qtdemux ! h264parse ! nvv4l2decoder ! nvvidconv ! autovideosink ``` -------------------------------- ### Set Playback Start Point Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Multimedia/AcceleratedGstreamer.html Use the -a or --start option to specify the starting point of playback in seconds from the beginning of the media. ```bash nvgstplayer-1.0 -a 30 ``` -------------------------------- ### Install and Run Gears Application Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Graphics/SampleApplications.html Commands to install the mesa-utils and mesa-utils-extra packages and then run the es2gears or glxgears application. Ensure the X server is running. ```bash sudo apt-get update sudo apt-get install -y mesa-utils sudo apt-get install –y mesa-utils-extra ``` ```bash export DISPLAY=:0 X& /usr/bin/es2gears ``` ```bash /usr/bin/glxgears ``` -------------------------------- ### Build and Configure Cryptsetup Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Security/DiskEncryption.html Configure and build the cryptsetup package after downloading the source and installing dependencies. This command prepares the package for installation. ```bash ./autogen.sh && ./configure && make ``` -------------------------------- ### Installing NVIDIA Out-of-Tree Modules Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Kernel/KernelCustomization.html Install the out-of-tree modules and update the initramfs. Use `sudo nv-update-initrd` for native builds on the target. ```bash export INSTALL_MOD_PATH=/Linux_for_Tegra/rootfs/ sudo -E make modules_install cd /Linux_for_Tegra sudo ./tools/l4t_update_initrd.sh ``` -------------------------------- ### Video Encode Example using gst-launch-1.0 Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/index.html Example of encoding video streams with GStreamer. Replace 'videotestsrc' and the encoder plugin (e.g., 'nvv4l2h264enc') according to your requirements. ```bash gst-launch-1.0 videotestsrc ! video/x-raw,width=1280,height=720 ! nvv4l2h264enc ! h264parse ! nvv4l2decoder ! "video/x-raw(memory:NVMM)" ! nvoverlaysink ``` -------------------------------- ### Install FSKP Packages Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Security/FirmwareTPM.html Installs the FSKP (Firmware Security Key Package) partner release package. Ensure the path to the downloaded file is correct. ```bash cd ${BSP_TOP} tar jvxf ~/Downloads/fskp_partner_t234_${rel_ver}_aarch64.tbz2 ``` -------------------------------- ### Fuse Configuration File Example Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Security/SecureBoot.html An example XML file for configuring fuses, including SecureBootKey, PublicKeyHash, and other security-related settings. Ensure the hash values are correctly entered. ```xml ``` -------------------------------- ### Run Sample Graphics Application Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Graphics/SampleApplications.html Navigate to the prebuilt sample application directory and execute a sample like 'bubble'. The `` placeholder should be replaced with 'x11', 'wayland', or 'egldevice'. ```bash cd /usr/src/nvidia/graphics_demos/prebuilts/bin/ ./bubble ``` -------------------------------- ### FSKP Fuse Burn Script Usage Example Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Security/FSKP.html Example command for using the fskp_fuseburn.py script. Ensure Python is installed and the flashing environment is set up. ```bash sudo ./fskp_fuseburn.py --board-spec -f -i -k -g -c -B ``` -------------------------------- ### Start SDK Manager Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/TestPlanValidation.html Launch the NVIDIA SDK Manager from your terminal. This application is used for flashing and installing SDK components on Jetson devices. ```bash sdkmanager ``` -------------------------------- ### Compile and Run Backend Sample Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/TestPlanValidation.html Compile and execute the backend sample application. This sample is used for inferencing tasks. ```bash cd /usr/src/jetson_multimedia_api/samples/backend sudo make sudo ./backend 1 ../../data/Video/sample_outdoor_car_1080p_10fps.h264 H264 \ --trt-deployfile ../../data/Model/GoogleNet_one_class/GoogleNet_modified_oneClass_halfHD.prototxt \ --trt-modelfile ../../data/Model/GoogleNet_one_class/GoogleNet_modified_oneClass_halfHD.caffemodel \ --trt-mode 0 --trt-proc-interval 1 -fps 10 ``` -------------------------------- ### Slice Header Spacing (Bit-based) Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Multimedia/AcceleratedGstreamer.html Configures slice header spacing in terms of the number of bits. This example shows the setup for bit-based spacing. ```bash $ gst-launch-1.0 videotestsrc num-buffers=300 ! \ 'video/x-raw, width=(int)1280, height=(int)720, \ format=(string)I420, framerate=(fraction)30/1' ! nvvidconv ! \ 'video/x-raw(memory:NVMM), format=(string)I420' ! nvv4l2h264enc \ ``` -------------------------------- ### Example: Generate Partition BUP for A_xusb-fw on Jetson Orin NX Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Bootloader/UpdateAndRedundancy.html This is an example of generating a partition BUP image for the `A_xusb-fw` partition on a Jetson Orin NX carrier board. Ensure the board is in Force Recovery Mode and execute the command from the `${ToT_BSP}` directory. ```bash cd ${ToT_BSP} sudo ./build_l4t_bup.sh --single-image-bup A_xusb-fw jetson-orin-nano-devkit mmcblk0p1 ``` -------------------------------- ### Platform Device Tree Configuration for GMSL Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/CameraDevelopment/JetsonVirtualChannelWithGmslCameraFramework.html Example of a platform device tree configuration for a GMSL setup, specifying I2C addresses and device compatibility. This configuration is used for Jetson AGX Orin series. ```dts tca9546@70 { compatible = "nxp,pca9546"; i2c@0 { ... reg = <0>; dser: max9296@48 { /* single common deserializer at 0x48 */ compatible = "nvidia,max9296"; ... }; ser_prim: max9295_prim@62 { /* Default serializer device */ compatible = "nvidia,max9295"; ... }; ser_a: max9295_a@40 { ... }; imx390_a@1b { ... }; }; }; ``` -------------------------------- ### Run vulkanscinfo Help Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Graphics/VulkanSCSamples.html Displays all available command-line options for the vulkanscinfo utility. Navigate to the build/bin directory first. ```bash cd $VKSC_SAMPLES/build/bin ./vulkanscinfo --help ``` -------------------------------- ### GStreamer Pipeline with nvdrmvideosink (DRM) with Properties Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Multimedia/AcceleratedGstreamer.html This example demonstrates using nvdrmvideosink with specific properties like conn_id, plane_id, and set_mode to control display output. Ensure these IDs and modes are valid for your display setup. ```bash gst-launch-1.0 filesrc location= ! \ qtdemux! queue ! h264parse ! nvv4l2decoder ! nvdrmvideosink \ conn_id=0 plane_id=1 set_mode=0 -e ``` -------------------------------- ### Build and Run C++ Background Subtractor Sample Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/TestPlanValidation.html Navigate to the sample directory, build the C++ sample using CMake and Make, and then run it with CPU processing and a video input. Ensure the output video is played to verify functionality. ```bash cd /opt/nvidia/vpi3/samples/14-background_subtractor sudo cmake sudo make sudo ./vpi_sample_14_background_subtractor cpu ../assets/pedestrians.mp4 ``` -------------------------------- ### Example DTS Controller Product Configuration Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Bootloader/ControllerProdConfig.html A concrete example of a DTS file demonstrating product configurations for QSPI and SDMMC controllers, including default, hs400, and ddr52 modes. ```dts /dts-v1/; / { deviceprod { qspi-0 = <&qspi0>; qspi-1 = <&qspi1>; sdmmc-3 = <&sdmmc3>; #prod-cells = <0x3>; qspi0: qspi@3270000 { default { prod = <0x00000004 0x7C00 0x0>, <0x00000004 0xFF 0x10>; }; }; qspi1: qspi@3300000 { default { prod = <0x00000004 0x7C00 0x0>, <0x00000004 0xFF 0x10>; }; }; sdmmc3: sdmmc@3460000 { default { prod = <0x000001e4 0x00003FFF 0x0>; }; hs400 { prod = <0x00000100 0x1FFF0000 0x14080000>, <0x0000010c 0x00003F00 0x00000028>; }; ddr52 { prod = <0x00000100 0x1FFF0000 0x14080000>; }; }; }; }; ``` -------------------------------- ### Example /etc/crypttab Entries Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Security/DiskEncryption.html These are example entries for the /etc/crypttab file, which describes encrypted block devices to be set up during system boot. Each line specifies a volume name and the UUID of the underlying encrypted block device. ```bash crypt_root UUID=b5600ed6-69e7-42b8-bee3-ecfdd12649d1 ``` ```bash crypt_UDA UUID=cf6fa01d-1127-4612-9992-2f6db77385e0 ``` -------------------------------- ### Install UEFI Utilities Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Security/SecureBoot.html Installs the necessary efitools and efivar packages on the Ubuntu system. Ensure your package list is updated before installation. ```bash apt update apt install efitools apt install efivar ``` -------------------------------- ### Install Grub Debian Package Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Bootloader/UEFI.html Update the package list and install the Grub EFI package for arm64 architecture. This prepares the system for Grub installation. ```bash $ sudo apt-get update $ sudo apt-get install grub-efi-arm64-bin ``` -------------------------------- ### nvgstipctestapp Server Example Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Multimedia/AcceleratedGstreamer.html This command demonstrates how to run the nvgstipctestapp in server mode. Ensure the DISPLAY environment variable is set. ```bash export DISPLAY=:0 $ nvgstipctestapp server rtsp://127.0.0.1/video1 /tmp/test1 ``` -------------------------------- ### Install Grub to System Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Bootloader/UEFI.html Install Grub to the system, specifying the bootloader ID and the EFI directory. This command installs the Grub bootloader for arm64 EFI systems. ```bash # Install Grub to system $ sudo grub-install --bootloader-id=Ubuntu --efi-directory=/boot/efi --target=arm64-efi ``` -------------------------------- ### Setting Up USB Drive with Flash with initrd Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/index.html This command utilizes 'flash with initrd' to set up a USB drive as either a boot device or the root file system. This method is often used for more flexible storage configurations. ```bash sudo ./flash.sh --use-initrd -d /dev/sdX jetson-orin-nano-devkit ``` -------------------------------- ### Install Jetson Linux Support Packages Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/SoftwarePackagesAndTheUpdateMechanism.html Download and install the necessary Jetson Linux support packages using apt. This command installs CUDA toolkit, cross-compilation tools, NVIDIA libraries, and development tools. ```bash sudo apt-get install cuda-toolkit-12-2 cuda-cross-aarch64-12-2 nvsci libnvvpi3 vpi3-dev vpi3-cross-aarch64-l4t python3.9-vpi3 vpi3-samples vpi3-python-src nsight-systems-2023.4.3 nsight-graphics-for-embeddedlinux-2023.3.0.0 ``` -------------------------------- ### nvgstipctestapp Client Example Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Multimedia/AcceleratedGstreamer.html This command demonstrates how to run the nvgstipctestapp in client mode. Ensure the DISPLAY environment variable is set. ```bash export DISPLAY=:0 $ nvgstipctestapp client /tmp/test1 ``` -------------------------------- ### Create UEFI Keys Config File Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Security/SecureBoot.html Example of creating a configuration file for UEFI keys. This file specifies the keys and certificates to be used for signing and authentication. ```text 1. Create a UEFI keys config file. 2. Generate `UefiDefaultSecurityKeys.dtbo` and the auth files. 3. Use option `--uefi-keys ` to provide signing keys and enable UEFI secure boot. ``` -------------------------------- ### DTS Example for GPIO Interrupt Mapping Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Bootloader/GpioInterruptMapConfig.html Provides a Device Tree Source (DTS) example of a production configuration file for GPIO interrupt mapping. This example demonstrates mapping specific GPIO pins to interrupt lines. ```dts /dts-v1/; / { gpio-intmap { port@B { pin-1-int-line = <0>; // GPIO B1 to INT0 }; port@AA { pin-0-int-line = <0>; // GPIO AA0 to INT0 pin-1-int-line = <0>; // GPIO AA1 to INT0 pin-2-int-line = <0>; // GPIO AA2 to INT0 }; }; }; ``` -------------------------------- ### Video Playback Example using gst-launch-1.0 Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/index.html Play a video file using GStreamer. Replace 'your_video.mp4' with the actual file path. ```bash gst-launch-1.0 filesrc location=your_video.mp4 ! decodebin ! autovideosink ``` -------------------------------- ### Install iperf3 Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/TestPlanValidation.html Update package lists and install the iperf3 tool on the target device using apt. ```bash sudo apt update sudo apt install iperf3 ``` -------------------------------- ### Display nv_overlayfs_config Help Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/RootFileSystem.html Run this command to view the available options and usage instructions for the `nv_overlayfs_config` tool. ```bash sudo nv_overlayfs_config --help ``` -------------------------------- ### Install Flashing Dependencies Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/FlashingSupport.html Run this script on Debian-based Linux systems to install necessary dependencies for flashing. ```bash sudo tools/l4t_flash_prerequisites.sh # For Debian-based Linux ``` -------------------------------- ### Manually Setting Up an NVMe Drive for Booting Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/index.html This command manually prepares an NVMe drive to be used as a boot device for a Jetson system. It ensures the necessary boot partitions and files are correctly placed. ```bash sudo ./flash.sh -r -d nvme0n1 jetson-orin-nano-devkit ``` -------------------------------- ### Build and Run C++ Perspective Warp Sample Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/TestPlanValidation.html Navigate to the sample directory, build the C++ sample using CMake and Make, and then run the executable with input video. ```bash cd /opt/nvidia/vpi3/samples/10-perspwarp sudo cmake sudo make sudo ./vpi_sample_10_perspwarp cuda ../assets/noisy.mp4 ``` -------------------------------- ### Get help for xrandr Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/WindowingSystems/XWindowSystem.html Use this command to view all available options and get help for the xrandr utility. ```bash $ xrandr --help ``` -------------------------------- ### Install GStreamer-1.0 Development Libraries Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Multimedia/AcceleratedGstreamer.html Installs the development header files and libraries for GStreamer-1.0 and its associated plugin bases. ```bash sudo apt-get install libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev \ libgstreamer-plugins-good1.0-dev \ libgstreamer-plugins-bad1.0-dev ``` -------------------------------- ### Create BSP Directory and Navigate Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Security/FirmwareTPM.html Creates a directory for the BSP and changes the current directory to it. Replace ${BSP_TOP} with your desired path. ```bash mkdir ${BSP_TOP} cd ${BSP_TOP} ``` -------------------------------- ### Image Encode Examples using gst-launch-1.0 Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Multimedia.html Examples of image encoding using the `gst-launch-1.0` command-line tool. These snippets demonstrate how to encode images into various formats leveraging hardware acceleration. ```bash gst-launch-1.0 videotestsrc ! video/x-raw,format=I420 ! nvv4l2h264enc ! "video/x-h264,stream-format=byte-stream" ! fakesink ``` ```bash gst-launch-1.0 videotestsrc ! video/x-raw,format=I420 ! nvv4l2h265enc ! "video/x-h265,stream-format=byte-stream" ! fakesink ``` ```bash gst-launch-1.0 videotestsrc ! video/x-raw,format=I420 ! nvv4l2av1enc ! "video/x-av1,stream-format=byte-stream" ! fakesink ``` -------------------------------- ### Install Flash Prerequisites Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/FlashingSupport.html Run this command to install necessary prerequisites before flashing your Jetson device. Ensure you are in the correct directory. ```bash sudo tools/l4t_flash_prerequisites.sh ``` -------------------------------- ### Manually Setting Up a Flash Drive for Booting Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/index.html This command is used to manually set up a flash drive to be used as a boot device for a Jetson system. It prepares the necessary partitions and bootloaders. ```bash sudo ./flash.sh -r -d /dev/sdX jetson-orin-nano-devkit ``` -------------------------------- ### Install Disk Encryption Packages Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Security/DiskEncryption.html Installs necessary packages for disk encryption on the host machine. Ubuntu 22.04 is recommended. ```bash sudo apt-get install python3-cryptography python3-cffi-backend libxml2-utils sudo apt-get install cryptsetup python3-pycryptodome python3-crypto ``` -------------------------------- ### Start Pulseaudio Daemon Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/HardwareAccelerationInTheWebrtcFramework.html Starts the pulseaudio daemon on the Jetson device. This command is necessary if errors related to pulseaudio are encountered. ```bash pulseaudio --start ``` -------------------------------- ### Example: Set Power Mode and Reboot Prompt Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/PlatformPowerAndPerformance/JetsonOrinNanoSeriesJetsonOrinNxSeriesAndJetsonAgxOrinSeries.html This example shows the output when setting power mode 0, including warnings about golden image context and the requirement for a reboot. Type 'YES' or 'yes' to confirm the reboot. ```bash ubuntu@jetson:~$ sudo nvpmodel -m 0 NVPM WARN: Golden image context is already created NVPM WARN: Reboot required for changing to this power mode: 0 NVPM WARN: DO YOU WANT TO REBOOT NOW? enter YES/yes to confirm: ``` -------------------------------- ### Compile and Run video_convert Sample Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/TestPlanValidation.html Compile and run the video_convert sample. Ensure you have a YUV input file; otherwise, use jpeg_decode to generate one. ```bash cd /usr/src/jetson_multimedia_api/samples/07_video_convert sudo make sudo ./video_convert [OPTIONS] ``` ```bash sudo ./video_convert ../../data/Picture/nvidia-logo.yuv 1920 1080 YUV420 test.yuv 1920 1080 YUYV ``` -------------------------------- ### Start Peer Connection Server Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/HardwareAccelerationInTheWebrtcFramework.html Starts the peerconnection_server application on the Jetson platform, which listens on port 8888 with default configurations. ```bash ./peerconnection_server ``` -------------------------------- ### Install SDK Manager on Ubuntu Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/TestPlanValidation.html Use this command to install the NVIDIA SDK Manager on your Ubuntu system. Ensure you have the necessary permissions. ```bash sudo apt install sdkmanager ``` -------------------------------- ### Rendering to an EGLDevice Through the EGLStream Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Graphics/Egldevice.html This section outlines the step-by-step process for rendering to an EGLDevice using an EGLStream. It covers querying extensions and devices, obtaining an EGLDisplay, initializing EGL, setting up an EGLOutput, creating and connecting an EGLStream, configuring buffers, creating a producer surface, making the context current, and finally posting surface contents to the stream. ```APIDOC ## Rendering to an EGLDevice Through the EGLStream 1. Query EGL extensions with `eglGetProcAddress()`. 2. Query available EGLDevices with `eglQueryDevicesEXT()`. 3. Obtain an EGLDisplay from the EGLDevice with `eglGetPlatformDisplayEXT()`. This step creates an EGLDisplay that does not belong to any native platform. 4. Initialize EGL with `eglInitialize()`. 5. Set up an EGLOutput. For detailed steps, see [Setting Up the Display with DRM](https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Graphics/Egldevice.html#setting-up-the-display-with-drm). * Select an output. * Can be done by enumerating all outputs and selecting a known index. * Can be done by looking up an output associated with a native (e.g. DRM) screen handle. * If necessary, initialize display settings with native interfaces. 6. Direct rendering to an EGLOutput. * Create an EGLStream with `eglCreateStreamKHR()`. * Connect the output layer to the EGLStream. Bind consumer end of stream to EGLOutput window object with `eglStreamConsumerOutputEXT()`. 7. Set the buffer configurations by choosing an EGLConfig. 8. To feed the EGLStream, create an EGLStream producer surface with `eglCreateStreamProducerSurfaceKHR()`. 9. Create an EGLContext and make it current by binding it to the stream surface with `eglMakeCurrent()`. 10. Post the surface contents to the EGLStream with `eglSwapBuffers()`. ``` -------------------------------- ### Create and Enable Swap File on Jetson Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/FlashingSupport.html Use these commands to create a 4GB swap file, set permissions, format it, and enable it. Add the provided line to `/etc/fstab` to ensure it mounts on boot. ```bash sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile ``` ```bash /swapfile swap swap defaults 0 0 ``` -------------------------------- ### Install PulseAudio Bluetooth Module Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Communications/EnablingBluetoothAudio.html Update the package list and install the `pulseaudio-module-bluetooth` package to enable Bluetooth audio support with PulseAudio. ```bash sudo apt-get update ``` ```bash sudo apt-get install pulseaudio-module-bluetooth ``` -------------------------------- ### Jetson nvpmodel Help Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/PlatformPowerAndPerformance/JetsonOrinNanoSeriesJetsonOrinNxSeriesAndJetsonAgxOrinSeries.html Display all available options and commands for the nvpmodel utility. ```bash /usr/sbin/nvpmodel -h ``` -------------------------------- ### Prepare PK, KEK, db Keys for UEFI Secure Boot Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Security.html Generate the necessary keys (Platform Key, Key Exchange Key, Signature Database key) for UEFI Secure Boot. ```bash # Generate PK openssl genrsa -aes256 -out PK.pem 3072 openssl rsa -aes256 -in PK.pem -out PK.key openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in PK.key -out PK.pem # Generate KEK openssl genrsa -aes256 -out KEK.pem 3072 openssl rsa -aes256 -in KEK.pem -out KEK.key openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in KEK.key -out KEK.pem # Generate db openssl genrsa -aes256 -out db.pem 3072 openssl rsa -aes256 -in db.pem -out db.key openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in db.key -out db.pem ``` -------------------------------- ### Install Basic Jetson Linux Packages Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/SoftwarePackagesAndTheUpdateMechanism.html Installs the basic packages for Jetson Linux after updating the package list and identifying upgradable packages. ```bash $ sudo apt upgrade ``` -------------------------------- ### Video Scaling Example using GStreamer Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/index.html Demonstrates video scaling within a GStreamer pipeline. The 'videoscale' plugin can be used for this purpose. ```bash gst-launch-1.0 videotestsrc ! video/x-raw,width=1920,height=1080 ! videoscale ! video/x-raw,width=640,height=480 ! autovideosink ``` -------------------------------- ### Install Docker and Run Container Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/RootFileSystem.html Install Docker on your host system and run an Ubuntu 22.04 container to execute the root file system generation script if your host is not running Ubuntu 22.04. ```bash sudo apt-get install docker.io sudo docker run --privileged -it --rm -v /Linux_for_Tegra:/l4t ubuntu:22.04 ``` -------------------------------- ### Installing Jetson Linux Kernel and Modules Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/SD/Kernel/KernelCustomization.html Install the built kernel and in-tree modules to the root filesystem. Ensure INSTALL_MOD_PATH is set correctly. ```bash export INSTALL_MOD_PATH=/Linux_for_Tegra/rootfs/ sudo -E make install -C kernel cp kernel/kernel-jammy-src/arch/arm64/boot/Image \ /Linux_for_Tegra/kernel/Image ``` -------------------------------- ### Setting Up NVMe Drive with Flash with initrd Source: https://docs.nvidia.com/jetson/archives/r36.4.4/DeveloperGuide/index.html This command uses 'flash with initrd' to set up an NVMe drive as a boot device or root file system. This is beneficial for advanced NVMe configurations. ```bash sudo ./flash.sh --use-initrd -d nvme0n1 jetson-orin-nano-devkit ```