HDMI object detection on an ARK Just a Jetson carrier with a SiMa.ai Modalix SoM and an IMX219 CSI camera.
Live object detection uses IMX219 analog-binned 1640×1232 8-bit RGGB (SiMa’s ARM ISP has no imx219.yaml and its NV12 is not usable). Frames are demosaiced, cropped to 1280×720, then run through SiMa.ai Palette plugins (simaaiencoder → simaaidecoder → CVU → MLA YOLOv8n → boxdecode). Boxes are drawn with cairooverlay (SiMa overlay2 / simaairender reject this decoder’s caps).
IMX219 RGGB 1640×1232 ──► bayer2rgb ──► NV12 1280×720
│
┌─────────────────────┤
▼ ▼
cairooverlay simaaiencoder
HDMI ximagesink │
▲ simaaidecoder
└──── boxdecode ◄── CVU/MLA YOLOv8n
Override exposure/gain with JAJ_EXPOSURE, JAJ_AGAIN. Live frames are grabbed in C (jaj-grab: black-level 16, 2× gain, 2×2 demosaic) so HDMI stays around camera rate instead of GStreamer bayer2rgb. Preview-only (no MLA) is jaj-demo camera. The looping-clip path is jaj-demo video-detect.
- ARK Just a Jetson + Modalix 16G SoM
- IMX219 on CAM0 (J28). Ribbon blue tab toward the PCB — reversed cables I2C-NACK.
- HDMI monitor (the SoM SM768 GPU, currently 3840×1080 on the lab unit)
- eLxr image with
ark-jaj.dtboapplied (meta-ark-simaai)
Board login: sima / edgeai (default 192.168.7.50).
From meta-ark-simaai:
BOARD=sima@192.168.7.50 PASSWORD=edgeai ./scripts/deploy-jaj-dtbo.sh --rebootAfter reboot:
cat /proc/device-tree/model
# ARK Just a Jetson with SiMa Modalix SoM
cam -l
# 1: (imx219 6-0010)
Needs the YOLOv8n ELF from SiMa’s multichannel sample (not stored in git):
# if you already ran: sima-cli install gh:sima-ai/pipeline-multichannel
export SIMA_WORK=$HOME/sima-work
BOARD=sima@192.168.7.50 PASSWORD=edgeai ./scripts/deploy.sh --autologin--autologin logs XFCE in as sima on HDMI so the desktop launchers are clickable.
Drop a promo clip on the board (H.264 MP4, 1280×720 preferred):
scp promo.mp4 sima@192.168.7.50:/opt/ark-jaj-demo/share/media/loop.mp4If SIMA_WORK contains SiMa’s videos-720p16/video01.mp4, deploy copies that as the default loop.
Desktop (HDMI): double-click JAJ SiMa Demo. A 1280×720 (then fullscreen) window should open. SiMa’s IPA prints [ERROR] Uploaded calibration offsets successfully — that line is a false alarm.
That starts live IMX219 → SiMa YOLOv8n → labeled boxes on HDMI. JAJ SiMa Video Detect runs the same MLA pipeline on the looping clip.
From SSH (once XFCE is on :0):
ssh sima@192.168.7.50
/opt/ark-jaj-demo/bin/jaj-demo detect # camera if present, else clip
/opt/ark-jaj-demo/bin/jaj-demo camera-detect
/opt/ark-jaj-demo/bin/jaj-demo video-detect
/opt/ark-jaj-demo/bin/jaj-demo camera # no MLA, preview only
/opt/ark-jaj-demo/bin/jaj-demo stopLogs: /tmp/jaj-demo.log.
This launcher is the HDMI / camera path. The upstream 16-channel Vision AI demo (YOLOv9/v8/v7 + pose, OptiView UI) still runs as SiMa documents it:
- Host RTSP:
cd $SIMA_WORK/multivideo-sources-scripts && ./mediasrc.sh ../videos-720p16 - On the board (after
sima-cli install -v 2.0.0 samples/multichannelandsima-cli install optiview):optiview - Browser: OptiView on the board IP, launch
pipeline-multichannel
Out-of-box portal (16-ch + LLiMa): https://docs.sima.ai/pages/overview/hello_sima/out_of_box.html
bin/jaj-demo HDMI launcher
bin/jaj-yolo-overlay.py SiMa YOLOv8n + cairo overlay on the looping clip
bin/jaj-cam-preview.c live IMX219 analog-bin preview
share/sima/ YOLOv8n JSON + coco.names (ELF installed by deploy)
desktop/*.desktop XFCE launchers
systemd/jaj-demo.service optional boot start
scripts/deploy.sh
MIT. The YOLOv8n .elf and sample MP4s are SiMa.ai assets — obtain them with sima-cli / Palette; they are not redistributed here.