Legal / Impressum

Privacy notice draft: hosting privacy information is awaiting confirmation. The privacy section is not yet complete.

Impressum

Website operator and data controller:

Stanislaw Kirpicnikow, Menninghauser Str. 29, 42859 Remscheid, Germany. Email: s.kirpicnikow@gmx.de. Artist: ApeDevil.

Contact by email

Privacy / Datenschutz

Hosting and requests

This website is configured for hosting on Vercel. Loading a page sends technical request data, including your IP address, to the hosting infrastructure so it can deliver the page.

The controller is identified in the Impressum above. Hosting contract details, log retention, processing locations, transfer safeguards and applicable legal bases still need to be confirmed. Dashboard-enabled analytics and other services have not yet been verified.

Preferences stored in your browser

  • Theme: selecting light or dark mode saves a theme cookie for up to one year. Your browser sends this cookie with requests to this site.
  • Saved build: lynxware.build in local storage remembers your selected configuration, revision, completed steps and parts. It has no automatic expiry. Local storage is not automatically sent with web requests.

You can remove these preferences by clearing this site’s cookies and site data in your browser. Shared build links include configuration and revision information in the URL; opening one sends that URL to the host.

Your rights

Depending on the processing and applicable conditions, you may request access, correction, erasure, restriction or portability of personal data, object to processing, and complain to a data protection supervisory authority. Where processing relies on consent, you may withdraw it. You can contact the controller using the email above. The competent supervisory authority and processing-specific details still need to be confirmed.

Source & version

Project data: lynx-v4 dev@e21e4f5 ·

Full source revision: e21e4f527c936c1109fac1296504ac01dcacbfea.

Project licensing documentation

Licensing

Everything tracked here is either the project's own work under the licences below, or someone else's work under a licence that allows redistributing it. Anything else stays out of the repository. Builders who need it get it themselves, and this file says how. LICENSE is the formal scope; this file explains it.

Licences by path

PathsLicenceWhy
firmware/, tools/, lx, Cargo, CI, container and editor configuration, .gitignore, .gitattributes, REUSE.tomlGPL-3.0-or-later, plus the additional permission belowImprovements to the firmware and its tools stay open.
electronics/, mechanical/, LYNXware.toml, build.tomlCERN-OHL-S-2.0The hardware counterpart of the GPL: modified boards and enclosures stay open.
Every Markdown file, .claude/ and .mcp.json, every imageCC-BY-SA-4.0Prose and pictures under a documentation licence, share-alike like the rest.

REUSE.toml states this table per path, machine-readably; the website labels each file it publishes from it. python3 tools/lx/licences.py --check keeps REUSE.toml, LICENSE and the texts here naming the same licences, and every tracked file covered. The Rust crates carry license = "GPL-3.0-or-later" from the workspace. The full texts are beside this file, named by their SPDX id as the REUSE specification lays them out; LICENSE stays at the root, where GitHub and licence scanners look for it.

Additional permission: Espressif's radio libraries

The firmware links Espressif's binary-only Wi-Fi, ESP-NOW, PHY and coexistence libraries through esp-radio and esp-phy. There is no source for them, and GPLv3's system-library exception does not clearly cover a peripheral's radio stack. LICENSE therefore grants a section 7 additional permission. It allows conveying the firmware linked with those libraries without their source; everything else stays under the GPL.

Used from others

