OpenLogi Features by Connection Type: Complete Guide to Bolt, Unifying, Bluetooth, and Wired Support
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, 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, 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 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 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, 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 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 |
Parses Bolt registers, manages device discovery, and provides unique ID resolution |
| Logi Unifying | crates/openlogi-hidpp/src/receiver/unifying.rs |
Implements Unifying-specific register maps and receiver protocol handling |
| Bluetooth / Wired | crates/openlogi-hid/src/write.rs |
Sends HID++ commands over raw HID interfaces for direct connections |
| CLI Interface | 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 |
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 handles transport detection automatically:
# 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, Unifying incrates/openlogi-hidpp/src/receiver/unifying.rs, and direct connections utilizecrates/openlogi-hid/src/write.rs. - Consistent CLI interface: The
openlogicommand 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 and unifying.rs), while Bluetooth and wired connections in 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 and 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 treat wired devices identically to wireless ones, routing HID++ commands through 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 with USB PID 0xC548 detection, Unifying by crates/openlogi-hidpp/src/receiver/unifying.rs with PID 0xC52B, and Bluetooth/wired connections by crates/openlogi-hid/src/write.rs using raw HID interfaces. The CLI layer in main.rs queries these backends to determine available capabilities such as battery monitoring.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →