Skip to content

Nvidia Orin Setup

This guide covers provisioning a Nvidia Jetson Orin module as a Consystence edge device.

Hardware specifications

Spec Value
Module Nvidia Jetson Orin
JetPack 6.1
OS Ubuntu 22.04 (L4T)
RAM 7.6 GB
Storage 233 GB eMMC
GPU Ampere (for TensorRT inference)

Network configuration

Edge devices are dual-homed with two network interfaces:

Interface Purpose Network
WiFi (wlan0) Workshop LAN / upstream to site server DHCP from site network
Ethernet (eth0) Dedicated PLC link Static: 192.168.1.0/24

The PLC Ethernet interface must not become the default route — all upstream traffic (gRPC to site server, NTP, updates) goes over WiFi.

Configure with NetworkManager

Set the PLC Ethernet connection to never use its gateway as the default route:

# Set static IP on PLC Ethernet
sudo nmcli connection modify "Wired connection 1" \
  ipv4.method manual \
  ipv4.addresses 192.168.1.10/24 \
  ipv4.never-default true

# Restart the connection
sudo nmcli connection down "Wired connection 1"
sudo nmcli connection up "Wired connection 1"

Warning

The ipv4.never-default true setting is critical. Without it, the PLC subnet gateway may become the default route, cutting off connectivity to the site server.

Verify routing

# Default route should be via WiFi
ip route show default
# Expected: default via 10.0.0.1 dev wlan0 ...

# PLC subnet should be via Ethernet
ip route show 192.168.1.0/24
# Expected: 192.168.1.0/24 dev eth0 ...

# Test PLC connectivity
ping -c 3 192.168.1.1

Install .NET 10

JetPack includes Docker but not the .NET SDK. Install .NET using the official install script (user-scoped, no sudo required):

# Download and run the install script
curl -sSL https://dot.net/v1/dotnet-install.sh | bash -s -- --channel 10.0

# Add to PATH in ~/.bashrc
echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools' >> ~/.bashrc
source ~/.bashrc

# Verify
dotnet --version

Tip

The user-scoped install keeps the system Python and JetPack tooling untouched. No sudo required.

Install the edge service

Clone and build the edge device service:

git clone https://github.com/consystence/consystence-edge.git
cd consystence-edge
dotnet restore
dotnet build -c Release

Configure the edge service

Create the configuration file:

cp appsettings.example.json appsettings.json

Edit appsettings.json with your site server address and PLC details:

{
  "SiteServer": {
    "Url": "https://site-server.local:5000",
    "EdgeId": "orin-north-01"
  },
  "Plc": {
    "Protocol": "ab_eip",
    "Gateway": "192.168.1.1",
    "Path": "1,0",
    "PollIntervalMs": 100
  }
}

Run the edge service

dotnet run -c Release

For production, register as a systemd service:

sudo cp consystence-edge.service /etc/systemd/system/
sudo systemctl enable consystence-edge
sudo systemctl start consystence-edge

Docker (alternative)

JetPack ships with Docker pre-installed. You can run the edge service in a container:

docker run -d --name consystence-edge \
  --network host \
  --runtime nvidia \
  -v /path/to/appsettings.json:/app/appsettings.json \
  consystence/edge:latest

The --network host flag is required for direct access to the PLC Ethernet interface. The --runtime nvidia flag enables GPU access for TensorRT inference.