LogiWebConnect – Working on Linux

properbrew1 pts1 comments

GitHub - shneeba/logiwebconnect-mirror: Tooling to build an offline mirror of logiwebconnect.com and run it on Linux. Scripts only; no Logitech code or firmware redistributed. · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

shneeba

logiwebconnect-mirror

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>1 Commit<br>1 Commit

capture

capture

.gitignore

.gitignore

LICENSE

LICENSE

README.md

README.md

serve.py

serve.py

serve.sh

serve.sh

View all files

Repository files navigation

logiwebconnect-mirror

Tooling to build an offline copy of logiwebconnect.com, Logitech's<br>browser-based WebHID tool for pairing and updating Unifying/Bolt receivers. Useful if the site ever<br>goes away, and it patches the app to run on Linux (the live site blocks Linux).

Scripts only. No Logitech code, firmware, fonts or images are stored here. The scripts download<br>those from the live site to your own machine. See Legal.

Requirements

Node.js and Python 3.

A Chromium-family browser to use the mirror: Chrome, Chromium or Edge (not Firefox/Safari, no<br>WebHID). On Linux use the Google Chrome .deb, not snap/flatpak (sandbox can block HID).

A Unifying or Bolt receiver to pair against.

Build and run

node capture/fetch-precache.js # download the app + full asset set (from the SW PRECACHE_URLS manifest)<br>node capture/rewrite.js # rewrite URLs, stub telemetry, disable the OS allowlist (Linux)<br>./serve.sh # serve ./mirror at http://localhost:8765

Open http://localhost:8765/ in Chrome and pair. No clicking through the live site is needed (and<br>it's impossible on Linux anyway), so fetch-precache.js reads the service worker's asset manifest<br>and pulls everything directly.

capture.js is an optional Playwright capture for supported OSes (Windows/macOS/ChromeOS), for<br>assets outside the manifest. It needs npm install && npx playwright install chromium.

What rewrite.js does

Cross-origin URLs become local /_ext/... paths.

Telemetry (datapipeline.logitech.io) becomes /_noop/...; serve.py answers those POSTs with 204.

The OS allowlist is disabled. The app blocks Linux even in Chrome; the patch removes the OS check<br>and keeps the real one ("hid" in navigator && "forget" in HIDDevice.prototype), so Firefox and<br>Safari still report unsupported. It's a name-agnostic regex, so it survives re-minification.

serve.py

Static server with SPA history-fallback, so the app's client-side routes (/devices,<br>/select-receiver) don't 404 on a hard navigation. Plain python -m http.server does.

Linux: HID permissions

WebHID can list the receiver but can't open its /dev/hidraw* node without permission<br>(NotAllowedError: Failed to open the device). Grant access for this session:

for h in /sys/class/hidraw/hidraw*; do grep -ql 046D "$h/device/uevent" && echo "/dev/$(basename "$h")"; done<br>sudo chmod a+rw /dev/hidrawN

To make it permanent, add a udev rule (you're usually in plugdev):

echo 'KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="046d", MODE="0660", GROUP="plugdev", TAG+="uaccess"' \<br>| sudo tee /etc/udev/rules.d/42-logitech-hidraw-permissions.rules<br>sudo udevadm control --reload-rules && sudo udevadm trigger

Same rule Solaar ships. It only affects Logitech (046d) HID access, not your mouse/keyboard input.

Files

capture/<br>├── fetch-precache.js download app + full asset set (recommended; no deps)<br>├── capture.js optional Playwright capture (supported OS only)<br>├── rewrite.js patch URLs, telemetry, Linux support<br>├── write-mirror.js decode a bulk-fetch dump<br>└── package.json Playwright (only for capture.js)<br>serve.py static server with SPA fallback<br>serve.sh runs serve.py on :8765

mirror/ and capture/url-map.json are generated by the tooling and git-ignored.

Legal

Public domain (The Unlicense), scripts only. No Logitech software,<br>firmware, fonts or trademarks are included; the scripts download them from Logitech's live site to<br>your machine for your own use. Using that material is subject to Logitech's terms and your local<br>law. Not affiliated...

capture serve linux logitech mirror logiwebconnect

Related Articles