NVIDIA Jetson Orin Nano Super (67 TOPS) vs Raspberry Pi 5 AI HAT+ (26 TOPS) & IMX500 AI Camera: Edge VLM & Vision Benchmark
Side-by-side edge hardware benchmark: when to use Raspberry Pi 5 + Sony IMX500 on-sensor NPU / Hailo-8 26 TOPS (4.8W–9.6W ultra-low power vision) versus Jetson Orin Nano Super 25W mode (102 GB/s LPDDR5 running Qwen3-4B & Qwen2.5-VL at 31.4 tok/s).
NVIDIA Jetson Orin Nano Super 8GB (JetPack 6.2 · 25W MAXN_SUPER · 102 GB/s) vs Raspberry Pi 5 8GB + AI HAT+ 26 TOPS (Hailo-8) + Raspberry Pi AI Camera (Sony IMX500)
IMX500 `.rpk` firmware, Hailo `.hef` weights, and Ollama GGUF models load strictly from local NVMe/SD storage.
- Raspberry Pi AI Camera (Sony IMX500) runs MobileNet/YOLOv8n directly inside the camera sensor with 0% Pi CPU load, but its 8MB on-sensor SRAM cannot run LLMs or heavy VLMs.
- Jetson Orin Nano Super shares 8GB LPDDR5 between Ubuntu and CUDA; leaving the GNOME desktop enabled consumes ~1.1GB RAM and causes `cudaMalloc` OOM when loading 4B+ models unless switched to headless `multi-user.target`.
1. Architectural Divide: Sensor/NPU Offload (Pi 5) vs 102 GB/s Unified CUDA (Jetson Super)
| Edge Hardware Stack | Memory Bandwidth | YOLOv8s (640x640) FPS | Qwen3-4B / 3B Decode | Measured Wall Power |
|---|---|---|---|---|
| Pi 5 (8GB) + AI Camera (Sony IMX500) | 17 GB/s (Pi CPU) | 30 FPS (On-Sensor NPU, 0% CPU) | 8.9 tok/s (Qwen2.5-3B on CPU) | 4.8 W ( Vision ) / 10.6 W ( +LLM ) |
| Pi 5 (8GB) + AI HAT+ 26 TOPS (Hailo-8) | 17 GB/s + PCIe 3.0 x1 | 58 FPS (Hailo-8 NPU, 9% CPU) | 8.8 tok/s (Qwen2.5-3B on CPU) | 13.4 W (NPU + CPU active) |
| Jetson Orin Nano Super 8GB (15W Mode) | 68 GB/s (Throttled) | 64 FPS (TensorRT FP16) | 21.8 tok/s (Qwen3-4B Q4_K_M) | 14.6 W |
| Jetson Orin Nano Super 8GB (25W MAXN_SUPER) | 102 GB/s (LPDDR5) | 92 FPS (TensorRT INT8/FP16) | 31.4 tok/s (Qwen3-4B Q4_K_M) | 22.4 W |
2. Unlocking Jetson Orin Nano Super 25W Mode & Reclaiming 1.1GB Unified RAM
# === [A] On NVIDIA Jetson Orin Nano Super (JetPack 6.2) === # 1. Switch to 25W MAXN_SUPER mode and lock clocks: sudo nvpmodel -m 2 sudo jetson_clocks # 2. Reclaim ~1.1GB unified RAM from Ubuntu desktop & flush page cache: sudo systemctl isolate multi-user.target sync && echo 3 | sudo tee /proc/sys/vm/drop_caches # 3. Run Qwen3-4B with Q8_0 KV Cache fit cleanly inside 6.4GB usable budget: OLLAMA_FLASH_ATTENTION=1 OLLAMA_KV_CACHE_TYPE=q8_0 ollama run qwen3:4b-q4_K_M # === [B] On Raspberry Pi 5 + Official AI Camera (Sony IMX500) === # Install IMX500 firmware models and run on-sensor MobileNetSSD at 30 FPS (0% CPU): sudo apt update && sudo apt install -y imx500-all rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/imx500_mobilenet_ssd.json
3. Decision Rule: When to Pick Pi 5 + IMX500/AI HAT+ vs Jetson Orin Nano Super
Frequently Asked Questions & Edge Cases
Q: Can an existing Jetson Orin Nano 8GB Developer Kit be upgraded to the 67 TOPS "Super" spec?
Yes! The hardware silicon on the original Jetson Orin Nano 8GB Dev Kit is identical. Flashing or upgrading to **JetPack 6.2+** (L4T R36.4.3+) unlocks the `MAXN_SUPER` (25W) power profile in `nvpmodel`, boosting AI compute from 40 TOPS to 67 TOPS and memory bandwidth from 68 GB/s to 102 GB/s via software.
Q: What is the difference between Raspberry Pi AI HAT+ 13 TOPS (Hailo-8L) and 26 TOPS (Hailo-8)?
The 13 TOPS version uses the Hailo-8L chip, while the 26 TOPS version uses the full Hailo-8 chip. On single-camera YOLOv8s detection, both exceed 30 FPS easily; the 26 TOPS Hailo-8 shines when running multi-camera streams or chaining two models simultaneously (e.g., YOLOv8m detection + Pose/Re-ID) at ~2x higher throughput.
NVIDIA Jetson Orin Nano Super (25W 67 TOPS) Memory Reclaim & Edge VLM Bootstrap
Switches Jetson Orin Nano Super to 25W MAXN_SUPER mode, reclaims ~1.1GB unified RAM from GNOME desktop, drops page cache, and benchmarks Qwen3-4B / Qwen2.5-VL.
#!/usr/bin/env bash
# Tinker AI — Jetson Orin Nano Super (JetPack 6.2 · 67 TOPS) Edge AI Verifier (Guide #22)
set -euo pipefail
MODE_ID="2"
MODEL="qwen3:4b-q4_K_M"
CTX="4096"
echo "=== [1/4] Verifying JetPack Power Profile (Target: Mode $MODE_ID / 25W MAXN_SUPER) ==="
if command -v nvpmodel >/dev/null 2>&1; then
sudo nvpmodel -m "$MODE_ID" || true
sudo nvpmodel -q
sudo jetson_clocks --show | head -n 8 || true
fi
echo "=== [2/4] Unified 8GB LPDDR5 Memory & Page Cache Audit ==="
free -h
echo "Reclaiming Linux page cache before CUDA allocation..."
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
echo "Tip: Run 'sudo systemctl isolate multi-user.target' to free ~1.1GB from Ubuntu GDM3/GNOME."
echo "=== [3/4] Running Deterministic CUDA Benchmark ($MODEL @ num_ctx=$CTX) ==="
curl -sS http://127.0.0.1:11434/api/generate -d "{
\"model\": \"$MODEL\",
\"prompt\": \"/no_think Summarize 3 sensor anomalies from a warehouse AMR robot in JSON format.\",
\"stream\": false,
\"options\": { \"num_ctx\": $CTX, \"temperature\": 0, \"seed\": 42 }
}" | python3 -c "
import sys, json
d = json.load(sys.stdin)
ec = d.get('eval_count', 0)
ed = d.get('eval_duration', 1) / 1e9
print(f'Jetson CUDA Decode Rate: {ec/ed:.2f} tokens/sec ({ec} tokens)')
"
echo "=== [4/4] Active GPU Memory & Thermal Headroom ==="
ollama ps
cat /sys/devices/virtual/thermal/thermal_zone0/temp 2>/dev/null | awk '{printf "SoC Temp: %.1f C\n", $1/1000}' || true