Jetson Thor Type‑C Video Issue – Beijing

Hello, our company uses the Jetson-Thor Developer Kit with a Type-C port connected to a USB hub to expand two web cameras. Every time the Thor is powered on again, the Type-C-extended camera cannot be seen in /dev/video*. For one Thor, it only works after being plugged in and out again. For another Thor, sometimes it takes a few minutes to be recognized after being plugged in and out again. And for another Thor, it cannot be recognized even after being plugged in and out again (using the official power supply of the Jetson-Thor Developer Kit).

Hi,
Do you use Jetpack 7.1 and observe the issue? And please try the type-A ports. Would like to know if it is specific to the type-C port + hub, or also occurs when connecting the cameras to type-A ports.

Yes, it has been updated to the latest version 7.1. The type-A port is normal. The type-C port is using the one on the side. If I switch to the one in the middle, all three devices fail to recognize it.

I once had a lot of trouble with a usb camera. It turned out to be that usbguard.service and usbguard-dbus.service had locked down the ability to have system talk to the camera. If you’ve usbguard installed, a test would be to “sudo systemctl stop usbguard usbguard-dbus” and see if the issue is resolved.

If not here’s a generic way to create a udev rule.

Identify your cameras.

v4l2-ctl --list-devices
udevadm info --query=property --name=/dev/video0

The fields most useful for rules are usually:
ID_PATH
ID_SERIAL
ID_VENDOR_ID
ID_MODEL_ID


Change cam_front, cam_rear to your use case.

sudo nano /etc/udev/rules.d/99-webcams.rules

SUBSYSTEM=="video4linux", KERNEL=="video*", ENV{ID_PATH}=="platform-3610000.usb-usb-0:1.3:1.0", ENV{ID_V4L_CAPABILITIES}==":capture:", SYMLINK+="cam_front"

SUBSYSTEM=="video4linux", KERNEL=="video*", ENV{ID_PATH}=="platform-3610000.usb-usb-0:1.4:1.0", ENV{ID_V4L_CAPABILITIES}==":capture:", SYMLINK+="cam_rear"

If the cameras have unique serial numbers use that instead for the 99-webcam.rules.
if "udevadm info --query=property --name=/dev/video{0,?} shows unique ID_SERIAL_SHORT or ID_SERIAL

SUBSYSTEM=="video4linux", KERNEL=="video*", ENV{ID_SERIAL_SHORT}=="ABC12345", ENV{ID_V4L_CAPABILITIES}==":capture:", SYMLINK+="cam_front"

SUBSYSTEM=="video4linux", KERNEL=="video*", ENV{ID_SERIAL_SHORT}=="XYZ67890", ENV{ID_V4L_CAPABILITIES}==":capture:", SYMLINK+="cam_rear"

Then apply your rules:

sudo udevadm control --reload-rules
sudo udevadm trigger /dev/video0
sudo udevadm trigger /dev/video2

ls -l /dev/cam_front /dev/cam_rear # or what you named the symlink.

Test them

v4l2-ctl --device=/dev/cam_front --all
v4l2-ctl --device=/dev/cam_rear --all

Hi,
Please refer to
Using 3 USB 2.0 cameras with a Jetson Thor - #3 by DaneLLL

The type-C port on AGX Thor developer kit is in device mode by default. Please modify device tree to run in host mode.

