# What Logitech Devices Are Supported by OpenLogi? A Complete Hardware Compatibility Guide

> Discover which Logitech devices work with OpenLogi. This guide details compatibility for mice, keyboards, and webcams like MX Master, G series, Brio, and StreamCam via Bolt, Bluetooth, or USB.

- Repository: [Xuan Zhang/OpenLogi](https://github.com/AprilNEA/OpenLogi)
- Tags: hardware-compatibility-guide
- Published: 2026-09-09

---

**TLDR:** OpenLogi supports all Logitech mice and keyboards implementing the HID++ protocol—including the MX Master and G series—plus any Logitech UVC-compliant webcams such as the Brio, StreamCam, and C920 series, connecting via Bolt/Unifying receivers, Bluetooth, or wired USB according to the AprilNEA/OpenLogi source code.

OpenLogi is an open-source Rust framework designed to unlock advanced hardware capabilities in Logitech peripherals. Understanding exactly **what Logitech devices are supported by OpenLogi** is essential for developers building automation tools for gaming setups, streaming rigs, or enterprise workstation management.

## Supported Device Categories

According to the [`README.md`](https://github.com/AprilNEA/OpenLogi/blob/main/README.md) in the repository root, OpenLogi specifically targets devices communicating over the **HID++ protocol** and the **UVC standard**. The core abstraction layer in [`crates/openlogi-core/src/device.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-core/src/device.rs) categorizes these peripherals through the `DeviceKind` enum, distinguishing between mice, keyboards, and lighting devices.

### HID++ Mice (MX Master, G Pro, G502)

Any Logitech mouse utilizing the HID++ protocol is fully supported. The documentation explicitly notes that features such as **DPI adjustment**, **SmartShift** (electromagnetic wheel switching), and per-application button remapping work automatically. The hardware interface implementation in [`crates/openlogi-core/src/device.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-core/src/device.rs) exposes these capabilities through standardized feature flags, meaning devices from the MX Master lineage to the G Pro X Superlight are compatible.

### HID++ Keyboards (MX Keys, G915)

Keyboard support follows the same HID++ enumeration pattern. Models including the MX Keys family, MX Mechanical, and G915 are recognized by the receiver abstraction layers. The system queries device capabilities through the **HID++ feature index** system, allowing key remapping and backlight control without manufacturer-specific drivers.

### UVC Webcams (Brio, StreamCam, C920 Series)

Beyond input devices, OpenLogi supports video hardware through the standard **USB Video Class (UVC)** protocol. The internationalization documentation in [`docs/README.de.md`](https://github.com/AprilNEA/OpenLogi/blob/main/docs/README.de.md) and parallel language files explicitly lists compatible models: the Logitech **Brio**, **StreamCam**, and **C920 series**. These integrate through `crates/openlogi-hid` (which handles UVC descriptors) and are accessible via the `UvcDevice` interface without requiring proprietary Logitech webcam drivers.

## Connection Methods and Receiver Support

Device connectivity is abstracted through multiple receiver implementations located in `crates/openlogi-hidpp/src/receiver/`:

- **[`unifying.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/unifying.rs)** – Implements the legacy Unifying receiver protocol for older nano receivers.
- **[`bolt.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/bolt.rs)** – Handles the modern **Logi Bolt** receiver with enhanced security and latency.
- **[`bt.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/bt.rs)** – Manages direct Bluetooth HID++ connections for Bluetooth-native peripherals.
- **Wired USB** – Direct USB HID++ connections bypassing wireless receivers entirely.

The `DeviceRoute` enum in the IPC crate allows you to target specific connection paths when issuing commands programmatically.

## Source Code Architecture

The hardware abstraction relies on two critical components:

1. **[`crates/openlogi-device-registry/src/lib.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-device-registry/src/lib.rs)** – Maintains a registry of known Logitech product IDs and their corresponding HID++ capability flags. This enables the system to map raw USB descriptors to specific feature sets (e.g., identifying whether a mouse supports high-resolution scrolling).
2. **[`crates/openlogi-cli/src/main.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-cli/src/main.rs)** – Provides the command-line interface for device enumeration and diagnostics, utilizing the registry to display human-readable device names.

## Practical Implementation Examples

You can verify device support and control hardware using the following patterns.

**List all connected Logitech devices via the CLI:**

```bash
cargo run -p openlogi-cli -- list

```

**Adjust DPI settings on a supported mouse:**

```rust
use openlogi_ipc::{OpenLogiClient, DeviceRoute, Dpi};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut client = OpenLogiClient::new().await?;
    // Target a mouse on the Bolt receiver at index 0, device index 0
    let route = DeviceRoute::Bolt { 
        receiver_index: 0, 
        device_index: 0 
    };
    let new_dpi = Dpi { low: 800, high: 1600 };
    client.set_dpi(route, new_dpi).await?;
    Ok(())
}

```

**Initialize a Logitech UVC webcam:**

```rust
use openlogi_hid::UvcDevice;

fn initialize_camera() -> Result<UvcDevice, openlogi_hid::Error> {
    // Discovers Brio, StreamCam, C920, or other Logitech UVC devices
    UvcDevice::open_first()
}

```

## Summary

- **HID++ Mice:** All models including MX Master series and G Pro variants are supported with full feature access (DPI, SmartShift, remapping).
- **HID++ Keyboards:** MX Keys, G915, and other modern Logitech keyboards work via HID++ feature indices.
- **UVC Webcams:** Brio, StreamCam, and C920 series are explicitly supported through the standard UVC interface.
- **Connection Flexibility:** Devices connect via Bolt receivers, Unifying receivers, Bluetooth-direct, or wired USB according to `crates/openlogi-hidpp/src/receiver/` implementations.
- **Programmatic Control:** Use `OpenLogiClient` with `DeviceRoute` to target specific receivers and adjust hardware settings.

## Frequently Asked Questions

### Does OpenLogi support older Logitech devices using the Unifying receiver?

Yes. The [`crates/openlogi-hidpp/src/receiver/unifying.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hidpp/src/receiver/unifying.rs) implementation specifically handles legacy Unifying receivers, ensuring compatibility with older peripherals like the MX Revolution or K800 while still exposing modern HID++ features.

### Can OpenLogi control Logitech webcams that are not UVC-compliant?

No. The source code in `crates/openlogi-hid` and the documentation in [`docs/README.de.md`](https://github.com/AprilNEA/OpenLogi/blob/main/docs/README.de.md) confirm that only **UVC-class webcams** are supported. Older Logitech cameras requiring proprietary QuickCam drivers are incompatible with the `UvcDevice` interface.

### Is Bluetooth-only mode supported for Logitech peripherals without a USB receiver?

Yes. The [`crates/openlogi-hidpp/src/receiver/bt.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hidpp/src/receiver/bt.rs) module implements direct Bluetooth HID++ transport, allowing devices such as the MX Keys Mini or MX Master 3S (Bluetooth variants) to function without any USB receiver attached.

### How does OpenLogi identify which specific Logitech model is connected?

The library queries the device registry defined in [`crates/openlogi-device-registry/src/lib.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-device-registry/src/lib.rs), which maps USB vendor and product IDs to capability flags. If a device is not explicitly listed in the registry, the system falls back to generic HID++ feature detection in [`crates/openlogi-core/src/device.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-core/src/device.rs), ensuring basic functionality for unlisted but compliant hardware.