Skip to content

About

Automated fix for Logitech Options+ infinite startup loop and "Reading permissions" error on Windows 10/11

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logi Options+ "Reading Permissions" & Startup Loop Fix

Automated fix tool & technical post-mortem for the Logitech Options+ infinite startup loop / "Reading permissions error" on Windows 10/11.

License: MIT Platform: Windows Target: Logi Options+


The Problem

Logitech Options+ gets stuck on the purple launch screen with a spinning loader:

✓ Initializing application
✓ Loading configuration
○ Reading permissions    <-- STUCK HERE INDEFINITELY
✓ Getting resources

Eventually, it fails with:

⚠️ Reading permissions error [TROUBLESHOOT]

Reinstalling the application or running as Administrator does not fix it, because Logitech's uninstaller leaves behind broken SQLite state databases in %LOCALAPPDATA%\LogiOptionsPlus.


Root Cause Analysis (Reverse-Engineered)

By unpacking and reverse-engineering the obfuscated frontend bundle (app.asar -> app.min.js) and tracing the Windows named pipe IPC (\\.\pipe\logitech_kiros_agent-*), we uncovered the exact startup condition for the permissions step:

// Step 'permissions' completion condition in app.min.js:
done: !(!state.piplStatus.value.status || !state.analytics.enabled);

The splash screen requires two concurrent conditions to pass before closing:

  1. state.piplStatus.value.status (Personal Information Protection Law / EULA):

    • Checked via agent call getPIPLStatus.
    • The backend queries %LOCALAPPDATA%\LogiOptionsPlus\privacy_settings.db -> table privacy_settings.
    • The Bug: After failed auto-updates or first-run cancellations, the privacy_settings table is left completely EMPTY (0 rows). The backend fails to return a status, causing the Redux saga to time out.
  2. state.analytics.enabled:

    • Stored in %LOCALAPPDATA%\LogiOptionsPlus\settings.db -> table data, row _id=1 as a JSON blob.
    • The Bug: In corrupted installs, analytics has "userPrompted": true, but the "enabled" boolean key is entirely missing (exists(state.analytics.enabled) === false), leaving the promise permanently unresolved.
  3. Incomplete Update Depots:

    • Logitech's background updater often downloads new binaries to %PROGRAMDATA%\LogiOptionsPlus\depots\<build_id>\ but fails to copy them to C:\Program Files\LogiOptionsPlus\, leaving mismatched DLLs and plugin services (LogiPluginService).

What This Tool Does

  1. Stops stuck processes: Safely kills logioptionsplus.exe and logioptionsplus_agent.exe.
  2. Restores missing binary files: Copies any updated/missing binaries from %PROGRAMDATA%\LogiOptionsPlus\depots\ to %PROGRAMFILES%\LogiOptionsPlus.
  3. Repairs privacy_settings.db: Inserts the required EULA & PIPL acceptance records so the agent query succeeds immediately.
  4. Repairs settings.db: Patches the JSON blob to guarantee analytics.enabled = false and crash_reporting.enabled = false.
  5. Initializes voice & macros state: Prevents empty-string protobuf deserialization errors.
  6. Relaunches the application un-elevated: Starts the agent and UI in the interactive user desktop session.

Quick Start / Usage

Option 1: Double-click (Recommended)

  1. Download this repository (or click Code -> Download ZIP and unpack).
  2. Double-click fix.bat.
  3. Launch Logi Options+ — it will now pass the permissions check and open your device dashboard!

Option 2: Python

python fix_logi_options.py

Technical Details

Database Fix Breakdown

1. privacy_settings.db

INSERT OR REPLACE INTO privacy_settings 
    (Id, eula, pii_process, pii_transfer, pii_share, update_time)
VALUES 
    (1, 1, 1, 1, 1, datetime('now'));

INSERT OR REPLACE INTO region_history 
    (id, region, update_time) 
VALUES 
    (1, 'US', datetime('now'));

PRAGMA wal_checkpoint(FULL);

2. settings.db

Updates the JSON blob at _id = 1:

{
  "analytics": {
    "enabled": false,
    "userPrompted": true
  },
  "crash_reporting": {
    "enabled": false,
    "userPrompted": true
  }
}

Русский / Описание на русском

В чём проблема

При запуске Logi Options+ намертво крутится загрузка:

  • ✓ Initializing application
  • ✓ Loading configuration
  • ○ Reading permissions (крутит бесконечно, потом ошибка)

Переустановка не помогает, потому что базы данных в %LOCALAPPDATA%\LogiOptionsPlus не удаляются и остаются повреждёнными.

Как запустить исправление

  1. Скачайте репозиторий.
  2. Запустите файл fix.bat.
  3. Запустите Logi Options+ с Рабочего стола — всё сразу заработает!

Contributing & Support

Feel free to open issues or pull requests if Logitech rolls out an update that changes the database schema.

License

MIT License. Free to use and distribute.

About

Automated fix for Logitech Options+ infinite startup loop and "Reading permissions" error on Windows 10/11

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages