Skip to content

fix(hidpp,hid,device): give capture a secondary software id on shared channels - #1451

Open
4ni1ak wants to merge 4 commits into
AprilNEA:masterfrom
4ni1ak:fix/channel-retire-capture-race
Open

4ni1ak wants to merge 4 commits into
AprilNEA:masterfrom
4ni1ak:fix/channel-retire-capture-race

Conversation

@4ni1ak

@4ni1ak 4ni1ak commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Capture reusing an inventory-owned HID++ channel (PR fix(agent): reuse inventory channels for input capture #522) reintroduces a
    correlation-key collision: both consumers share the channel's single leased
    software id, so capture's session-setup calls (device version probe, root
    getFeature for reprog controls/thumbwheel/wireless status) and
    inventory's own probing correlate on the exact same (device, feature, function, software_id) key. One queues behind the other's in-flight
    request on the wire, occasionally past either side's own 5s timeout —
    inventory then retires the channel it judges dead, and capture's session
    ends unexpectedly and re-arms on a fresh channel, matching the reports.
  • Leases a second software id per opened channel (best-effort — falls back to
    the single-id behavior when the pool is nearly exhausted) and gives a
    second, distinct in-process consumer a _secondary constructor that stamps
    its requests with it, so its correlation keys stop colliding with the
    channel's other consumer.

Changes

  • crates/openlogi-hidpp: SwIdPolicy::Leased carries an optional secondary
    leased id; HidppChannel::get_secondary_sw_id reads it (falling back to
    the primary id when absent). FeatureEndpoint/RootFeature/Device each
    gain a new_secondary/new_inner-backed constructor that stamps requests
    with the secondary id. protocol::determine_version_secondary mirrors
    determine_version for the version-probe request the secondary Device
    constructor sends.
  • crates/openlogi-hid: configure_channel_sw_ids leases a second id
    alongside the existing primary one for every opened channel.
  • crates/openlogi-device: session/gesture.rs's capture session setup now
    constructs its Device/RootFeature via the _secondary constructors,
    since its channel may be inventory-owned per fix(agent): reuse inventory channels for input capture #522.
  • The #[derive(Feature)] macro (openlogi-hidpp-derive) now generates a
    new_secondary for every creatable feature, not just Root/Device.
    ReprogControlsV4/Thumbwheel (crates/openlogi-device) gain their own
    new_secondary delegating to it, and arm_controls_into's CID-level
    divert/read traffic plus its capture_restore rollback counterpart now use
    them — closing the gap noted below. WirelessDeviceStatusFeature (hand-written,
    not derive-based) gets a new_secondary too, identical to new, since it
    only listens for broadcasts and has no outgoing correlation key to stamp.

Testing

  • cargo test -p openlogi-hidpp --lib channel:: — includes a new test,
    a_secondary_leased_sw_id_does_not_queue_behind_the_primary_ids_in_flight_request,
    that reproduces the collision with a parked-write mock transport (a request
    under the primary id stays in flight; a same-header request under the
    primary id would queue behind it, per the pre-existing
    a_request_waits_while_the_same_header_is_in_flight test) and proves a
    request stamped with the secondary id reaches the wire immediately instead.
    Verified this test fails without the fix (secondary id falling back to the
    primary one) and passes with it.
  • cargo fmt --all -- --check
  • RUSTFLAGS="-D warnings" cargo clippy --workspace --all-targets -- -D warnings
  • RUSTFLAGS="-D warnings" cargo test --workspace
  • RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps --document-private-items --exclude openlogi-ui --exclude openlogi-desktop --exclude openlogi-overlay --exclude openlogi-agent
  • Follow-up commit: affected-package tier (openlogi-hidpp-derive,
    openlogi-hidpp, openlogi-device, openlogi-agent, openlogi-cli,
    openlogi, openlogi-hid, openlogi-agent-core, openlogi-desktop) —
    cargo fmt --all -- --check, cargo clippy -p <those> --all-targets -- -D warnings, cargo test -p <those>; full-workspace clippy/rustdoc covered by
    the mandatory pre-push hook.
  • Not runtime-tested on hardware — the race depends on real HID++ radio/BLE
    timing this workstation cannot reproduce; the fix and test target the
    correlation-key mechanics directly, per the codebase's existing
    a_request_waits_while_the_same_header_is_in_flight precedent for the same
    class of bug (that one found cross-matched replies; [Bug]: Version 0.6.24 and newer: button mapping not working #1128's leased-id fix
    turned that into contention/timeouts instead, which is what this closes).

