Skip to main content

ICAM-540 Dev

View source on GitHub

This guide walks you through booting an Avocado OS development environment on the Advantech ICAM-540. The runtime comes pre-installed with the Basler Pylon camera SDK, GStreamer, OpenCV, and hardware debugging tools.

Prerequisites

  • macOS 10.12+ or Linux (Ubuntu 22.04+, Fedora 39+)
  • Docker Desktop installed and running
  • The latest version of the Avocado CLI
  • Advantech ICAM-540
  • SD card or USB cable for provisioning
  • Basler industrial camera (GigE or USB3)

Initialize

Clone the reference or initialize a new project from it:

avocado init --reference icam-540 icam-540
cd icam-540

Install

Install the SDK toolchain, extension dependencies, and runtime packages:

avocado install -f

Build

Build the runtime image:

avocado build

There are no compile steps in this reference — the build assembles the runtime from pre-built packages and extensions.

Deploy

Provision and flash the ICAM-540:

avocado provision -r dev --profile sd

Insert the SD card into the ICAM-540 and apply power.

Verify

Log in as root with an empty password. SSH access is enabled by default.

Verify the camera is detected:

# List USB devices
lsusb

# Check V4L2 devices
v4l2-ctl --list-devices

# Scan I2C buses
i2cdetect -l

Test a GStreamer pipeline with a Basler camera:

# Capture a single JPEG frame
gst-launch-1.0 pylonsrc num-buffers=1 ! jpegenc ! filesink location=/tmp/test.jpg

# Stream MJPEG over UDP
gst-launch-1.0 pylonsrc ! nvvidconv ! nvjpegenc ! multipartmux ! tcpserversink port=5000

Test OpenCV:

python3 -c "import cv2; print(cv2.getBuildInformation())"

Customize

Add packages

Edit avocado.yaml to add packages under the app extension:

  app:
version: 0.1.0
packages:
gst-plugin-pylon: '*'
opencv: '*'
python3-pygobject: '*' # add GStreamer Python bindings
cuda-cudart: '*' # add CUDA runtime

Add application code

Create an app/ directory with source code, overlays, and build scripts following the pattern from other references (e.g., python-gstreamer-yolo).

Rebuild after changes

After any change, rebuild and reprovision:

avocado build
avocado provision -r dev --profile sd