LibreEcho

Browser one-shot installer · preview

Install LibreEcho from the browser.

This page runs the install from your browser: it verifies a published release, asks the browser for USB access to the device, and drives the same stages the reviewed host installer drives — fastboot identity, the no-short unlock submission, the recovery-side initial install and a readback receipt after every write.

No Python, no platform tools, no drivers: the browser is the host. Only Chromium-based desktop browsers expose WebUSB.

Preview, not a supported path. This runs on recoverable hardware only, it modifies device storage, and the install stages are not hardware-validated yet. If you have one device you care about, do not be the first to try it. The supported route today is the published release and its installation guide.

1 · Browser capability

WebUSB and the protocol modules are checked before anything touches a device.

2 · Release

Release state: not loaded

3 · Verified bundle

The release download endpoint does not allow cross-origin reads, so the browser cannot pull the payloads for you. Download the release assets from the release page, then select them here: every file is hashed locally and compared with the release's own SHA256SUMS before anything is pushed to the device.

Bundle state: nothing selected

4 · Device

Fastboot is where the no-short route starts. Put the device into fastboot, then grant access in the browser prompt. The device identifier is masked here and is never written to the log in full.

If the chooser lists nothing, the device is not presenting an identity this page knows (they are listed in the installer notes). Use the unfiltered chooser — these devices report device class 0, so a class-based filter cannot match them.

Device state: not connected

5 · Unlock payload (only for a locked device)

The unlock submission is bound to the device's own LK build description. The payload is distributed inside the community unlock archive rather than in any repository, so it is never downloaded by this page: select the file you obtained, and the installer will submit it only if the detected build has a declared payload. A timeout after submission is reported as an unknown outcome and is never retried automatically.

Payload state: none selected

6 · Stages

    install progress

      What each stage verifies

      • Release — the published SHA256SUMS inventory is read and required assets are present.
      • Bundle — every selected file is hashed in the browser and compared with the release digest.
      • Device — getvar product, unlock_status and the LK build description are read from the device itself; an unknown target stops the run.
      • Unlock — the payload for the detected LK build only, with an explicit unknown-outcome state.
      • Recovery — TWRP is confirmed over ADB before any write.
      • Stage — the pushed files are re-hashed with the device's own sha256sum, not trusted because the push reported success.
      • Install — the recovery installer's machine-readable receipt is read back after each run; the installer reshapes userdata first when the layout does not match the image contract, and asks for a reboot in between.