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
| Function | HID++ fn | Signature | Returns |
|---|---|---|---|
listen | event | () | Receiver<WirelessDeviceStatusEvent> |
listen is synchronous and returns an async_channel::Receiver<WirelessDeviceStatusEvent> directly (via the EmittingFeature trait).
Events
WirelessDeviceStatusEvent
| Variant | Payload | Description |
|---|---|---|
StatusBroadcast | WirelessDeviceStatusBroadcast | Emitted whenever a device (re)connects to the host. Always enabled. |
WirelessDeviceStatusBroadcast
| Field | Type | Description |
|---|---|---|
status | WirelessDeviceStatus | The status the device reports. |
request | WirelessDeviceStatusRequest | What the device asks of the host. |
reason | WirelessDeviceStatusReason | Why the broadcast was sent. |
WirelessDeviceStatus
| Variant | Value | Description |
|---|---|---|
Unknown | 0x00 | Unknown wireless device status. |
Reconnection | 0x01 | Device is reconnecting. |
WirelessDeviceStatusRequest
| Variant | Value | Description |
|---|---|---|
NoRequest | 0x00 | No host action requested. |
SoftwareReconfigurationNeeded | 0x01 | Host software must reconfigure the device. |
WirelessDeviceStatusReason
| Variant | Value | Description |
|---|---|---|
Unknown | 0x00 | Unknown broadcast reason. |
PowerSwitchActivated | 0x01 | Broadcast 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):
| Byte | Field | Type | Values |
|---|---|---|---|
| 0 | status | WirelessDeviceStatus | 0x00 = Unknown, 0x01 = Reconnection |
| 1 | request | WirelessDeviceStatusRequest | 0x00 = NoRequest, 0x01 = SoftwareReconfigurationNeeded |
| 2 | reason | WirelessDeviceStatusReason | 0x00 = 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);
}
}
}0x1C00 · persistentRemappableAction
Non-volatile control remapping — read or write per-control, per-host action assignments (keys, mouse buttons, consumer codes, internal functions) stored in device memory.
0x2001 · swapLeftRightButton
Swap the primary and secondary mouse buttons at the firmware level — making the device behave as a left-handed mouse without any OS-level remapping.