Skip to content

ETK v0.1.1 — Windows installer port + automatic SSH pairing

Pre-release
Pre-release

Choose a tag to compare

@mercurious mercurious released this 29 May 16:49
· 140 commits to main since this release

A Windows PC can now act as the ETK host without WSL, and first-run SSH setup is automatic: type the rig password once, then never again. This is the release that makes onboarding a non-technical tester realistic.

⚠️ Pre-release / alpha. ETK targets a specific Rocknix nightly (currently 20260528) and no race is yet certified stable. Expect rough edges; test on an expendable SD card.

Quick start (Windows)

Clone the repo (with Git for Windows + the OpenSSH client), then:

powershell -ExecutionPolicy Bypass -File .\windows_installer\etk-install.ps1

First run asks for the rig password once (Rocknix default rocknix); reboot the handheld afterward so the ETK Pitstop entry appears. macOS/Linux is unchanged — ./install.sh now auto-pairs too.

Highlights

  • Native Windows host support (no WSL). A faithful PowerShell port of install.sh/uninstall.sh, verified end-to-end on a real SM8250 rig (no-vault): cold pair → full deploy → live Sentry.
  • Automatic host → rig SSH pairing. Idempotent and test-first — a cold pair costs at most one password; every later ssh/scp is silent, and re-runs cost zero. It generates a dedicated no-passphrase key (~/.ssh/etk_rig, never touching your id_* keys), installs it carriage-return-safe without clobbering existing keys, and writes an ~/.ssh/config entry. Shared logic lives in scripts/etk_pair.sh and is pulled into PowerShell via Get-Heredoc (single source of truth). Standalone re-pair: ./install.sh --pair or etk-pair.ps1.
  • OS-migration drift detector (tools/etk_drift.py, new in this release). Banks nightly-keyed OS profiles and diffs a live Rocknix nightly against your pinned baseline and the device profile's pinned assumptions — so you can tell whether a nightly is safe to adopt before committing to it.

Fixed

  • Windows CRLF in Invoke-Rig — multi-line remote commands shipped with \r and silently broke the rig's sh; CR is now stripped from every command.
  • PowerShell parser break — em-dashes in the .ps1 files decoded as curly quotes under PowerShell 5.1's codepage; scripts are now pure ASCII.
  • Pairing abort on a deliberately-failing SSH probe (NativeCommandError under Stop) — probes now fail gracefully off the exit code.
  • SSH config portabilityIdentityFile ~/.ssh/etk_rig works across Windows OpenSSH, Git's bundled ssh, and Mac/Linux.

Changed

  • etk-env.ps1 $RigSsh defaults to root@SM8250.local — most setups need zero config.
  • Windows host README rewritten around the zero-config flow; the manual handshake is now a documented fallback.
  • Main README: the native PowerShell installer is the primary no-WSL Windows path (WSL2 remains the full, vaulted route).

Known limitations

  • The Windows port is no-vault (no host-side shader backup/restore) — use the SMB robocopy recipe or WSL2.
  • mDNS auto-discovery isn't ported to PowerShell — set $RigSsh (a literal IP always works).
  • etk.conf operator overrides aren't pushed by the Windows port.

Full changelog: v0.1.0...v0.1.1