The example consists of two primary applications:
Camera App (chip-camera-app): This application functions as the Matter accessory. It captures and encodes a video feed, making it available for streaming over a WebRTC connection. It is typically run on a device with a camera, such as a Raspberry Pi.
Camera Controller (chip-camera-controller): This application acts as the client. It commissions the Camera App onto the Matter network, discovers it, and receives and displays the video stream.
Before building, you must install the necessary GStreamer libraries and development packages, which are used for video processing and streaming.
sudo apt update sudo apt install \ gstreamer1.0-plugins-base \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad \ gstreamer1.0-libav \ libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev
source scripts/activate.sh
Follow the build instructions from examples/camera-app/linux/README.md
You can either build the applications for a local Linux machine or cross-compile them for a Raspberry Pi.
Option A: Build for a Local Linux (x86_64)
This is the simplest method for testing the camera pipeline on a single Linux computer.
# Navigate to the examples directory cd examples/camera-controller/ # Compile the Linux x86‑64 camera‑controller target ./scripts/build/build_examples.py \ --target linux-x64-camera-controller \ build
The resulting executable is placed in:
out/linux-x64-camera-controller/chip-camera-controller.
Option B: Cross-Compile for Raspberry Pi (arm64)
To run an application on a Raspberry Pi, you must cross-compile it from an x86_64 host machine. The recommended method is to use the provided Docker build environment to ensure all dependencies are correct.
docker pull ghcr.io/project-chip/chip-build-crosscompile:150
docker run -it -v ~/connectedhomeip:/var/connectedhomeip ghcr.io/project-chip/chip-build-crosscompile:150 /bin/bash
cd /var/connectedhomeip # Required to fix git repository ownership issues inside Docker git config --global --add safe.directory /var/connectedhomeip git config --global --add safe.directory /var/connectedhomeip/third_party/pigweed/repo # Run the build script for the Raspberry Pi (arm64) target ./scripts/run_in_build_env.sh \ "./scripts/build/build_examples.py \ --target linux-arm64-camera-controller-clang \ build"
# The binary path on your host machine # out/linux-arm64-camera-controller-clang/chip-camera-controller # SCP command to transfer the file scp ./out/linux-arm64-camera-controller-clang/chip-camera-controller ubuntu@<RASPBERRY_PI_IP_ADDRESS>:/home/ubuntu
After building the applications using Option A, you can run the full end-to-end example on your Linux machine. You will need two separate terminal windows.
Terminal 1: Start the Camera App (Device)
Clean up any existing configurations (first-time pairing only):
sudo rm -rf /tmp/chip_*
./out/linux-x64-camera/chip-camera-app --camera-deferred-offer
Terminal 2: Launch and Use the Camera Controller (Client)
./out/linux-x64-camera-controller/chip-camera-controller
onnetwork: Specifies pairing over the local IP network.
pairing onnetwork 1 20202021
Wait for the command to complete and confirm that commissioning was successful.
liveview start 1
Wave your hand in front of the camera to trigger live view; a video window will appear, confirming that the stream is active.