mirror of
https://github.com/saphid/frame-control.git
synced 2026-10-06 13:00:33 +02:00
tests/frame-container/frame-image.sh extracts rootfs-A from Valve's Frame recovery image (steamdeck-images.steamos.cloud/recovery), mounts it read-only with a throwaway writable layer and starts the image's own sshd, so the iPhone app can pair with and run its server on the real SteamOS for Frame userland. Verified: password pairing then key login in the image's sshd log, the power password check through the image's sudo, status reading SteamOS 0.3.0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
42 lines
2.0 KiB
Markdown
42 lines
2.0 KiB
Markdown
# Testing without the headset
|
|
|
|
## Valve's own Frame OS, from its recovery image
|
|
|
|
Valve publishes a Steam Frame recovery image at
|
|
https://steamdeck-images.steamos.cloud/recovery/ (`steamframe-oobe-repair-*.img.bz2`,
|
|
~4 GB). `frame-image.sh` extracts its `rootfs-A` partition (btrfs), mounts it
|
|
read-only with a throwaway writable layer, and starts the image's own sshd on
|
|
port 2223, so the iPhone app can pair with, and run its server on, the real
|
|
SteamOS for Frame userland (Python, sudo, sshd, PAM). It needs Linux with btrfs,
|
|
e.g. Colima's VM on a Mac:
|
|
|
|
```sh
|
|
colima start --arch aarch64 --vm-type vz
|
|
colima ssh -- sudo sh tests/frame-container/frame-image.sh ~/Downloads/steamframe-oobe-repair-<build>.img.bz2
|
|
# pair with 127.0.0.1:2223, user steamos, password frame-test-pw
|
|
```
|
|
|
|
The image's kernel is built for the Frame's Qualcomm chip, so this runs its
|
|
userland, not the whole OS: no SteamVR, Steam client, battery or Lepton.
|
|
|
|
## Holo Core stand-in
|
|
|
|
A lighter option: Valve and
|
|
Collabora's [Holo Core aarch64 preview](https://www.collabora.com/news-and-blog/news-and-events/building-an-arch-linux-aarch64-port-for-holo-core.html)
|
|
(the Arch Linux ARM64 base the Frame's SteamOS is built on) with the Frame's SSH
|
|
surface: a `steamos` user with a password and sudo, OpenSSH taking keys and
|
|
passwords, Python and rsync. `systemctl` only records what it's asked to do.
|
|
|
|
It exercises pairing with the password, the host-key pin, the server running on
|
|
the "Frame" (FRAME_LOCAL=1) and the power password check. It has no SteamVR,
|
|
Steam, battery, cameras or Lepton, so those panels are empty.
|
|
|
|
```sh
|
|
docker build --platform linux/arm64 -t frame-holo-test tests/frame-container
|
|
docker run -d --name frame-holo -p 127.0.0.1:2222:22 frame-holo-test
|
|
# password: frame-test-pw. In the iPhone app (Simulator), pair with 127.0.0.1:2222.
|
|
docker exec frame-holo cat /tmp/power-requests.log # what power actions asked for
|
|
```
|
|
|
|
On a Mac without Docker: `brew install colima docker && colima start --arch aarch64 --vm-type vz`.
|