Quick Start
This guide gets you from checkout to discovering cameras in minutes.
Prerequisites
- Rust: MSRV 1.75+ (toolchain pinned via
rust-toolchain.toml). - OS: Windows, Linux, or macOS.
- Network (GigE Vision):
- Allow UDP broadcast on the NIC you’ll use for discovery.
- Optional: enable jumbo frames on that NIC for high‑throughput streaming tests.
Build & Test
# From the repo root:
cargo build --workspace
# Run all tests
cargo test --workspace
# Generate local API docs (rustdoc)
cargo doc --workspace --no-deps
First run: Discovery examples
You can try discovery in two ways—either via the high‑level genicam crate example or the gencamctl CLI.
Option A: Example (genicam crate)
# List cameras via GVCP broadcast\ n cargo run -p genicam --example list_cameras
Option B: CLI (gencamctl)
# Discover cameras on the selected interface (IPv4 of your NIC)
cargo run -p gencamctl -- list --iface 192.168.0.5
Control path: read / write & XML
# Read a feature by name
cargo run -p gencamctl -- get --ip 192.168.0.10 --name ExposureTime
# Set a feature value
cargo run -p gencamctl -- set --ip 192.168.0.10 --name ExposureTime --value 5000
# Fetch minimal XML metadata via control path (example)
cargo run -p genicam --example get_set_feature
Streaming (early GVSP)
# Receive a GVSP stream, auto‑negotiate packet size, save first two frames
cargo run -p gencamctl -- stream --ip 192.168.0.10 --iface 192.168.0.5 --auto --save 2
Windows specifics
- Run the terminal as Administrator the first time to let the firewall prompt appear.
- Add inbound UDP rules for discovery and streaming.
- Enable jumbo frames per NIC if your network supports it (helps at high FPS).
Next steps
- Read the Primer for the concepts behind discovery, control, and streaming.
- Jump to the Tutorial: Discover devices for a step‑by‑step walkthrough with troubleshooting tips.