OpenLogi
Features

0x1D4B · wirelessDeviceStatus

Event-only feature that fires a status broadcast when the wireless link changes — signalling reconnection and optionally requesting a host software reconfiguration.

An event-only feature: the device emits a status broadcast when its wireless link changes — typically on reconnection — and can ask the host software to reload its configuration.

OpenLogi listens for this so the GUI can refresh a device that wakes or re-pairs without a manual rescan.

Spec: Logitech HID++ 2.0 — x1d4b wirelessDeviceStatus (v0).

Function reference

WirelessDeviceStatusFeature (0x1D4B) is event-only — it has no request functions; the host subscribes and reacts to broadcasts.

Methods

FunctionHID++ fnSignatureReturns
listenevent()Receiver<WirelessDeviceStatusEvent>

listen is synchronous and returns an async_channel::Receiver<WirelessDeviceStatusEvent> directly (via the EmittingFeature trait).

Events

WirelessDeviceStatusEvent

VariantPayloadDescription
StatusBroadcastWirelessDeviceStatusBroadcastEmitted whenever a device (re)connects to the host. Always enabled.

WirelessDeviceStatusBroadcast

FieldTypeDescription
statusWirelessDeviceStatusThe status the device reports.
requestWirelessDeviceStatusRequestWhat the device asks of the host.
reasonWirelessDeviceStatusReasonWhy the broadcast was sent.

WirelessDeviceStatus

VariantValueDescription
Unknown0x00Unknown wireless device status.
Reconnection0x01Device is reconnecting.

WirelessDeviceStatusRequest

VariantValueDescription
NoRequest0x00No host action requested.
SoftwareReconfigurationNeeded0x01Host software must reconfigure the device.

WirelessDeviceStatusReason

VariantValueDescription
Unknown0x00Unknown broadcast reason.
PowerSwitchActivated0x01Broadcast was caused by the device power switch.

Wire format

This feature is event-only — the device sends unsolicited broadcasts; the host never sends a request payload. All broadcasts use sub-function index 0x00.

StatusBroadcast (event, sub-fn 0)

The device pushes a short HID++ message whose payload starts at the standard feature-event offset. The listener fires only when the sub-function nibble is 0.

Event payload (byte → field):

ByteFieldTypeValues
0statusWirelessDeviceStatus0x00 = Unknown, 0x01 = Reconnection
1requestWirelessDeviceStatusRequest0x00 = NoRequest, 0x01 = SoftwareReconfigurationNeeded
2reasonWirelessDeviceStatusReason0x00 = Unknown, 0x01 = PowerSwitchActivated

Bytes beyond index 2 are not read by the crate.

Usage (Rust)

use hidpp::{
    device::Device,
    feature::{EmittingFeature, wireless_device_status::{WirelessDeviceStatusEvent, WirelessDeviceStatusFeature}},
};

// let mut device = Device::new(Arc::clone(&channel), device_index).await?;
device.enumerate_features().await?;
if let Some(feat) = device.get_feature::<WirelessDeviceStatusFeature>() {
    let rx = feat.listen();
    while let Ok(event) = rx.recv().await {
        if let WirelessDeviceStatusEvent::StatusBroadcast(broadcast) = event {
            println!("status={:?} request={:?} reason={:?}",
                broadcast.status, broadcast.request, broadcast.reason);
        }
    }
}

On this page