blob: 8b5429a58a4f9afcc79630a6ffb53298bb4f6b8b [file] [log] [blame] [view]
# CHIP Linux Camera Example App
An example application showing the use of a CHIP Camera on the Linux platform.
The document will describe how to build and run the CHIP Linux Camera Example on
Linux.
---
- [Building the Example Application](#building-the-example-application)
---
## Building the Example Application
### 1. Prerequisites
Before building, you must install the necessary GStreamer, FFmpeg, curl
libraries and development packages, which are used for video processing,
streaming, recording and uploading.
```
sudo apt update
sudo apt install \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libavcodec-dev \
libavformat-dev \
libavutil-dev \
libcurl4-openssl-dev
```
### 2. Building
1. Initialize the Build Environment This command configures your shell with the
necessary build tools. You only need to run this once per terminal session.
```
source scripts/activate.sh
```
2. Build the Camera App (Device)
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-app/
# Compile the Linux x86‑64 camera‑app target
./scripts/build/build_examples.py \
--target linux-x64-camera \
build
```
The resulting executable is placed in:
```
out/linux-x64-camera/chip-camera-app.
```
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.
1. Pull the Cross-Compilation Docker Image
```
docker pull ghcr.io/project-chip/chip-build-crosscompile:167
```
2. Run the Docker Container This command starts an interactive shell inside the
container and mounts your local connectedhomeip repository into the
container's /var/connectedhomeip directory.
```
docker run -it -v ~/connectedhomeip:/var/connectedhomeip ghcr.io/project-chip/chip-build-crosscompile:167 /bin/bash
```
3. Build Inside the Container From within the Docker container's shell, execute
the build script.
```
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-clang \
build"
```
4. Transfer the Binary to the Raspberry Pi After the build completes, exit the
Docker container. The compiled binary will be available on your host machine
in the out/ directory. Use scp to copy it to your Raspberry Pi.
```
# The binary path on your host machine
# out/linux-arm64-camera-clang/chip-camera-app
# SCP command to transfer the file
scp ./out/linux-arm64-camera-clang/chip-camera-app ubuntu@<RASPBERRY_PI_IP_ADDRESS>:/home/ubuntu
```