WhatWhereLicence
Rust crates (esp-hal, esp-radio, Embassy, RMK, postcard, …)fetched by Cargo, pinned in Cargo.locktheir own, MIT/Apache-2.0 and similar; checked at release (below)
PMW3610 register sequence and timingfirmware/cat/src/drivers/mouse/pmw3610/, ported from RMK 0.8.2 src/input_device/pmw3610.rs, itself from Zephyr's input_pmw3610.cRMK: MIT OR Apache-2.0; Zephyr: Apache-2.0; credited in the driver's header
Purchased modules: the BPI-Leaf-S3 and T-Dongle-S3 boards, the PMW3389 and PMW3610 breakouts, switches, LEDs, headers, batteryreferenced by name and dimensions onlyCERN-OHL-S "Available Components"; their designs are not in this repository. The PMW3610 breakout is siderakb's open design (CERN-OHL-P-2.0), made by randware.
The licence textsLICENSES/verbatim, as each allows: the GPL's and CERN-OHL's own terms; Creative Commons dedicates its legal code to the public domain (CC0)
Register values, timings and dimensions from datasheetscode comments, electronics/lib/footprints.toml, tools/blender/tower_ref.py and main_board_ref.py (the T-Dongle-S3's and BPI-Leaf-S3's outlines)facts; the datasheets and drawings are linked, never copied
InteractiveHtmlBom's page codethe interactive BOM pages the website's boards area carries, made by tools/electronics/ibom.py; the tool itself is installed outside the repositoryMIT; its notice stays in each page
The firmware's Rust crates, as compiled into a flash imagethe website's firmware areatheir own; notices.html next to the images carries every crate's licence text (tools/lx/notices.py)

Not in this repository

WhatWhyHow a builder gets it
The PMW3389 SROM, PixArt's sensor firmwarePixArt grants no redistribution licence. QMK removed its copy in 2024 as undistributable; ZMK and RMK never shipped it.Their own copy, which lx flashes into its own partition: firmware/cat/srom. No firmware image contains it. The PMW3610 needs none.
Supplier library data: EasyEDA/LCSC symbols, footprints and 3D modelsTheir terms grant no redistribution.Not needed: the project draws its own library (electronics/lib), with the copper unchanged.
The EasyEDA source archives of the boardsThey embed LCSC library records and the maintainer's EasyEDA account.Not needed to build: electronics/baseline/ holds the facts derived from them. The maintainer keeps the archives privately.
Historical wiring diagramsThey contain Banana Pi board artwork and probably Fritzing part art.Superseded by wiring-harness.toml and the generated pinout.
DatasheetsManufacturers' copyright.Linked from electronics/lib/parts.toml and the drivers.
Vendor 3D models of the purchased boards (T-Dongle-S3, BPI-Leaf-S3)No licence to redistribute them.Not needed: the project draws both from their published dimensions and photos (tools/blender/main_board_ref.py, tower_ref.py).
Device identity and secretsProvisioning sets and .board-config.toml are personal.Each builder provisions their own set (provisioning); both are git-ignored.

Adding someone else's work

Add third-party material only under a licence that allows redistributing it, and record it in "Used from others" in the same change, with an annotation of its own in REUSE.toml when its licence is not the path's. Otherwise link to it and add a row to "Not in this repository" saying how a builder gets it. Code ported from elsewhere keeps its credit in the file's header. A generator whose output lands in the repository (KiCad libraries, 3D models, website exports) draws only from sources that meet this rule.

Before the repository goes public

  • Publish a fresh history: a new root commit of the cleaned tree. Never push this repository's history. Its main still holds the ESP-NOW keys compiled in before 2026-09-20 and the security analyses of that design. Its history also holds the SROM, the EasyEDA models and archives, and the removed images.
  • Choose the commit identity for the public repository.
  • USB IDs. Apply for a pid.codes VID/PID, which it grants to open-source hardware. Use it in firmware/input-engine/src/usb.rs and firmware/input-engine/vial.json. Today's 0x4653 is not assigned to LYNX.
  • Check the dependency licences. ./lx container images lists every licence expression of the linked crates that is not a known permissive one (none on 2026-09-26); cargo deny check licenses would add policy checks, but the pinned image has no cargo-deny.
  • Decide which project-process files go public: .claude/, CLAUDE.md, ToDo.md, docs/website.md. The licence table covers them if they do.
  • Set [project] source in tools/site/public.toml to the public repository: the website then links it and offers the firmware images and the browser flasher.