Networking#

On Jetson Devkits we assume there are two network interfaces available for enabling camera based systems. The built-in RJ-45 is for internet connection, and another one (via USB Ethernet dongle) is used to communicate with camera devices through a connected PoE switch (see hardware setup for AI-NVR app). Jetson has a systemd service jetson-networking to setup these two interfaces. On Jetson AGX Orin RJ-45 interface is named eno1, and on Orin Nx/Nano for consistency JPS also renames RJ-45 interface as eno1 from enP8p1s0. You will need to reboot your Orin Nx/Nano after installing JPS package so the change can be applied. On Orin series the USB ethernet interface should be named in a predictable way as explained in https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ . In the example below the predictable network interface name is enx00808e8f9137.

enx00808e8f9137: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
      inet 192.168.100.1  netmask 255.255.255.0  broadcast 192.168.100.255
      inet6 fe80::2e0:4cff:fe36:8f1f  prefixlen 64  scopeid 0x20<link>
      ether 00:e0:4c:36:8f:1f  txqueuelen 1000  (Ethernet)
      RX packets 156532  bytes 9721380 (9.7 MB)
      RX errors 0  dropped 0  overruns 0  frame 0
      TX packets 16287  bytes 707010 (707.0 KB)
      TX errors 0  dropped 0 overruns 0  carrier 0  collisions

eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
      inet 192.168.0.33  netmask 255.255.255.0  broadcast 192.168.0.255
      inet6 fe80::4ab0:2dff:fe81:4ad8  prefixlen 64  scopeid 0x20<link>
      ether 48:b0:2d:81:4a:d8  txqueuelen 1000  (Ethernet)
      RX packets 332785  bytes 36237215 (36.2 MB)
      RX errors 0  dropped 0  overruns 0  frame 0
      TX packets 157048  bytes 11475164 (11.4 MB)
      TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Before enabling jetson-networking service you need to edit /opt/nvidia/jetson-configs/jetson-camif.conf and replace the eth1 with the correct camera interface name on your system, e.g. enx00808e8f9137.

# Camerinterfaces
# List the camera interfaces as a Bash arrry, ex:
# CAMERA_INTERFACES=("PoE0" "PoE1" "PoE2")
CAMERA_INTERFACES=("eth1")

If you are using a 3rd party platform built with Jetson Orin module, the system might have multiple Ethernet interfaces for cameras. Please consult with the platform vendor for the camera interface names. NVIDIA suggests platform vendor to rename camera interfaces through udev like below so the interface names will be persistent accross reboots.

ACTION=="add", SUBSYSTEM=="net", KERNELS=="0005:03:00.0", NAME:="PoE0"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0005:04:00.0", NAME:="PoE1"
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0005:05:00.0", NAME:="PoE2"

In that case the jetson-camif.conf will look like:

CAMERA_INTERFACES=("PoE0" "PoE1" "PoE2")

Use the command below to enable jetson-networking service:

sudo systemctl enable jetson-networking

You will need to reboot the device so that related Network Manager configurations can be applied properly.

A DHCP server is running on the camera interface to provide IP addresses to the camera devices. The address pool starts from 192.168.100.150. You may check the IP address assignment by command dhcp-lease-list --lease /run/jetson/networking/jetson-dhcp-server.leases as shown below:

ubuntu@tegra-ubuntu:~$ dhcp-lease-list --lease /run/jetson/networking//jetson-dhcp-server.leases
To get manufacturer names please download http://standards.ieee.org/regauth/oui/oui.txt to /usr/local/etc/oui.txt
Reading leases from /run/jetson/networking//jetson-dhcp-server.leases
MAC                IP              hostname       valid until         manufacturer
===============================================================================================
00:00:1b:04:e5:13  192.168.100.151 -NA-           2023-11-27 05:49:46 -NA-
68:6d:bc:7d:7d:c7  192.168.100.150 DEFAULT        2023-11-27 05:45:29 -NA-

Note

On Jetson AGX Orin and Orin Nx it’s expected to use USB Ethernet adapter as the camera interface.

Note

Ensure the camera interface’s link is up before starting jetson-networking service, otherwsie the service might not able able to set up DHCP server.