AprilNEA/OpenLogi · error

no Logitech camera found

Error message

no Logitech camera found

What it means

The `openlogi camera` CLI needs a camera unique id; when the user does not pass one, it takes the first camera from `openlogi_camera::enumerate_cameras()`. If enumeration returns nothing, there is no default to act on and the command fails with `no Logitech camera found`.

Solutions

  1. Plug in a Logitech camera (directly, not through a hub) and re-run the command.
  2. Pass the device explicitly: `openlogi camera --camera <unique-id> ...`.
  3. On macOS, grant Camera permission to the terminal/OpenLogi (System Settings > Privacy & Security > Camera) and retry.
  4. Verify enumeration with a plain camera listing to confirm the device is detected as a Logitech UVC device.

Example fix

// before
$ openlogi camera get
no Logitech camera found
// after
$ openlogi camera get --camera BREC100-1234ABCD
Defensive patterns

Strategy: validation

Validate before calling

let cams = openlogi_camera::enumerate_cameras();
if cams.is_empty() {
    eprintln!("no Logitech camera detected; connect one or pass --camera <id>");
    std::process::exit(1);
}

Try / catch

match enumerate_cameras().into_iter().next() {
    Some(cam) => run_with(&cam.unique_id),
    None => { eprintln!("no Logitech camera found — check connection and Camera permission"); std::process::exit(1); }
}

Prevention

When it happens

Trigger: Running any `openlogi camera` subcommand without `--camera <id>` (or equivalent) on a machine where `enumerate_cameras()` yields zero Logitech UVC devices.

Common situations: No Logitech webcam is plugged in; the camera is attached through a dock/hub that hid it; on macOS the terminal or OpenLogi lacks Camera permission so enumeration sees nothing; the device is a non-Logitech webcam and thus filtered out.

Understand the failure class

Background: "Not found" and "does not exist" errors: why "Task not found", "No such folder", and "Can't find" fire when a lookup comes back empty — this error's family across 14 libraries.

Related errors


AI-assisted analysis of AprilNEA/OpenLogi@e846e6f4b4 (2026-09-13). Data as JSON: /api/errors/bcc310ccaf899eac. Report an issue: GitHub.

Appendix: source

Thrown at crates/openlogi-cli/src/cmd/camera.rs:44

    /// device.
    Set {
        /// zoom | focus | exposure | power_line_frequency |
        /// low_light_compensation | brightness | contrast | saturation |
        /// sharpness | white_balance | tint, or focus_auto | exposure_auto |
        /// white_balance_auto
        control: String,
        value: i32,
    },
}

pub fn run(args: CameraArgs) -> Result<()> {
    let uid = match args.camera {
        Some(id) => id,
        None => openlogi_camera::enumerate_cameras()
            .into_iter()
            .next()
            .map(|c| c.unique_id)
            .ok_or_else(|| anyhow!("no Logitech camera found"))?,
    };

    match args.cmd.unwrap_or(CameraCmd::Get) {
        CameraCmd::Get => {
            println!("controls for {uid}:");
            match openlogi_camera::read_camera_state(&uid) {
                Ok(state) if !state.controls.is_empty() => {
                    for (control, r) in &state.controls {
                        println!(
                            "  {}: min={} max={} default={} current={}",
                            control.name(),
                            r.min,
                            r.max,
                            r.default,
                            r.current
                        );
                    }
                    for (toggle, st) in &state.autos {

View on GitHub (pinned to e846e6f4b4)