I performed the following operations based on the reference:
dtc -I dtb -O dts -o /tmp/tmp.dts /boot/dtb/kernel_tegra264-p4071-0000+p3834-0008-nv.dtb
Then, modify the following content of tmp.dts:
ports {
usb2-0 {
mode = “peripheral”;
usb-role-switch;
role-switch-default-mode = “peripheral”;
status = “okay”;
};
to
usb2-0 {
mode = “host”;
status = “okay”;
};
Then,
dtc -I dts -O dtb -o /tmp/kernel_tegra264-p4071-0000+p3834-0008-nv.dtb /tmp/tmp.dts
And then,
sudo cp /tmp/kernel_tegra264-p4071-0000+p3834-0008-nv.dtb /boot/dtb/
And then,
Put the line to /boot/extlinux/extlinux.conf:

FDT /boot/dtb/kernel_tegra264-p4071-0000+p3834-0008-nv.dtb
And then,reboot.
In the end, my issue remained unresolved. Neither of the two Type-C ports could recognize the extended hub, and neither the webcam nor the mouse were recognized.

I haven’t installed usbguard.And the USB Hub with Type-C inserted cannot be recognized, so the extension cannot connect to the webcam. And my USB Hub is work on other computer.

Hi,
Please check device tree and see if the configuration is applied:

nvidia@tegra-ubuntu:~$ ls /proc/device-tree/bus@0/padctl@a808680000/ports/usb2-0
nvidia@tegra-ubuntu:~$ xxd /proc/device-tree/bus@0/padctl@a808680000/ports/usb2-0/mode

ubuntu@localhost:/$ ls /proc/device-tree/bus@0/padctl@a808680000/ports/usb2-0
mode name status
ubuntu@localhost:/$ xxd /proc/device-tree/bus@0/padctl@a808680000/ports/usb2-0/mode
00000000: 686f 7374 00 host.

Hi,
We can run it successfully on AGX Thor developer kit:

[  656.820065] usb 2-2: new SuperSpeed USB device number 3 using tegra-xusb
[  656.849198] hub 2-2:1.0: USB hub found
[  656.849909] hub 2-2:1.0: 4 ports detected
[  656.967523] usb 1-1: new high-speed USB device number 10 using tegra-xusb
[  657.125904] hub 1-1:1.0: USB hub found
[  657.127001] hub 1-1:1.0: 4 ports detected
[  657.200071] usb 2-2.4: new SuperSpeed USB device number 4 using tegra-xusb
[  657.407404] usbcore: registered new device driver onboard-usb-hub
[  657.407965] usb 2-2.4: USB disconnect, device number 4
[  657.553600] hub 2-2:1.0: USB hub found
[  657.554553] hub 2-2:1.0: 4 ports detected
[  657.564155] hub 2-2:1.0: USB hub found
[  657.565043] hub 2-2:1.0: 4 ports detected
[  657.660989] hub 1-1:1.0: USB hub found
[  657.661636] hub 1-1:1.0: 4 ports detected
[  657.672207] hub 1-1:1.0: USB hub found
[  657.673280] hub 1-1:1.0: 4 ports detected
[  657.690338] usbcore: registered new device driver r8152-cfgselector
[  657.690374] usbcore: registered new interface driver r8152
[  657.695055] usbcore: registered new interface driver cdc_ether
[  657.696291] usbcore: registered new interface driver r8153_ecm
[  657.856065] usb 2-2.4: new SuperSpeed USB device number 5 using tegra-xusb
[  657.968444] r8152-cfgselector 2-2.4: reset SuperSpeed USB device number 5 using tegra-xusb
[  658.044909] r8152 2-2.4:1.0: Direct firmware load for rtl_nic/rtl8153a-4.fw failed with error -2
[  658.044965] r8152 2-2.4:1.0: unable to load firmware patch rtl_nic/rtl8153a-4.fw (-2)
[  658.127588] r8152 2-2.4:1.0 eth0: v1.12.13
[  658.127790] r8152-cfgselector 2-2.4: USB disconnect, device number 5
[  658.324020] usb 2-2: reset SuperSpeed USB device number 3 using tegra-xusb
[  658.644331] usb 2-2.4: new SuperSpeed USB device number 6 using tegra-xusb
[  658.756570] r8152-cfgselector 2-2.4: reset SuperSpeed USB device number 6 using tegra-xusb
[  658.828067] r8152 2-2.4:1.0: Direct firmware load for rtl_nic/rtl8153a-4.fw failed with error -2
[  658.828095] r8152 2-2.4:1.0: unable to load firmware patch rtl_nic/rtl8153a-4.fw (-2)
[  658.891881] r8152 2-2.4:1.0 eth0: v1.12.13
[  658.986808] r8152 2-2.4:1.0 enx00e04c680193: renamed from eth0
[  666.051953] usb 2-2.1: new SuperSpeed USB device number 7 using tegra-xusb
[  666.110180] usb 2-2.1: current rate 16000 is different from the runtime rate 24000
[  666.124930] usb 2-2.1: current rate 16000 is different from the runtime rate 32000
[  666.139554] usb 2-2.1: current rate 16000 is different from the runtime rate 48000
[  666.191530] input: Logitech BRIO Consumer Control as /devices/platform/bus@0/a80aa10000.usb/usb2/2-2/2-2.1/2-2.1:1.5/0003:046D:085E.0004/input/input10
[  666.247784] hid-generic 0003:046D:085E.0004: input,hidraw3: USB HID v1.11 Device [Logitech BRIO] on usb-a80aa10000.usb-2.1/input5
[  666.273385] usb 2-2.1: Found UVC 1.00 device Logitech BRIO (046d:085e)
[  666.296987] usbcore: registered new interface driver uvcvideo
[  666.413205] usb 2-2.1: current rate 16000 is different from the runtime rate 48000
[  666.437454] usb 2-2.1: current rate 16000 is different from the runtime rate 48000
[  666.459323] usb 2-2.1: current rate 16000 is different from the runtime rate 48000

Please ensure you use 5a port:
Jetson AGX Thor FAQ

Yes,I try both 5a and 5b port it not work in this Thor. By the way, as previously described, before modifying the device tree, two Thor could recognize Type-C, both 5b ports worked, but 5a port never worked.

I tried again and found that the 5a port could recognize the webcam through the Type-C USB Hub. It also worked after rebooting. However, after powering off and restarting Thor, it stopped working again. Even unplugging and replugging the USB Hub didn’t help.

Hi,
By default the port runs in device mode. This is a quick way to enable it as host mode. If you need a full-function type-c port, would need to follow design guide to design a custom board.