Known remaining gap (fixed)

arm_controls_into in session/gesture.rs used to construct
ReprogControlsV4/ThumbwheelFeature via their standard (primary-id)
CreatableFeature::new, so their CID-level divert/read traffic could still
collide with inventory's own reprog-controls probing on a shared channel. A
follow-up commit closes this: both wrappers gained their own
new_secondary, arm_controls_into and its capture_restore rollback
counterpart now use them, and WirelessDeviceStatusFeature gained a
new_secondary too (see Changes above).

Fixes #1128

… channels

PR AprilNEA#522 made input capture reuse an inventory-owned HID++ channel instead
of opening its own, but the channel's single leased software id still
assumed one exclusive consumer. Capture's session setup (device version
probe, root getFeature calls for reprog controls/thumbwheel/wireless
status) and inventory's own probing then correlate requests on the exact
same (device, feature, function, software id) key on a shared channel, so
one queues behind the other's in-flight request — occasionally past
either side's own timeout. Each side reads that as the other's channel
having died: inventory retires the channel it judges dead, and capture's
session ends unexpectedly and re-arms, matching AprilNEA#1128's reports.

Leases a second software id per shared channel (best-effort; falls back
to the single-id behavior when the pool is nearly exhausted) and gives
capture's `Device`/`RootFeature` construction a `_secondary` constructor
that stamps requests with it, so its correlation keys no longer collide
with inventory's own probe traffic.

Fixes AprilNEA#1128
@4ni1ak
4ni1ak requested a review from AprilNEA as a code owner September 17, 2026 03:33
@greptile-apps

greptile-apps Bot commented Sep 17, 2026

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

The PR appears safe to merge; no new issue was introduced after the previous review, and the prior findings are resolved.

Summary

This PR separates HID++ request correlation for two in-process consumers sharing one channel.

  • Best-effort leases a secondary software ID per opened HID++ channel while preserving primary-ID fallback under lease pressure.
  • Adds secondary-aware device, root, feature, reprog-controls, thumbwheel, and protocol constructors.
  • Routes capture setup, control arming, monitoring, and restoration through the secondary ID.
  • Adds regression coverage proving secondary-ID requests do not queue behind otherwise identical primary-ID requests.
  • No code changes were made after the previous review, and both previous threads are resolved.
Diagram
%%{init: {'theme': 'neutral'}}%%
flowchart LR
    A[Shared HID++ channel] --> B[Primary software ID]
    A --> C[Secondary software ID]
    B --> D[Inventory probing]
    C --> E[Capture setup and restoration]
    D --> F[Independent correlation key]
    E --> G[Independent correlation key]
    H[Secondary lease unavailable] --> I[Fall back to primary ID]
Loading

Reviews (4) · Last reviewed commit: "ci: retrigger after a transient sccache-..."

Comment thread crates/openlogi-device/src/session/gesture.rs
Comment thread crates/openlogi-hid/src/transport.rs
…y software id

The secondary-software-id fix for AprilNEA#1128 covered capture's session-setup
calls (device version probe, root getFeature for reprog
controls/thumbwheel/wireless status) but left arm_controls_into's
CID-level ReprogControlsV4/Thumbwheel traffic — and its capture_restore
rollback counterpart — on the primary id, so that traffic could still
collide with inventory's own reprog-controls probing on a shared
channel.

Adds `new_secondary` constructors for both wrapper types (delegating to
the underlying hidpp features' own `new_secondary`, now generated by
the `#[derive(Feature)]` macro for every creatable feature) and switches
arm_controls_into/capture_restore to them. WirelessDeviceStatusFeature
gets a `new_secondary` too, identical to `new`, since it only listens
for broadcasts and has no outgoing correlation key to stamp.
…ects

new_secondary's doc comment linked to FeatureEndpoint::new_secondary, which
is pub(crate) — resolvable only under --document-private-items, so the
public rustdoc job CI runs would have failed on it.
@thor27

thor27 commented Sep 17, 2026

Copy link
Copy Markdown

Hi!

Did some tophat here in my machine, the problem is gone, everything seems to be working fine!

Debug output:

2026-09-17T14:31:08.312061Z DEBUG openlogi_core::single_instance: single-instance lock acquired path=/home/thomaz/.config/openlogi/agent.lock
2026-09-17T14:31:08.313474Z DEBUG openlogi_agent::autostart::linux: systemd user unit already absent
2026-09-17T14:31:08.313514Z DEBUG openlogi_agent::autostart::linux: autostart enablement was not made by OpenLogi; leaving it alone
2026-09-17T14:31:08.314812Z  INFO openlogi_agent::server: IPC server listening
2026-09-17T14:31:08.315961Z  INFO openlogi_agent::lifecycle: openlogi-agent started
2026-09-17T14:31:08.316003Z  INFO openlogi_agent::lifecycle: accessibility granted — installing OS mouse hook
2026-09-17T14:31:08.316338Z  INFO openlogi_agent::overlay: helper started, pid 319986
2026-09-17T14:31:08.316397Z DEBUG openlogi_hook::linux: frontmost: session kind = Wayland
2026-09-17T14:31:08.317077Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0006 matched=false
2026-09-17T14:31:08.317120Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0002 matched=false
2026-09-17T14:31:08.317131Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0001 matched=false
2026-09-17T14:31:08.317139Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:08.317148Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:08.317156Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:08.317164Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:08.317172Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:08.317179Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:08.317915Z DEBUG openlogi_device::inventory: HID++ candidate interfaces count=1
2026-09-17T14:31:08.318220Z  INFO openlogi_agent::resume_linux: logind suspend/resume notifications registered
2026-09-17T14:31:08.318308Z DEBUG openlogi_hid::transport: opened HID++ channel name=Logitech USB Receiver vid=046d
2026-09-17T14:31:08.318801Z DEBUG openlogi_hook::linux::wlr_foreign_toplevel: wlr-foreign-toplevel: compositor does not advertise the protocol
2026-09-17T14:31:08.320391Z DEBUG openlogi_hook::linux::gnome_shell: gnome-shell: OpenLogi extension not reachable: org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable
2026-09-17T14:31:08.320525Z DEBUG openlogi_device::inventory::probe: receiver reports pairing count pairing_count=1
2026-09-17T14:31:08.320554Z DEBUG openlogi_hook::linux: not hooking /dev/input/event17 (Keychron Keychron Q3 HE 8K Mouse): not a Logitech device
2026-09-17T14:31:08.321683Z DEBUG openlogi_hook::linux: frontmost: using 'x11' backend
2026-09-17T14:31:08.321732Z DEBUG openlogi_hook::linux: frontmost: on Wayland but using the X11/XWayland backend; native Wayland windows will report None. Install the OpenLogi GNOME Shell extension (GNOME) or use a wlroots compositor.
2026-09-17T14:31:08.321815Z DEBUG RPC{rpc.deadline=2026-09-17T14:31:18.321719575Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: SendRequest
2026-09-17T14:31:08.321924Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:18.321808702Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:08.321942Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:18.321808702Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:08.321968Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:18.321808702Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:08.321986Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:18.321808702Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:08.322001Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:18.321808702Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:08.322030Z DEBUG RPC{rpc.deadline=2026-09-17T14:31:18.321719575Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: ReceiveResponse
2026-09-17T14:31:08.322035Z DEBUG openlogi_agent_core::watchers::foreground_app: foreground application changed value=None
2026-09-17T14:31:08.322050Z  INFO openlogi_overlay::agent: agent speaks protocol 31 and this overlay speaks 28 — exiting and releasing the Actions Ring overlay role
2026-09-17T14:31:08.322989Z  INFO openlogi_agent::overlay: helper exited exit status: 0 after 7.3ms
2026-09-17T14:31:08.323010Z  INFO openlogi_agent::overlay: waiting 4.0s before the next attempt
2026-09-17T14:31:08.324262Z DEBUG openlogi_device::inventory::probe: trigger_device_arrival failed; retrying once error=Protocol(Channel(Implementation(Other(Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }))))
2026-09-17T14:31:08.496965Z  INFO openlogi_agent_core::runtime::hook: OS input hook installed
2026-09-17T14:31:08.497023Z DEBUG openlogi_agent::lifecycle: state watcher channel closed source=Accessibility
2026-09-17T14:31:08.497036Z DEBUG openlogi_agent::lifecycle: state watcher channel closed source=InputMonitoring
2026-09-17T14:31:08.497042Z DEBUG openlogi_hook::linux: hook started on /dev/input/event13
2026-09-17T14:31:10.831948Z DEBUG openlogi_device::inventory::probe: drained device-arrival events events=1
2026-09-17T14:31:11.955968Z DEBUG openlogi_device::inventory::probe: unifying paired slot slot=3 online=true wpid=4082 kind=Mouse codename=Some("Wireless Mouse MX Master 3")
2026-09-17T14:31:11.957190Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0006 matched=false
2026-09-17T14:31:11.957232Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0002 matched=false
2026-09-17T14:31:11.957255Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0001 matched=false
2026-09-17T14:31:11.957274Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:11.957292Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:11.957322Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:11.957330Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:11.957337Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:11.957345Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:11.957491Z DEBUG openlogi_agent_core::orchestrator: device(s) require capture re-arm generation=1
2026-09-17T14:31:12.047823Z DEBUG openlogi_device::write::hires_wheel: wheel mode already set; skipping index=3 desired=ScrollWheelMode { resolution: High, inverted: false, target: Native }
2026-09-17T14:31:12.047884Z DEBUG openlogi_agent_core::hardware: native wheel mode written index=3 resolution=None inverted=Some(false)
2026-09-17T14:31:12.305962Z  INFO openlogi_device::session::gesture: control capture active index=3 gesture_sources=0 gesture_buttons=0 dpi_buttons=1 buttons=1 thumbwheel=false wake_rearm=true
2026-09-17T14:31:12.323754Z  INFO openlogi_agent::overlay: helper started, pid 320013
2026-09-17T14:31:12.331510Z DEBUG RPC{rpc.deadline=2026-09-17T14:31:22.331394094Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: SendRequest
2026-09-17T14:31:12.331634Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:22.331509812Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:12.331701Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:22.331509812Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:12.331752Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:22.331509812Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:12.331766Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:22.331509812Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:12.331784Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:22.331509812Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:12.331866Z DEBUG RPC{rpc.deadline=2026-09-17T14:31:22.331394094Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: ReceiveResponse
2026-09-17T14:31:12.331896Z  INFO openlogi_overlay::agent: agent speaks protocol 31 and this overlay speaks 28 — exiting and releasing the Actions Ring overlay role
2026-09-17T14:31:12.332608Z  INFO openlogi_agent::overlay: helper exited exit status: 0 after 9.5ms
2026-09-17T14:31:12.332638Z  INFO openlogi_agent::overlay: waiting 8.0s before the next attempt
2026-09-17T14:31:13.959668Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0006 matched=false
2026-09-17T14:31:13.959736Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0002 matched=false
2026-09-17T14:31:13.959759Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0001 matched=false
2026-09-17T14:31:13.959780Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:13.959802Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:13.959822Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:13.959842Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:13.959861Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:13.959879Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:13.961221Z DEBUG openlogi_device::inventory: HID++ candidate interfaces count=1
2026-09-17T14:31:13.963809Z DEBUG openlogi_device::inventory::probe: receiver reports pairing count pairing_count=1
2026-09-17T14:31:13.966067Z DEBUG openlogi_device::inventory::probe: trigger_device_arrival failed; retrying once error=Protocol(Channel(Implementation(Other(Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }))))
2026-09-17T14:31:16.471696Z DEBUG openlogi_device::inventory::probe: drained device-arrival events events=1
2026-09-17T14:31:16.493869Z DEBUG openlogi_device::inventory::probe: unifying paired slot slot=3 online=true wpid=4082 kind=Mouse codename=Some("Wireless Mouse MX Master 3")
2026-09-17T14:31:16.495118Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0006 matched=false
2026-09-17T14:31:16.495157Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0002 matched=false
2026-09-17T14:31:16.495179Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0001 matched=false
2026-09-17T14:31:16.495199Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:16.495234Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:16.495253Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:16.495269Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:16.495287Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:16.495302Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:16.577674Z DEBUG openlogi_device::write::hires_wheel: wheel mode already set; skipping index=3 desired=ScrollWheelMode { resolution: High, inverted: false, target: Native }
2026-09-17T14:31:16.577720Z DEBUG openlogi_agent_core::hardware: native wheel mode written index=3 resolution=None inverted=Some(false)
2026-09-17T14:31:17.241527Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.219816050Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:17.241573Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.219816050Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:17.241603Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.219816050Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:17.241615Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.219816050Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:17.241631Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.219816050Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:17.309143Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.302826345Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:17.309183Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.302826345Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:17.309212Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.302826345Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:17.309223Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.302826345Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:17.309238Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.302826345Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:17.467193Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.467139945Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:17.467270Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.467139945Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:17.467315Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.467139945Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:17.467328Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.467139945Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:17.467346Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.467139945Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:17.716940Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.716898367Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:17.716980Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.716898367Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:17.717002Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.716898367Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:17.717012Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.716898367Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:17.717026Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.716898367Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:17.967652Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.967585027Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:17.967716Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.967585027Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:17.967761Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.967585027Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:17.967784Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.967585027Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:17.967811Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:27.967585027Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:18.217607Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.217541297Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:18.217674Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.217541297Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:18.217746Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.217541297Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:18.217771Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.217541297Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:18.217798Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.217541297Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:18.467530Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.467445574Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:18.467595Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.467445574Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:18.467638Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.467445574Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:18.467661Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.467445574Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:18.467690Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.467445574Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:18.497871Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0006 matched=false
2026-09-17T14:31:18.497937Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0002 matched=false
2026-09-17T14:31:18.497959Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0001 matched=false
2026-09-17T14:31:18.497978Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:18.497994Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:18.498011Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:18.498029Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:18.498052Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:18.498069Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:18.499400Z DEBUG openlogi_device::inventory: HID++ candidate interfaces count=1
2026-09-17T14:31:18.501613Z DEBUG openlogi_device::inventory::probe: receiver reports pairing count pairing_count=1
2026-09-17T14:31:18.503887Z DEBUG openlogi_device::inventory::probe: trigger_device_arrival failed; retrying once error=Protocol(Channel(Implementation(Other(Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }))))
2026-09-17T14:31:18.717311Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.717267710Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:18.717371Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.717267710Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:18.717403Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.717267710Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:18.717422Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.717267710Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:18.717437Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.717267710Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:18.967018Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.966974250Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:18.967059Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.966974250Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:18.967085Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.966974250Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:18.967096Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.966974250Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:18.967111Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:28.966974250Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:19.216749Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.216687011Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:19.216807Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.216687011Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:19.216850Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.216687011Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:19.216873Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.216687011Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:19.216899Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.216687011Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:19.466754Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.466688238Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:19.466824Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.466688238Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:19.466889Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.466688238Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:19.466913Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.466688238Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:19.466942Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.466688238Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:19.716764Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.716702154Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:19.716830Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.716702154Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:19.716874Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.716702154Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:19.716896Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.716702154Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:19.716924Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.716702154Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:19.966754Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.966691604Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:19.966817Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.966691604Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:19.966860Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.966691604Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:19.966882Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.966691604Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:19.966910Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:29.966691604Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:20.217668Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.217604057Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:20.217730Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.217604057Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:20.217773Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.217604057Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:20.217815Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.217604057Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:20.217847Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.217604057Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:20.333277Z  INFO openlogi_agent::overlay: helper started, pid 320060
2026-09-17T14:31:20.341142Z DEBUG RPC{rpc.deadline=2026-09-17T14:31:30.340967540Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: SendRequest
2026-09-17T14:31:20.341314Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.341119836Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:20.341403Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.341119836Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:20.341461Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.341119836Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:20.341478Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.341119836Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:20.341516Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.341119836Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:20.341635Z DEBUG RPC{rpc.deadline=2026-09-17T14:31:30.340967540Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: ReceiveResponse
2026-09-17T14:31:20.341686Z  INFO openlogi_overlay::agent: agent speaks protocol 31 and this overlay speaks 28 — exiting and releasing the Actions Ring overlay role
2026-09-17T14:31:20.342389Z  INFO openlogi_agent::overlay: helper exited exit status: 0 after 9.6ms
2026-09-17T14:31:20.342410Z  INFO openlogi_agent::overlay: waiting 16.0s before the next attempt
2026-09-17T14:31:20.467705Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.467643229Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:20.467767Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.467643229Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:20.467811Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.467643229Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:20.467832Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.467643229Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:20.467861Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.467643229Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:20.717630Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.717565962Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:20.717694Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.717565962Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:20.717759Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.717565962Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:20.717782Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.717565962Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:20.717809Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.717565962Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:20.967591Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.967528847Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:20.967655Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.967528847Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:20.967699Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.967528847Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:20.967722Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.967528847Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:20.967750Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:30.967528847Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:21.011530Z DEBUG openlogi_device::inventory::probe: drained device-arrival events events=1
2026-09-17T14:31:21.035641Z DEBUG openlogi_device::inventory::probe: unifying paired slot slot=3 online=true wpid=4082 kind=Mouse codename=Some("Wireless Mouse MX Master 3")
2026-09-17T14:31:21.036884Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0006 matched=false
2026-09-17T14:31:21.036924Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0002 matched=false
2026-09-17T14:31:21.036942Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0001 matched=false
2026-09-17T14:31:21.036960Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:21.036978Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:21.036994Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:21.037011Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:21.037027Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:21.037044Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:21.129562Z DEBUG openlogi_device::write::hires_wheel: wheel mode already set; skipping index=3 desired=ScrollWheelMode { resolution: High, inverted: false, target: Native }
2026-09-17T14:31:21.129660Z DEBUG openlogi_agent_core::hardware: native wheel mode written index=3 resolution=None inverted=Some(false)
2026-09-17T14:31:21.217562Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.217498815Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:21.217631Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.217498815Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:21.217680Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.217498815Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:21.217702Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.217498815Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:21.217730Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.217498815Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:21.467578Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.467515431Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:21.467641Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.467515431Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:21.467685Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.467515431Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:21.467706Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.467515431Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:21.467733Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.467515431Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:21.717523Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.717433831Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:21.717588Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.717433831Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:21.717633Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.717433831Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:21.717656Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.717433831Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:21.717685Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.717433831Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:21.967487Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.967423119Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:21.967590Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.967423119Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:21.967633Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.967423119Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:21.967654Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.967423119Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:21.967681Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:31.967423119Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:22.217370Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.217325416Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:22.217436Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.217325416Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:22.217460Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.217325416Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:22.217472Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.217325416Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:22.217487Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.217325416Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:22.467167Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.467112542Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:22.467208Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.467112542Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:22.467231Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.467112542Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:22.467242Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.467112542Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:22.467256Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.467112542Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:22.716781Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.716729621Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:22.716838Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.716729621Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:22.716883Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.716729621Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:22.716904Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.716729621Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:22.716927Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.716729621Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:22.966796Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.966751242Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:22.966865Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.966751242Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:22.966905Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.966751242Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:22.966917Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.966751242Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:22.966948Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:32.966751242Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:23.039151Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0006 matched=false
2026-09-17T14:31:23.039192Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0002 matched=false
2026-09-17T14:31:23.039202Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0001 matched=false
2026-09-17T14:31:23.039210Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:23.039217Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:23.039225Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:23.039233Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:23.039240Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:23.039247Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:23.039871Z DEBUG openlogi_device::inventory: HID++ candidate interfaces count=1
2026-09-17T14:31:23.041354Z DEBUG openlogi_device::inventory::probe: receiver reports pairing count pairing_count=1
2026-09-17T14:31:23.043647Z DEBUG openlogi_device::inventory::probe: trigger_device_arrival failed; retrying once error=Protocol(Channel(Implementation(Other(Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }))))
2026-09-17T14:31:23.217540Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.217480715Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:23.217584Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.217480715Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:23.217613Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.217480715Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:23.217625Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.217480715Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:23.217640Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.217480715Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:23.467328Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.467284769Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:23.467367Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.467284769Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:23.467396Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.467284769Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:23.467407Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.467284769Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:23.467422Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.467284769Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:23.717060Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.716978181Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:23.717112Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.716978181Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:23.717177Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.716978181Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:23.717197Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.716978181Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:23.717212Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:33.716978181Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:25.551387Z DEBUG openlogi_device::inventory::probe: drained device-arrival events events=1
2026-09-17T14:31:25.573391Z DEBUG openlogi_device::inventory::probe: unifying paired slot slot=3 online=true wpid=4082 kind=Mouse codename=Some("Wireless Mouse MX Master 3")
2026-09-17T14:31:25.574095Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0006 matched=false
2026-09-17T14:31:25.574115Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0002 matched=false
2026-09-17T14:31:25.574123Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0001 matched=false
2026-09-17T14:31:25.574134Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:25.574142Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:25.574149Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:25.574156Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:25.574164Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:25.574172Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:25.665258Z DEBUG openlogi_device::write::hires_wheel: wheel mode already set; skipping index=3 desired=ScrollWheelMode { resolution: High, inverted: false, target: Native }
2026-09-17T14:31:25.665312Z DEBUG openlogi_agent_core::hardware: native wheel mode written index=3 resolution=None inverted=Some(false)
2026-09-17T14:31:27.575690Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0006 matched=false
2026-09-17T14:31:27.575751Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0002 matched=false
2026-09-17T14:31:27.575771Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0001 matched=false
2026-09-17T14:31:27.575789Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:27.575807Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:27.575825Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:27.575842Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:27.575858Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:27.575875Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:27.577201Z DEBUG openlogi_device::inventory: HID++ candidate interfaces count=1
2026-09-17T14:31:27.579255Z DEBUG openlogi_device::inventory::probe: receiver reports pairing count pairing_count=1
2026-09-17T14:31:27.581483Z DEBUG openlogi_device::inventory::probe: trigger_device_arrival failed; retrying once error=Protocol(Channel(Implementation(Other(Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }))))
2026-09-17T14:31:30.087156Z DEBUG openlogi_device::inventory::probe: drained device-arrival events events=1
2026-09-17T14:31:30.175241Z DEBUG openlogi_device::inventory::probe: unifying paired slot slot=3 online=true wpid=4082 kind=Mouse codename=Some("Wireless Mouse MX Master 3")
2026-09-17T14:31:30.176455Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0006 matched=false
2026-09-17T14:31:30.176514Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0002 matched=false
2026-09-17T14:31:30.176541Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0x0001 usage_id=0x0001 matched=false
2026-09-17T14:31:30.176559Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:30.176576Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:30.176591Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech MX Master 3 pid=4082 usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:30.176609Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0001 matched=false
2026-09-17T14:31:30.176626Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0002 matched=true
2026-09-17T14:31:30.176641Z DEBUG openlogi_hid::transport: logitech HID node name=Logitech USB Receiver pid=c52b usage_page=0xff00 usage_id=0x0004 matched=false
2026-09-17T14:31:30.257167Z DEBUG openlogi_device::write::hires_wheel: wheel mode already set; skipping index=3 desired=ScrollWheelMode { resolution: High, inverted: false, target: Native }
2026-09-17T14:31:30.257247Z DEBUG openlogi_agent_core::hardware: native wheel mode written index=3 resolution=None inverted=Some(false)
2026-09-17T14:31:30.613450Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.613269831Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:30.613513Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.613269831Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:30.613544Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.613269831Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:30.613556Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.613269831Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:30.613572Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.613269831Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:30.613731Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.613705843Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:30.613756Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.613705843Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:30.613791Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.613705843Z otel.kind="server" otel.name="Agent.declare_client" otel.name="Agent.declare_client"}: tarpc::server: CompleteRequest
2026-09-17T14:31:30.613800Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.613705843Z otel.kind="server" otel.name="Agent.declare_client" otel.name="Agent.declare_client"}: tarpc::server: BufferResponse
2026-09-17T14:31:30.613812Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.613705843Z otel.kind="server" otel.name="Agent.declare_client" otel.name="Agent.declare_client"}: tarpc::server: SendResponse
2026-09-17T14:31:30.613961Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:55.613946255Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:30.613977Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:55.613946255Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:30.614013Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:55.613946255Z otel.kind="server" otel.name="Agent.observe" otel.name="Agent.observe"}: tarpc::server: CompleteRequest
2026-09-17T14:31:30.614033Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:55.613946255Z otel.kind="server" otel.name="Agent.observe" otel.name="Agent.observe"}: tarpc::server: BufferResponse
2026-09-17T14:31:30.614043Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:55.613946255Z otel.kind="server" otel.name="Agent.observe" otel.name="Agent.observe"}: tarpc::server: SendResponse
2026-09-17T14:31:30.614127Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:55.614112888Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:30.614147Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:55.614112888Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:30.713525Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.713459074Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:30.713570Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.713459074Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:30.714083Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.713459074Z otel.kind="server" otel.name="Agent.reload_config" otel.name="Agent.reload_config"}: openlogi_agent::autostart::linux: systemd user unit already absent
2026-09-17T14:31:30.714128Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.713459074Z otel.kind="server" otel.name="Agent.reload_config" otel.name="Agent.reload_config"}: openlogi_agent::autostart::linux: autostart enablement was not made by OpenLogi; leaving it alone
2026-09-17T14:31:30.714152Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.713459074Z otel.kind="server" otel.name="Agent.reload_config" otel.name="Agent.reload_config"}: tarpc::server: CompleteRequest
2026-09-17T14:31:30.714163Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.713459074Z otel.kind="server" otel.name="Agent.reload_config" otel.name="Agent.reload_config"}: tarpc::server: BufferResponse
2026-09-17T14:31:30.714181Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:40.713459074Z otel.kind="server" otel.name="Agent.reload_config" otel.name="Agent.reload_config"}: tarpc::server: SendResponse
2026-09-17T14:31:30.821208Z DEBUG openlogi_device::write::hires_wheel: wheel mode already set; skipping index=3 desired=ScrollWheelMode { resolution: High, inverted: false, target: Native }
2026-09-17T14:31:30.821260Z DEBUG openlogi_agent_core::hardware: native wheel mode written index=3 resolution=None inverted=Some(false)
2026-09-17T14:31:35.184966Z DEBUG openlogi_agent_core::watchers::gesture::dispatch: HID++ button → binding key="unit:91d12fc6" button=GestureButton action=Capture Region
2026-09-17T14:31:36.343101Z  INFO openlogi_agent::overlay: helper started, pid 320139
2026-09-17T14:31:36.350220Z DEBUG RPC{rpc.deadline=2026-09-17T14:31:46.350115000Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: SendRequest
2026-09-17T14:31:36.350326Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:46.350200500Z otel.kind="server"}: tarpc::server: ReceiveRequest
2026-09-17T14:31:36.350375Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:46.350200500Z otel.kind="server"}: tarpc::server: BeginRequest
2026-09-17T14:31:36.350367Z DEBUG cosmic_text::font::system: Locale: pt-BR
2026-09-17T14:31:36.350416Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:46.350200500Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: CompleteRequest
2026-09-17T14:31:36.350431Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:46.350200500Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: BufferResponse
2026-09-17T14:31:36.350450Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:46.350200500Z otel.kind="server" otel.name="Agent.protocol_version" otel.name="Agent.protocol_version"}: tarpc::server: SendResponse
2026-09-17T14:31:36.350601Z DEBUG RPC{rpc.deadline=2026-09-17T14:31:46.350115000Z otel.kind="client" otel.name=Agent.protocol_version rpc.trace_id=00}: tarpc::client: ReceiveResponse
2026-09-17T14:31:36.350630Z  INFO openlogi_overlay::agent: agent speaks protocol 31 and this overlay speaks 28 — exiting and releasing the Actions Ring overlay role
2026-09-17T14:31:36.351386Z  INFO openlogi_agent::overlay: helper exited exit status: 0 after 8.8ms
2026-09-17T14:31:36.351413Z  INFO openlogi_agent::overlay: waiting 32.0s before the next attempt
2026-09-17T14:31:36.415001Z DEBUG openlogi_agent_core::watchers::gesture::dispatch: HID++ button → binding key="unit:91d12fc6" button=GestureButton action=Capture Region
2026-09-17T14:31:38.582911Z DEBUG openlogi_agent_core::watchers::gesture::dispatch: HID++ button → binding key="unit:91d12fc6" button=GestureButton action=Capture Region
2026-09-17T14:31:39.432868Z DEBUG openlogi_agent_core::watchers::gesture::dispatch: HID++ button → binding key="unit:91d12fc6" button=GestureButton action=Capture Region
2026-09-17T14:31:50.616011Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:55.614112888Z otel.kind="server" otel.name="Agent.observe" otel.name="Agent.observe"}: tarpc::server: CompleteRequest
2026-09-17T14:31:50.616090Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:55.614112888Z otel.kind="server" otel.name="Agent.observe" otel.name="Agent.observe"}: tarpc::server: BufferResponse
2026-09-17T14:31:50.616134Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:31:55.614112888Z otel.kind="server" otel.name="Agent.observe" otel.name="Agent.observe"}: tarpc::server: SendResponse
2026-09-17T14:31:50.616404Z DEBUG RPC{rpc.trace_id=00 rpc.deadline=2026-09-17T14:32:15.616353024Z otel.kind="server"}: tarpc::server: ReceiveRequest

@4ni1ak

4ni1ak commented Sep 17, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for testing on real hardware — great confirmation. Really appreciate you verifying the actual fix instead of just your own patch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Version 0.6.24 and newer: button mapping not working

2 participants