Scripts for building and flashing a Jetson Orin Nano or Orin NX on an ARK Jetson Carrier.
| Component | Version |
|---|---|
| JetPack | 6.2.2 |
| L4T (BSP) | R36.5.0 |
| Kernel | Linux 5.15 |
| Host OS | Ubuntu 22.04 |
Building on a non-22.04 host?
setup.shandbuild.shauto-containerize themselves in a 22.04 docker image (docker is auto-installed via apt if missing). See docs/build_host.md for why we pin to 22.04.
| Target | Carrier Board | Docs |
|---|---|---|
PAB |
ARK Jetson PAB Carrier | docs |
JAJ |
ARK Just a Jetson Carrier | docs |
PAB_V3 |
ARK Jetson PAB V3 Carrier | docs |
Note: PAB Rev3 is a hardware revision of the PAB and uses
PAB. PAB_V3 is a separate product.
Just want the stock image? Each release ships a ready-to-flash package per carrier — the same image bundles ship with. On a Debian/Ubuntu host, with the Jetson connected over USB and booted into recovery (hold the Force Recovery button while powering on):
curl -LO https://raw.githubusercontent.com/ARK-Electronics/ark_jetson_kernel/main/packaging/flash_from_package.sh
chmod +x flash_from_package.sh
./flash_from_package.sh pab # or jaj / pab-v3, or a specific tag like pab-6.2.2.4
No build tools or kernel source needed. Flashes the QSPI bootloader and the rootfs to NVMe; one package covers every Orin Nano/NX module variant. See packaging/README.md for details.
To customize the image instead, build from source:
Download the BSP, root filesystem, and kernel source tarballs (one time):
./setup.sh
./build.sh PAB
- Targets are
PAB,JAJ,PAB_V3, orall. - By default a build re-stages
staging/{TARGET}/from scratch and provisions the image — it preinstalls ARK-OS and tooling. To bake in your own packages, editprovision.sh. --fastreuses the existing staged tree and just recompiles the kernel/device tree, for quick iteration after a full build.--no-provisionbuilds a bare image (no ARK-OS).--cleanand--provisionare still accepted but are the default now.
Bake a WiFi profile into the image before flashing:
./scripts/add_wifi_network.sh PAB YourNetworkName YourPassword
Or add it later over the USB connection:
ssh jetson@jetson.local
sudo nmcli dev wifi connect YourNetworkName password YourPassword
Connect to the USB port, then power on with the Force Recovery button held.
./flash.sh PAB
By default flash.sh targets NVMe. Other storage layouts:
./flash.sh PAB --sdcard # SD card (NVIDIA dev kit modules)
./flash.sh PAB --usb # USB thumb drive
When flashing completes, SSH in over Micro USB or WiFi:
ssh jetson@jetson.local
Tip: Run
ssh-copy-id jetson@jetson.localonce so you don't type the password on every connection.
Tip: Run
./scripts/add_ssh_config.shonce to add ajetsonhost to your~/.ssh/config. Thenssh jetsonworks, and reflashing won't trip the "REMOTE HOST IDENTIFICATION HAS CHANGED" warning.
Every carrier ships with an IMX219 overlay already selected, so cameras work out of the box: the quad overlay on PAB, the dual overlay on JAJ and PAB_V3. To use a different camera, select an overlay with NVIDIA's jetson-io tool. List what's available:
sudo /opt/nvidia/jetson-io/config-by-hardware.py -l
Header 1 [default]: Jetson 40pin Header
...
Header 2: Jetson 22pin CSI Connector
Available hardware modules:
1. Camera IMX219 Quad
2. Camera IMX477 Quad
3. Camera IMX708 Quad
Apply one and reboot:
sudo /opt/nvidia/jetson-io/config-by-hardware.py -n 2="Camera IMX477 Quad"
sudo reboot
See docs/cameras.md for supported sensors and how to verify and stream a camera, and docs/camera_overlays.md to build, install, or write a custom camera overlay.
-
docs/cameras.md — supported sensors, streaming, and known issues
-
docs/camera_overlays.md — build, install, and author camera device-tree overlays
-
docs/gpio.md — 40-pin / I2S header GPIO and boot-time pad defaults
-
docs/i2c.md — I2C bus map and scanning
-
docs/servo_expander.md — PWM / servo output via the ARK Servo Expander (PCA9685) over I2C
-
docs/10gbe_ethernet.md — Auvidea M20E 10GbE adapter
-
docs/share_wifi.md — share the host PC's WiFi with the Jetson over USB
-
docs/performance.md — clock speeds and Super Mode
-
docs/kernel_development.md — manual kernel builds and device tree changes
-
docs/build_host.md — why the build pins to Ubuntu 22.04