# OpenLogi Features by Connection Type: Complete Guide to Bolt, Unifying, Bluetooth, and Wired Support

> Discover OpenLogi features for Bolt, Unifying, Bluetooth, and wired connections. Learn how battery monitoring works exclusively for wireless receivers.

- Repository: [Xuan Zhang/OpenLogi](https://github.com/AprilNEA/OpenLogi)
- Tags: how-to-guide
- Published: 2026-08-21

---

**OpenLogi supports an identical core feature set across Logi Bolt, Unifying, Bluetooth, and wired USB connections, with battery monitoring available exclusively for wireless receiver connections.**

OpenLogi is an open-source configuration tool for Logitech HID++ devices that abstracts transport-layer differences to provide unified device management. Whether your mouse or keyboard connects via a **Logi Bolt** receiver (USB PID `0xC548`), a **Logi Unifying** receiver (USB PID `0xC52B`), direct **Bluetooth**, or **wired USB**, the application exposes the same configuration capabilities through a consistent CLI interface.

## Core Features Available on All Connection Types

OpenLogi implements a device-agnostic feature layer that operates identically regardless of physical connection method. According to the source code in [`crates/openlogi-core/src/action.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-core/src/action.rs), the following capabilities are available across all four transport types:

- **Button remapping** with OS-level input hooks
- **Per-application profile overlays** for context-sensitive configurations
- **DPI preset management** and cycle actions (HID++ feature `0x2201`)
- **SmartShift wheel mode** and ratchet control (HID++ feature `0x2111`)
- **Native scroll inversion** settings (HID++ feature `0x2121`)
- **Per-direction gesture bindings** for advanced input mapping
- **Actions Ring overlay** for quick command access
- **Litra light control** including power, brightness, and color temperature adjustments

The uniformity of this feature set is enforced by the abstraction layer in [`crates/openlogi-hid/src/write.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hid/src/write.rs), which sends standardized HID++ commands directly over raw HID interfaces for both Bluetooth-paired and USB-cabled devices.

## Connection-Specific Capabilities and Limitations

While core functionality remains constant, battery status reporting varies by connection type according to the device firmware's reporting behavior.

### Logi Bolt Receiver (USB PID 0xC548)

Devices connected through the Logi Bolt receiver receive full feature support plus **battery percentage and charging state monitoring**. The Bolt-specific implementation in [`crates/openlogi-hidpp/src/receiver/bolt.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hidpp/src/receiver/bolt.rs) handles device discovery, register parsing, and unique ID management for paired peripherals. This connection type provides the most complete information set, including real-time power statistics.

### Logi Unifying Receiver (USB PID 0xC52B)

The Unifying receiver mirrors the Bolt implementation exactly, offering the same core feature set and **battery monitoring capabilities**. The source file [`crates/openlogi-hidpp/src/receiver/unifying.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hidpp/src/receiver/unifying.rs) contains the Unifying-specific register map and protocol logic. Both receivers implement the identical HID++ protocol stack, ensuring feature parity between Bolt and Unifying hardware.

### Bluetooth Direct Connection

Bluetooth-connected devices support the complete feature catalogue excluding battery information. As implemented in [`crates/openlogi-hid/src/write.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hid/src/write.rs), the direct HID interface transmits configuration commands effectively, but the device firmware reports battery status exclusively through receiver protocols rather than over Bluetooth LE. Users can remap buttons, adjust DPI, and configure SmartShift, but cannot view charge percentages.

### Wired USB Connection

Wired connections provide the full feature set without battery monitoring, as the device draws power directly from the USB cable. The command dispatch mechanism in [`crates/openlogi-hid/src/write.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hid/src/write.rs) treats wired devices identically to Bluetooth devices, sending raw HID++ packets over the USB HID interface. All configuration options including Litra light control and gesture bindings function identically to wireless modes.

## Source Code Architecture by Transport Type

OpenLogi organizes connection handling into specialized modules that abstract transport differences while exposing a unified API:

| Connection Type | Implementation File | Primary Function |
|-----------------|---------------------|------------------|
| **Logi Bolt** | [`crates/openlogi-hidpp/src/receiver/bolt.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hidpp/src/receiver/bolt.rs) | Parses Bolt registers, manages device discovery, and provides unique ID resolution |
| **Logi Unifying** | [`crates/openlogi-hidpp/src/receiver/unifying.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hidpp/src/receiver/unifying.rs) | Implements Unifying-specific register maps and receiver protocol handling |
| **Bluetooth / Wired** | [`crates/openlogi-hid/src/write.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hid/src/write.rs) | Sends HID++ commands over raw HID interfaces for direct connections |
| **CLI Interface** | [`crates/openlogi-cli/src/main.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-cli/src/main.rs) | Exposes `list`, `diag`, and `set` commands that query connection metadata and battery status |
| **Feature Dispatch** | [`crates/openlogi-core/src/action.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-core/src/action.rs) | Defines the action catalogue (button remap, DPI, SmartShift) dispatched regardless of transport |

## Practical CLI Usage Examples

The following commands operate identically across all connection types. The CLI entry point in [`crates/openlogi-cli/src/main.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-cli/src/main.rs) handles transport detection automatically:

```bash

# Enumerate all devices and display connection types

openlogi list

# Dump HID++ feature registers for the active device

openlogi diag features

# Remap button 5 to Ctrl+Tab shortcut

openlogi set button 5 action "Ctrl+Tab"

# Configure DPI preset level 2 to 1200 DPI

openlogi set dpi 2 1200

# Enable SmartShift wheel mode

openlogi set smartshift enable

```

These commands function whether the target device attaches via Bolt, Unifying, Bluetooth, or wired USB, as the underlying transport abstraction normalizes all HID++ communication.

## Summary

- **Universal feature parity**: Button remapping, DPI control (`0x2201`), SmartShift (`0x2111`), scroll inversion (`0x2121`), gestures, Actions Ring, and Litra light control work identically across Bolt, Unifying, Bluetooth, and wired connections.
- **Battery monitoring constraints**: Only Logi Bolt and Unifying receivers report battery percentage and charging state; Bluetooth and wired connections lack this capability due to firmware reporting limitations.
- **Implementation files**: Bolt logic resides in [`crates/openlogi-hidpp/src/receiver/bolt.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hidpp/src/receiver/bolt.rs), Unifying in [`crates/openlogi-hidpp/src/receiver/unifying.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hidpp/src/receiver/unifying.rs), and direct connections utilize [`crates/openlogi-hid/src/write.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hid/src/write.rs).
- **Consistent CLI interface**: The `openlogi` command set abstracts connection differences, allowing seamless device management regardless of transport method.

## Frequently Asked Questions

### Does OpenLogi support battery monitoring for all connection types?

No. Battery percentage and charging state are only available for devices connected through **Logi Bolt** or **Logi Unifying** receivers. The source code explicitly handles battery queries in the receiver-specific modules ([`bolt.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/bolt.rs) and [`unifying.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/unifying.rs)), while Bluetooth and wired connections in [`write.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/write.rs) lack battery reporting capabilities because the device firmware does not expose power statistics over these transports.

### Is the feature set identical between Bolt and Unifying receivers?

Yes. According to the repository's implementation, both receivers use the identical HID++ protocol stack. The [`bolt.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/bolt.rs) and [`unifying.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/unifying.rs) files implement the same register parsing and device discovery logic, ensuring that button remapping, DPI settings, SmartShift configuration, and Litra light control function identically across both receiver types.

### Can I configure a wired Logitech mouse with OpenLogi?

Yes. Wired USB connections support the complete feature set including button remapping, DPI presets, and gesture bindings. The CLI commands in [`crates/openlogi-cli/src/main.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-cli/src/main.rs) treat wired devices identically to wireless ones, routing HID++ commands through [`crates/openlogi-hid/src/write.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hid/src/write.rs). However, battery information is unavailable for wired connections since the device receives power through the USB cable.

### How does the source code differentiate between connection types?

OpenLogi uses transport-specific abstraction layers. **Bolt** connections are handled by [`crates/openlogi-hidpp/src/receiver/bolt.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hidpp/src/receiver/bolt.rs) with USB PID `0xC548` detection, **Unifying** by [`crates/openlogi-hidpp/src/receiver/unifying.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hidpp/src/receiver/unifying.rs) with PID `0xC52B`, and **Bluetooth/wired** connections by [`crates/openlogi-hid/src/write.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/crates/openlogi-hid/src/write.rs) using raw HID interfaces. The CLI layer in [`main.rs`](https://github.com/AprilNEA/OpenLogi/blob/main/main.rs) queries these backends to determine available capabilities such as battery monitoring.