Difference between revisions of "Jetson/FAQ/BSP"
(14 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
=== [[Jetson/FAQ/BSP/PTP_Synchronization | How to do time synchronization between two Xaviers by PTP (Precision Time Protocol)?]] === | === [[Jetson/FAQ/BSP/PTP_Synchronization | How to do time synchronization between two Xaviers by PTP (Precision Time Protocol)?]] === | ||
+ | === [https://elinux.org/Jetson/AGX_Xavier_Check_Pin_Setting Jetson/AGX_Xavier_Check_Pin_Setting] === | ||
=== [[Jetson/FAQ/BSP/Remove_TypeC | Software Changes to Remove TypeC USB port on Jetson AGX Xavier]] === | === [[Jetson/FAQ/BSP/Remove_TypeC | Software Changes to Remove TypeC USB port on Jetson AGX Xavier]] === | ||
=== [[Jetson/FAQ/BSP/RootFS_Reduction | How to reduce RootFS disk usage on Jetson platform]] === | === [[Jetson/FAQ/BSP/RootFS_Reduction | How to reduce RootFS disk usage on Jetson platform]] === | ||
+ | === [https://github.com/jtagxhub/jetpack-agx-build Jetson AGX Xavier Build Assistant Scripts] === | ||
+ | === [https://elinux.org/Jetson/AGX_Xavier_Update_Pinmux AGX Xavier Update Pinmux] === | ||
+ | === [https://elinux.org/Jetson/AGX_Xavier_Tegra_Combined_UART AGX_Xavier_Tegra_Combined_UART] === | ||
+ | === [https://elinux.org/Jetson/AGX_Xavier_Misc_Interfaces Misc_Interfaces] === | ||
=== How to get fan speed from FAN_TACH? === | === How to get fan speed from FAN_TACH? === | ||
cat /sys/devices/generic_pwm_tachometer/hwmon/hwmon1/rpm | cat /sys/devices/generic_pwm_tachometer/hwmon/hwmon1/rpm | ||
Line 63: | Line 68: | ||
=== Failed to use headless mode oem-config feature on Jetson platform === | === Failed to use headless mode oem-config feature on Jetson platform === | ||
When using headless mode oem-config, suggest to use putty or screen on host to open tty device to config device, e.g. below command:<br> | When using headless mode oem-config, suggest to use putty or screen on host to open tty device to config device, e.g. below command:<br> | ||
− | $ screen /dev/ttyACM0 115200 | + | $ sudo screen /dev/ttyACM0 115200 |
By default, headless mode uses tty device enumerated by USB port which is used to flash device. In this case, the tty device node should be /dev/ttyACMx on host. | By default, headless mode uses tty device enumerated by USB port which is used to flash device. In this case, the tty device node should be /dev/ttyACMx on host. | ||
Line 83: | Line 88: | ||
Check Linux_for_Tegra/bootloader/flash.xml can get the partition name of each binary file. For example, search "cboot.bin" in Jetson TX2's flash.xml, we can get both partitions "cpu-bootloader" and "cpu-bootloader_b" contain it. So we should run below commands to update cboot.bin. | Check Linux_for_Tegra/bootloader/flash.xml can get the partition name of each binary file. For example, search "cboot.bin" in Jetson TX2's flash.xml, we can get both partitions "cpu-bootloader" and "cpu-bootloader_b" contain it. So we should run below commands to update cboot.bin. | ||
− | sudo ./flash.sh -k cpu-bootloader jetson-tx2 mmcblk0p1 | + | sudo ./flash.sh -k cpu-bootloader jetson-tx2 mmcblk0p1 |
sudo ./flash.sh -k cpu-bootloader_b jetson-tx2 mmcblk0p1 | sudo ./flash.sh -k cpu-bootloader_b jetson-tx2 mmcblk0p1 | ||
Official document describes "Flashing a Specific Partition" locates [https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fflashing.html%23wwpID0E0HD0HA here] | Official document describes "Flashing a Specific Partition" locates [https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fflashing.html%23wwpID0E0HD0HA here] | ||
Line 89: | Line 94: | ||
=== Ethernet issue on Jetson TX2 === | === Ethernet issue on Jetson TX2 === | ||
The Broadcom Ethernet PHY used on Jetson TX2 has issue when Energy-Efficient Ethernet(EEE) enabled. Apply [[Media:Add_option_to_disable_eee.patch|patch]] and enable CONFIG_EQOS_DISABLE_EEE kernel config, or user may meet some kinds of Ethernet issue (long delay, link down, transfer stuck or something else). The patch is merged in L4T R32.3. | The Broadcom Ethernet PHY used on Jetson TX2 has issue when Energy-Efficient Ethernet(EEE) enabled. Apply [[Media:Add_option_to_disable_eee.patch|patch]] and enable CONFIG_EQOS_DISABLE_EEE kernel config, or user may meet some kinds of Ethernet issue (long delay, link down, transfer stuck or something else). The patch is merged in L4T R32.3. | ||
+ | |||
+ | === [https://elinux.org/Jetson/FAQ/BSP/Jetson_TX2_NX_ethernet_LED_indicators Jetson TX2/NX ethernet LED indicators] === | ||
+ | |||
+ | === [https://elinux.org/Jetson/FAQ/BSP/Nano_Wakeup_Pin How to config wake up pin on Jetson Nano] === | ||
+ | |||
+ | === [https://elinux.org/Jetson/FAQ/BSP/Xavier_Wakeup_Pin How to config wake up pin on Jetson Xavier] === | ||
+ | |||
+ | === [https://elinux.org/Jetson/FAQ/BSP/sdcard sdcard/sdhci tips] === | ||
+ | |||
+ | === How to control GPIO pins === | ||
+ | Take Jetson AGX Xavier as an example, Let's say we want to control pin GPIO17. | ||
+ | 0. Make sure GPIO17 pinmux is configured as GPIO not SFIO. [[Jetson/AGX_Xavier_Check_Pin_Setting|How to check pinmux setting]] | ||
+ | 1. By checking [https://developer.nvidia.com/embedded/dlc/jetson-agx-series-devkit-pinmux-configuration-template Jetson AGX Xavier pinmux configuration template], we know that GPIO17 is actually GPIO3_PQ.01. GPIO_3 means TEGRA194_MAIN_GPIO. | ||
+ | 2. By checking code hardware/nvidia/soc/t19x/kernel-include/dt-bindings/gpio/tegra194-gpio.h, we know TEGRA194_MAIN_GPIO(Q, 1) equals 16 * 8 + 1 = 129. | ||
+ | 3. By "cat /sys/devices/2200000.gpio/gpio/gpiochip288/base" we get base is 288. So GPIO17 is actually gpio417 in Linux(288 + 129 = 417). | ||
+ | 4. Run "echo 417 > /sys/class/gpio/export" to export gpio417. | ||
+ | 5. Get direction: "cat /sys/class/gpio/gpio417/direction"; Set direction: "echo in > /sys/class/gpio/gpio417/direction", "echo out > /sys/class/gpio/gpio417/direction" | ||
+ | 6. Get value: "cat /sys/class/gpio/gpio417/value"; Set value: "echo 0 > /sys/class/gpio/gpio417/value", "echo 1 > /sys/class/gpio/gpio417/value" | ||
+ | |||
+ | === [https://elinux.org/Jetson_nsight_system Jetson Nsight System] === | ||
+ | === [https://elinux.org/Jetson/sw_solution Jetson SW solution] === |
Latest revision as of 00:00, 14 February 2022
Contents
- 1 How to do time synchronization between two Xaviers by PTP (Precision Time Protocol)?
- 2 Jetson/AGX_Xavier_Check_Pin_Setting
- 3 Software Changes to Remove TypeC USB port on Jetson AGX Xavier
- 4 How to reduce RootFS disk usage on Jetson platform
- 5 Jetson AGX Xavier Build Assistant Scripts
- 6 AGX Xavier Update Pinmux
- 7 AGX_Xavier_Tegra_Combined_UART
- 8 Misc_Interfaces
- 9 How to get fan speed from FAN_TACH?
- 10 How to know boot reason when watchdog reset?
- 11 How to get kernel source code by source_sync.sh in L4T driver package?
- 12 How to make text Bold or Italic by NvOSD in Tegra MultiMedia API?
- 13 How to get a unique ID for Jetson module?
- 14 EEPROMs on Jetson platforms.
- 15 How to use UART7 on TX2 (UART7 cannot receive data)?
- 16 How to use ttyTHS0 on Xavier?
- 17 Error when processing multi-channel high-resolution video data on Jetson platform
- 18 Failed to use headless mode oem-config feature on Jetson platform
- 19 How to create user account on Jetson platform.
- 20 How to flash specific partition on Jetson platform
- 21 Ethernet issue on Jetson TX2
- 22 Jetson TX2/NX ethernet LED indicators
- 23 How to config wake up pin on Jetson Nano
- 24 How to config wake up pin on Jetson Xavier
- 25 sdcard/sdhci tips
- 26 How to control GPIO pins
- 27 Jetson Nsight System
- 28 Jetson SW solution
How to do time synchronization between two Xaviers by PTP (Precision Time Protocol)?
Jetson/AGX_Xavier_Check_Pin_Setting
Software Changes to Remove TypeC USB port on Jetson AGX Xavier
How to reduce RootFS disk usage on Jetson platform
Jetson AGX Xavier Build Assistant Scripts
AGX Xavier Update Pinmux
AGX_Xavier_Tegra_Combined_UART
Misc_Interfaces
How to get fan speed from FAN_TACH?
cat /sys/devices/generic_pwm_tachometer/hwmon/hwmon1/rpm
How to know boot reason when watchdog reset?
Device reset reason can be found in 'dmesg' output like below:
[ 0.996297] tegra-pmc: get_secure_pmc_setting: done secure_pmc=0 [ 0.996407] tegra-pmc: ### PMC reset source: TEGRA_BCCPLEX_WATCHDOG [ 0.996466] tegra-pmc: ### PMC reset level: TEGRA_RESET_LEVEL_L1 [ 0.996519] tegra-pmc: ### PMC reset status reg: 0x9 [ 0.996627] tegra-pmc: PMC Prod config success
How to get kernel source code by source_sync.sh in L4T driver package?
Run below command to get certain release source code:
./source_sync.sh -t <release_tag>
Where <release_tag> can be found in Nvidia Jetson Linux Driver Package Release Notes, section 1.0 "About this Release". For example, for L4T 32.2.1, release notes says the release tag name is tegra-l4t-r32.2.1, so below command can get the kernel code:
./source_sync.sh -t tegra-l4t-r32.2.1
How to make text Bold or Italic by NvOSD in Tegra MultiMedia API?
User can refer to sample 02_video_dec_cuda on how to use NvOSD in Tegra MultiMedia API and do below change can make text Italic, Bold is similar.
diff --git a/samples/02_video_dec_cuda/videodec_main.cpp b/samples/02_video_dec_cuda/videodec_main.cpp index 0d63328..45bebff 100644 --- a/samples/02_video_dec_cuda/videodec_main.cpp +++ b/samples/02_video_dec_cuda/videodec_main.cpp @@ -189,7 +189,7 @@ set_text(context_t* ctx) ctx->textParams.display_text = ctx->osd_text ? : strdup("nvosd overlay text"); ctx->textParams.x_offset = 30; ctx->textParams.y_offset = 30; - ctx->textParams.font_params.font_name = strdup("Arial"); + ctx->textParams.font_params.font_name = strdup("Italic"); ctx->textParams.font_params.font_size = 18; ctx->textParams.font_params.font_color.red = 1.0; ctx->textParams.font_params.font_color.green = 0.0;
How to get a unique ID for Jetson module?
sudo cat /sys/firmware/devicetree/base/serial-number
EEPROMs on Jetson platforms.
Jetson platform usually has two EEPROMs, one on module and one on carrier board. The EEPROM on carrier is for some Nvidia internal board id storage, not mandatory on customer design. EEPROM on module stores module version, MAC address, etc. Layout of EEPROM on module can be found here.
How to use UART7 on TX2 (UART7 cannot receive data)?
On TX2, UART7 is used for BPMP debug console. User needs to disable BPMP debug console before using UART7 by change.
How to use ttyTHS0 on Xavier?
ttyTHS0 is used for console on Xavier by default by /etc/systemd/system/nvgetty.service. User needs to disable nvgetty service before using ttyTHS0.
Error when processing multi-channel high-resolution video data on Jetson platform
In R32.2.1 and earlier L4T release, when processing multi-channel high-resolution video data, the system may report error like below:
NvRmChannelSubmit: NvError_IoctlFailed with error code 22 NvRmPrivFlush: NvRmChannelSubmit failed (err = 196623, SyncPointIdx = 29, SyncPointValue = 0) NvRmPrivFlush: NvRmChannelSubmit failed (err = 196623, SyncPointIdx = 29, SyncPointValue = 0) NvRmPrivFlush: NvRmChannelSubmit failed (err = 196623, SyncPointIdx = 29, SyncPointValue = 0)
The reason is in R32.2.1 and earlier L4T release, dma mask is 32 bit for host1x context device. This causes NVDEC, NVENC, VIC, DLA... can only allocate 4GB dma buffer in total. Apply patch can fix this issue. The patch is merged in L4T R32.2.2.
Failed to use headless mode oem-config feature on Jetson platform
When using headless mode oem-config, suggest to use putty or screen on host to open tty device to config device, e.g. below command:
$ sudo screen /dev/ttyACM0 115200
By default, headless mode uses tty device enumerated by USB port which is used to flash device. In this case, the tty device node should be /dev/ttyACMx on host.
Please keep USB cable connected during the whole headless mode oem-config phase, or config will fail and system may ask you to login directly but no valid account is created.
How to create user account on Jetson platform.
Prefer to use the below commands to create new user account on Jetson platform.
sudo adduser <user_name>
Or
sudo useradd <user_name> -m -s /bin/bash sudo passwd <user_name> sudo usermod -a -G video <user_name>
The new user account need to be added to video group(adduser does it automatically), or the account may have issue when using CUDA related SDK like TensorRT.
How to flash specific partition on Jetson platform
Jetson platform's partition information stores at Linux_for_Tegra/bootloader/flash.xml in Jetson BSP package. The flash.xml is automatically generated when running flash.sh. The template to generate flash.xml defines in xxxx.conf (jeton-tx2.conf for example) by item EMMC_CFG=xxxxxx.xml.
Check Linux_for_Tegra/bootloader/flash.xml can get the partition name of each binary file. For example, search "cboot.bin" in Jetson TX2's flash.xml, we can get both partitions "cpu-bootloader" and "cpu-bootloader_b" contain it. So we should run below commands to update cboot.bin.
sudo ./flash.sh -k cpu-bootloader jetson-tx2 mmcblk0p1 sudo ./flash.sh -k cpu-bootloader_b jetson-tx2 mmcblk0p1
Official document describes "Flashing a Specific Partition" locates here
Ethernet issue on Jetson TX2
The Broadcom Ethernet PHY used on Jetson TX2 has issue when Energy-Efficient Ethernet(EEE) enabled. Apply patch and enable CONFIG_EQOS_DISABLE_EEE kernel config, or user may meet some kinds of Ethernet issue (long delay, link down, transfer stuck or something else). The patch is merged in L4T R32.3.
Jetson TX2/NX ethernet LED indicators
How to config wake up pin on Jetson Nano
How to config wake up pin on Jetson Xavier
sdcard/sdhci tips
How to control GPIO pins
Take Jetson AGX Xavier as an example, Let's say we want to control pin GPIO17.
0. Make sure GPIO17 pinmux is configured as GPIO not SFIO. How to check pinmux setting 1. By checking Jetson AGX Xavier pinmux configuration template, we know that GPIO17 is actually GPIO3_PQ.01. GPIO_3 means TEGRA194_MAIN_GPIO. 2. By checking code hardware/nvidia/soc/t19x/kernel-include/dt-bindings/gpio/tegra194-gpio.h, we know TEGRA194_MAIN_GPIO(Q, 1) equals 16 * 8 + 1 = 129. 3. By "cat /sys/devices/2200000.gpio/gpio/gpiochip288/base" we get base is 288. So GPIO17 is actually gpio417 in Linux(288 + 129 = 417). 4. Run "echo 417 > /sys/class/gpio/export" to export gpio417. 5. Get direction: "cat /sys/class/gpio/gpio417/direction"; Set direction: "echo in > /sys/class/gpio/gpio417/direction", "echo out > /sys/class/gpio/gpio417/direction" 6. Get value: "cat /sys/class/gpio/gpio417/value"; Set value: "echo 0 > /sys/class/gpio/gpio417/value", "echo 1 > /sys/class/gpio/gpio417/value"