Get root ADB access through the Station's cloud configuration, keep ADB active after reboot, and disable automatic firmware updates.
Credits: All ideas in this project were taken from eQuasar. This is just a repack for my own convenience.
Tested only on Station Mini 2, YNDX-00020, firmware 0.369.1.46.4778262943.20261013.299. Other
models and builds are untested. The tested .50 build rejects the CA chain used here.
Setup · Get root · Keep access · Firmware · Restore · Troubleshooting
You need:
- uv, make, a POSIX shell, and Android
platform-tools (
adb). - A router that can override DNS or assign a custom DNS server for one device.
- A computer reachable by the Station on TCP ports 80 and 443. The optional DNS helper also needs UDP and TCP port 53.
Run these commands from the repository root:
make setup
cp config.example.mk config.mkmake setup runs uv sync --locked as your current user to install dependencies in .venv. uv
downloads Python 3.13 automatically if needed. pyproject.toml declares the Python version and
dependencies, and uv.lock records the resolved versions.
Edit config.mk:
| Setting | Value |
|---|---|
STATION_IP |
The Station's current IPv4 address |
STATION_DEVICE_ID |
Its Quasar device_id from the smart-home app's device information |
STATION_PLATFORM |
Its Quasar platform, yandexmini_2 for Mini 2 |
PROXY_IP |
This computer's LAN IPv4 address |
Use the Quasar device_id, not the web app's device UUID. Settings and files under private/ are
ignored by Git.
Check the model code on the base and the full firmware version in the smart-home app's device information.
make proxyLeave it running. It accepts connections only from STATION_IP and enables ADB only for matching
device_id, platform, and API requests. Other configuration fields stay intact.
By default, update checks return {"hasUpdate":false}. The proxy ignores existing offer receipts
and does not load a firmware manifest. Use OFFER_UPDATE=0 to select this behavior explicitly.
Point these names to PROXY_IP for this Station only:
quasar.yandex.net
quasar.yandex.ru
scbh.yandex.net
Return no AAAA records for these names. The proxy computer must resolve their real upstream addresses.
If the router needs a custom DNS server, run make dns in another terminal and assign PROXY_IP as
the Station's DNS server. Prevent the Station from bypassing it. Other queries go to Google DNS over
verified HTTPS.
Keep the Station's internet access. Leave other devices' DNS and the router's global DNS rebinding protection unchanged.
Restart the Station, then run:
make connect
make statusstatus prints the firmware, ADB guard, OTA launcher configuration, and activation markers. For a
factory-reset device, see Firmware and factory recovery.
Once root ADB works, run:
make install
make reboot
make statusinstall-adbwraps the native activation script, keeps network ADB active, and creates boot markers.disable-updatesremoves only theupdatesdtask from the Station's currentlaunch.json.installruns both commands. Reboot applies the launcher change.
The installer saves originals under /system/vendor/quasar/ and checks file structure before
writing. It preserves existing backups, accepts earlier installations of the same guard, and refuses
ambiguous backups or unrelated edits. These checks do not authenticate the firmware. Keep the
original-file backups.
After confirming ADB access following reboot, restore ordinary DNS and stop both helpers with Ctrl+C. Network ADB on the tested firmware has no key authentication. Keep port 5555 inside a trusted LAN.
| Source | Contents |
|---|---|
| Firmware archive | Firmware metadata and ZIPs grouped by platform and full version. |
| Tested Mini 2 version | Metadata matching the bundled manifest, plus update.zip. |
| Alternative Mini 2 ZIP | A community mirror of that version. |
These are community sources. Choose the exact platform and a known compatible build. An archived package does not establish that this root method works on it.
The proxy reads update metadata, not a ZIP. firmware/update_manifest.json already contains the tested Mini 2 offer. The Station downloads the ZIP from the official Yandex URLs in that file. This kit neither serves a local ZIP nor flashes partitions.
For another model, set STATION_PLATFORM and replace the whole manifest with that platform's
metadata.json. Keep all fields and the original official HTTPS URLs. Changing the platform or ZIP
filename alone is not enough. make offer validates the metadata against the selected platform.
Community mirror URLs cannot replace the official URLs in the manifest.
A full reset clears Wi-Fi and account settings:
- Disconnect power.
- Hold the microphone-off button while reconnecting power.
- Release the button when the light turns yellow, after about five seconds.
Leave Wi-Fi unconfigured until the firmware offer below is running.
The tested Mini 2 factory recovery needed one official update to .46 before activation completed.
Stop the current proxy with Ctrl+C. Before arming the offer, keep the Station powered off or leave
it without Wi-Fi after a full reset. An old boot can otherwise consume the offer before recovery.
Keep the DNS overrides active and leave the optional DNS helper running. Run:
make offer
make proxy OFFER_UPDATE=1make offer creates private/offer_receipt.json. Only OFFER_UPDATE=1 uses it. Once the proxy is
listening, start the Station or configure Wi-Fi in the app after a reset. Keep the proxy, DNS, and
internet access available throughout activation and the update.
The Station may change its MAC or IP after a reset. Check the router's device list when it joins
Wi-Fi. If needed, update config.mk and the device-specific DNS rule, then restart the proxy and
rearm the offer as described below before retrying activation.
The receipt binds the Station IP, device_id, platform, and manifest. A valid check consumes it
before delivery, even if the Station already has that version or newer. Restarting the proxy does
not rearm it. Delivery does not prove installation.
If setup fails or you change those settings, stop the proxy and inspect the receipt. Deliberately
archive it before running make offer again. Restart the proxy to load a changed manifest.
make restore-updates
make restore-adb
make rebootRestore uses saved originals and refuses to overwrite unrelated edits. Restoring the ADB script keeps its activation markers. A later cloud configuration can deactivate ADB again.
- If ADB does not connect, check the Station's current IP, the three DNS overrides, internet access, and proxy output. Check the firmware against the compatibility note at the top.
- If activation stalls with updates blocked, the tested Mini 2 recovery required the explicit
.46offer above. Other models are untested. statusreports launcher configuration, not whether an updater from the current boot is still running.- If an interrupted installer leaves
/data/local/tmp/station-root.lock, confirm that no installer is running before removing that directory over ADB and retrying. Preserve backups.
make helplists all targets. Proxy and DNS helpers run in the foreground.make checkchecks source syntax and the on-disk firmware manifest without contacting a Station.make cleanremoves.venvand Python caches, preserving settings and private files.- Override
UV,ADB, orSUDOas needed. For unprivileged local runs, useSUDO=and ports above 1024 throughHTTP_PORT,HTTPS_PORT, andDNS_PORT.LISTEN_HOSTdefaults to0.0.0.0. make dns DNS_DOH=0forwards other queries over TCP toDNS_UPSTREAM, default8.8.4.4:53.make certissues a 48-hour TLS certificate.make proxyrenews it automatically, retaining the key. The bundledcerts/issuer.*files are the publicly disclosed compromised CA material from Fluepke's disclosure. Do not add this CA to the computer's trust store.private/enable_state.jsonrecords configuration changes as metadata without saving authorization headers or the configuration body.