These scripts build and flash an image for 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 host other than Ubuntu 22.04?
setup.shandbuild.shrun themselves inside a 22.04 docker image, and install docker through apt if it is missing. docs/build_host.md explains why the build is pinned 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.
If you only want the stock image, flash a prebuilt package. Each release has one for every carrier, with the same image that ARK's bundles ship with.
Connect the Jetson to a Debian or Ubuntu host over USB, and boot it into recovery by holding the Force Recovery button while you power it on. Then run:
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
The script flashes the QSPI bootloader and writes the rootfs to NVMe. One package covers every Orin Nano and NX module variant. packaging/README.md has the details.
To customize the image, build it from source as described below.
Download the BSP, root filesystem and kernel source tarballs. You only need to do this once.
./setup.sh
Build the image for your carrier:
./build.sh PAB
- The target is
PAB,JAJ,PAB_V3orall. - By default a build stages
staging/{TARGET}/again from scratch and provisions the image, which preinstalls ARK-OS and tooling. To add your own packages to the image, editprovision.sh. --fastreuses the staged tree and only recompiles the kernel and device tree. Use it for quick changes after a full build.--no-provisionbuilds a bare image without ARK-OS.--cleanand--provisionare still accepted, but they are the default now.
You can put a WiFi profile into the image before you flash it:
./scripts/add_wifi_network.sh PAB YourNetworkName YourPassword
Or add the network later, over the USB connection:
ssh jetson@jetson.local
sudo nmcli dev wifi connect YourNetworkName password YourPassword
Connect the carrier's USB port to your PC, then power the Jetson on with the Force Recovery button held.
./flash.sh PAB
flash.sh writes to NVMe by default. For other storage, add a flag:
./flash.sh PAB --sdcard # SD card (NVIDIA dev kit modules)
./flash.sh PAB --usb # USB thumb drive
When the flash finishes, log 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 IMX219 cameras work on the first boot. PAB has the quad overlay, and JAJ and PAB_V3 have the dual. To use a different camera, select its overlay with NVIDIA's jetson-io tool. First list what is 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
Then apply one by name and reboot:
sudo /opt/nvidia/jetson-io/config-by-hardware.py -n 2="Camera IMX477 Quad"
sudo reboot
docs/cameras.md lists the supported sensors and shows how to test and stream a camera. docs/camera_overlays.md shows how to build, install or write your own camera overlay.
| Page | Covers |
|---|---|
| docs/cameras.md | Supported sensors, streaming, and known issues |
| docs/camera_overlays.md | Build, install, and author camera device-tree overlays |
| docs/hadron.md | FLIR Hadron EO camera: driver, overlays, capture, demo and frame sync |
| docs/argus_relaunch_regression.md | The JetPack 6.2.2 Argus regression and the camera stack pin that fixes it |
| 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/power.md | Power modes, clock speeds, and measured power draw |
| docs/kernel_development.md | Manual kernel builds and device tree changes |
| docs/device-tree.md | Where a device-tree change belongs, and how the build applies ARK's changes |
| docs/qspi_bootloader.md | Flashing only the QSPI bootloader |
| docs/build_host.md | Why the build pins to Ubuntu 22.04 |