Skip to main content

diagnosing-openlogi-devices

Diagnoses OpenLogi HID/HID++ failures across enumeration, open, probe, IPC, and UI layers. Use for missing devices, failed opens or pairing, stale inventory, disconnect/reconnect failures, unsupported controls, or CLI/GUI disagreement.

インストールへ移動

ソース情報

リポジトリ
AprilNEA/OpenLogi
ソースの最終更新活動
2026年9月18日 19:18
検出された SKILL.md の言語
英語
スター
21,783
フォーク
712

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
diagnosing-openlogi-devices
description
Diagnoses OpenLogi HID/HID++ failures across enumeration, open, probe, IPC, and UI layers. Use for missing devices, failed opens or pairing, stale inventory, disconnect/reconnect failures, unsupported controls, or CLI/GUI disagreement.
# Diagnose OpenLogi Devices Find the first failing layer before proposing a permission change or code fix. ## Establish the observation 1. Record the app/agent/CLI versions, OS, installation source, and active profile. Record the model and connection type: Bolt, Unifying, Bluetooth-direct, or wired. Distinguish an absent receiver from a paired device that is asleep or offline. 2. Read the existing report and logs before asking for new captures. Record the failing action, expected result, and whether the failure repeats. 3. Compare `openlogi list` stdout **and stderr** with the GUI, using the same profile. Read [list provenance](../../../crates/openlogi-cli/src/cmd/list.rs) if ambiguous: - `inventory read from the running agent` uses the GUI's HID inventory source. - Direct fallback uses the CLI's own permission identity and HID stack. A timeout or incompatible protocol can cause fallback, not just an absent agent. - Camera enumeration is direct in both modes; do not infer HID permission from it. 4. Use the failing agent's logs. If more detail is required, use `OPENLOGI_LOG=debug` with the correct launch path. A new foreground process can change permission attribution. Missing debug lines in an info-level log prove nothing. ## Locate the failure | Evidence | Investigate next | | --- | --- | | No matching HID interfaces | Connection, model identity, transport, registry/enumeration filters | | Interface found, open fails | Permission status of the opener, exclusive ownership, host transport | | Channel opens, feature probe times out or fails | HID++ request/response and transport; do not reset permissions by default | | Direct CLI works, agent inventory fails | Compare process identity, versions, profiles, and agent logs | | Compatible agent snapshot has the device, GUI does not | IPC delivery, desktop state, capability filtering, presentation | | Device appears, one feature fails | Reported feature ID/version, capability gating, then the owning operation | For macOS symptoms, load the existing [permission skill](../../../.claude/skills/openlogi-macos-permissions/SKILL.md). Use its identity map and read-only diagnosis; do not duplicate TCC procedures. For Linux access failures, inspect the relevant `hidraw`, `input/event`, and `uinput` permissions using [Linux access guidance](../../../docs/INSTALL-linux.md). Do not install rules, change ACLs, reset permissions, or stop another app without authorization. Do not diagnose a Windows failure from a macOS permission model. ## Choose the smallest diagnostic Read the [diagnostic command definitions](../../../crates/openlogi-cli/src/cmd/diag.rs) and the selected subcommand before running it. Explain direct hardware access and coordinate with competing clients. Do not present enumeration as a zero-write session: receiver discovery can enable notifications and request arrival reports. | Diagnostic | Boundary | | --- | --- | | `openlogi diag features` | Reads feature/firmware tables for all online devices; has no `--device` flag | | `diag controls`, `diag battery` | Read the selected device; use `--device` and inspect the printed route | | `diag wheel` without `--resolution` | Reads wheel mode; adding `--resolution` writes hardware | | `diag dpi` | Writes a test DPI and attempts restoration; failures can prevent restoration | | `diag smartshift` without `--sensitivity` or `--leave-flipped` | Toggles mode and attempts restoration; failures can prevent restoration | | `diag smartshift --sensitivity N` | Sets sensitivity without restoring the previous value; preserves the current mode | | `diag smartshift --leave-flipped` | Toggles mode and intentionally skips restoration | | `diag lighting` | Writes lighting; not an observation-only diagnostic | Diagnostic `--device` uses the first case-insensitive substring match. If names overlap, do not treat it as unique selection. Resolve the target before writes. Get authorization for setting writes or pairing/unpairing; do not run them as default triage. Stop if ownership, target selection, or restoration is uncertain. ## Reproduce in the owning layer Use [change verification](../verifying-openlogi-changes/SKILL.md#reproduce-regressions-before-fixing-them) for the before/after test requirements. Start with an existing test seam: - Enumeration, stale channels, and recovery: [device replay tests](../../../crates/openlogi-device/src/inventory/replay_tests.rs). - Agent lifecycle: [injected inventory tests](../../../crates/openlogi-agent-core/src/watchers/inventory/replay_tests.rs) or [pairing tests](../../../crates/openlogi-agent-core/src/watchers/pairing/replay_tests.rs). - IPC delivery and replacement: [IPC client tests](../../../crates/openlogi-ipc/src/client.rs) or [desktop IPC tests](../../../crates/openlogi-desktop/src/services/ipc.rs). - Presentation only: [UI testing](../testing-openlogi-ui/SKILL.md), not a second mock framework. Keep node presence, channel connectivity, paired-slot state, and published inventory distinct. Assert intermediate cleanup and replacement, not only the final online state. ## Return actionable evidence - Separate observed facts, suspected cause, and the next discriminating check. Quote the decisive error with its process, profile, and transport context. - Redact serials, receiver IDs, Bluetooth addresses, pairing secrets, usernames, and host paths before sharing. Preserve protocol fields needed for diagnosis. Do not request full config or raw traffic when a sanitized excerpt is enough. - For code changes, follow the owning crate's rules and [verification workflow](../verifying-openlogi-changes/SKILL.md). Use sanitized fixtures; derive expected values independently of the parser under test. - If a new capture is justified, use [fixture contribution](../contributing-device-fixtures/SKILL.md). Report hardware verification separately. Checks without the affected physical device do not establish that the physical failure is fixed.
GitHubで見る