Skip to content

[Bug]: Device list flaps (appears then vanishes ~2s) + device images never load — Bolt receiver, macOS 27 beta #218

@buliwyf42

Description

@buliwyf42

Pre-flight checklist

  • I searched existing issues and this is not a duplicate.
  • I am on the latest release or a recent master build.
  • I quit Logi Options+ before running OpenLogi (the two apps fight over HID++ access and only one can own a receiver at a time).

Which part of OpenLogi?

GUI (desktop app)

OpenLogi version

0.6.6

Operating system

macOS

OS version & architecture

macOS 27 (beta), Apple Silicon

Device model

MX Master 4 + MX Master 3S + MX Mechanical Mini, all paired to one Logi Bolt receiver

How is the device connected?

Logi Bolt receiver

Affected area(s)

  • Device discovery / detection
  • Button remapping
  • DPI control
  • SmartShift
  • Per-application profiles
  • Battery status
  • Settings / configuration (TOML)
  • Auto-update
  • Menu bar / tray
  • Other

What happened?

Summary

Two issues on a fresh OpenLogi setup:

  1. The device list flaps — all paired devices appear for ~1s, then the GUI flips back to "No devices connected", oscillating roughly every 2 seconds. They never stay long enough to configure.
  2. Device images never load — every device card shows the generic chip/silhouette icon instead of an actual mouse/keyboard render.

Setup

  • OpenLogi 0.6.6 (Homebrew cask openlogi@latest)
  • macOS 27 beta, Apple Silicon
  • Logi Bolt receiver (USB, PID 0xC548)
  • Paired to the receiver: slot 1 = MX Mechanical Mini (keyboard), slot 3 = MX Master 3S (mouse), slot 4 = MX Master 4 (mouse)

What I ruled out

  • Only ONE openlogi-agent process running (no duplicate / lock contention).
  • Logi Options+ uninstalled; LogiPluginService is NOT running (6×1s process sampling showed it absent every time; no unified-log entries in 3 min). So this is not the documented "both apps compete for HID++" case.
  • Input Monitoring granted to OpenLogi; GUI footer shows "Accessibility granted".
  • The Bolt receiver enumerates fine in macOS (ioreg, PID 0xC548).

Issue 1 — flapping device list

The agent re-enumerates the whole receiver on every poll (~2s). On a good cycle it finds all three devices:

openlogi_hid::transport: opened HID++ channel name=USB Receiver vid=046d
openlogi_hid::inventory:  receiver reports pairing count pairing_count=Some(3)
openlogi_hid::inventory:  paired slot slot=1 online=true  bolt_kind=Keyboard codename=Some("MX MCHNCL M")
openlogi_hid::inventory:  paired slot slot=3 online=false bolt_kind=Mouse    codename=Some("MX Master 3S")
openlogi_hid::inventory:  paired slot slot=4 online=true  bolt_kind=Mouse    codename=Some("MX Master 4 M")

On other cycles the enumeration yields an empty inventory, which the GUI renders as "No devices connected" — hence the flapping. Two back-to-back identical isolated agent runs gave different results (one found all 3 devices, one read nothing), i.e. the receiver read fails intermittently. ⌘Q only restarts the GUI, not the agent, and there is no manual "rescan" control; the only reliable recovery is launchctl kickstart -k gui/$(id -u)/org.openlogi.agent.

Issue 2 — device images never load

Every device card shows the generic chip/silhouette icon, never the real device render. GUI debug log, on every poll cycle:

openlogi_gui::asset::paths: no asset index found — using synthetic silhouette for all devices
openlogi_gui::app: no devices with HID++ model info — using synthetic silhouette root="~/.local/share/openlogi/assets"

The local asset directory (~/.local/share/openlogi/assets) stays empty and the render fetch from assets.openlogi.org never populates it. openlogi assets sync isn't available either, because the Homebrew cask ships only the GUI app — there is no openlogi CLI in PATH.

Notes

  • Running on the macOS 27 beta — IOKit/IOHID behavior may differ from stable macOS and could be contributing to the intermittent HID++ read failures.
  • The MX Master 4 is very new and may be a trigger.

Happy to capture longer logs or test a patch.

Steps to reproduce

  1. Pair MX Master 4 (plus MX Master 3S and MX Mechanical Mini) to a single Logi Bolt receiver and plug the receiver into the Mac (macOS 27 beta, Apple Silicon).
  2. Install OpenLogi 0.6.6 (Homebrew cask) and launch it; grant Input Monitoring and Accessibility.
  3. Open the Devices view and watch it for ~30 seconds.

Expected: the three devices stay listed, each with its device render.
Actual: the list flips between showing all devices and "No devices connected" roughly every 2 seconds, and the device cards only ever show the generic chip silhouette (no images).

openlogi list output

Not available — the Homebrew cask ships only OpenLogi.app (GUI); there is no `openlogi` CLI binary in PATH, so `openlogi list` cannot be run. Agent-side enumeration is included in the description and Logs.

Logs

Agent (OPENLOGI_LOG=debug) — a good cycle:
  opened HID++ channel name=USB Receiver vid=046d
  receiver reports pairing count pairing_count=Some(3)
  paired slot slot=1 online=true  bolt_kind=Keyboard codename=Some("MX MCHNCL M")
  paired slot slot=3 online=false bolt_kind=Mouse    codename=Some("MX Master 3S")
  paired slot slot=4 online=true  bolt_kind=Mouse    codename=Some("MX Master 4 M")
  (other cycles return an empty inventory -> GUI shows "No devices connected")

GUI (OPENLOGI_LOG=debug) — every poll:
  openlogi_gui::asset::paths: no asset index found — using synthetic silhouette for all devices
  openlogi_gui::app: no devices with HID++ model info — using synthetic silhouette root="~/.local/share/openlogi/assets"

macOS permissions (if applicable)

  • OpenLogi has Accessibility permission (needed to remap buttons via the event tap).
  • OpenLogi has Input Monitoring permission (needed for Bluetooth-direct devices and capture).

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs: triageNeeds maintainer triagetype: bugSomething is broken or behaves incorrectly

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions