mirror of
https://github.com/saphid/frame-control.git
synced 2026-10-06 04:04:21 +02:00
- docs/recovery-and-images.md: where Valve's Frame images are (not linked from the SteamOS download page), file names, sizes and our checksums, the GPT layout with exact start sectors, what's in rootfs-A (btrfs, SteamOS 0.3.0 build 20260922.5152327, users, sudo and sshd config), extracting it, running it without the headset, and Valve/Collabora's Holo Core aarch64 preview. - how-the-frame-works.md: correct the recovery image file names; add verified facts on the SSH server, tools on the image (no adb), Lepton instances as podman containers, going off the network when asleep, and the battery reading at full charge. - ssh.md: pairing from an iPhone and why devkit RSA pairing doesn't fit it. - open-questions.md, README.md and the steam-frame skill point to the new pages. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
138 lines
7.6 KiB
Markdown
138 lines
7.6 KiB
Markdown
# Open questions and on-device checks
|
||
|
||
Research as of 2026-09-25, eight days after the Frame's retail release
|
||
(2026-09-18). Most first-party detail comes from Valve's Steamworks developer
|
||
pages. Searches of Reddit and the Steam forums turned up **almost no
|
||
end-user reports** about SSH, desktop streaming, or macOS. Treat that as
|
||
"not documented yet", not "doesn't work".
|
||
|
||
## Verified on device (2026-09-25)
|
||
|
||
Checked over SSH from the Mac, read-only, on SteamOS 0.3.0 (`VARIANT_ID=vr`,
|
||
build 20260922.6101926, kernel 6.18, aarch64):
|
||
|
||
- **1–2.** Developer Mode + Set User Password gave working SSH with no terminal
|
||
steps. `sshd` is enabled and active. The user is `steamos` (in `wheel`) and
|
||
the hostname is `frame`.
|
||
- **3.** `frame.local` resolves from the Mac; `avahi-daemon` is active.
|
||
- **5.** `/etc/ssh/sshd_config` has `Include /etc/ssh/sshd_config.d/*.conf`.
|
||
The existing drop-ins are `20-systemd-userdb.conf` and `99-archlinux.conf`, so
|
||
`01-frame-keys-only.conf` would sort first as intended. (`--harden` itself
|
||
hasn't been run.)
|
||
- **8.** The in-headset desktop is `kwin_wayland` + `plasmashell` nested
|
||
inside gamescope (1280×800), with `XDG_RUNTIME_DIR=/run/user/1000/nested_plasma`,
|
||
`WAYLAND_DISPLAY=wayland-0`, `DISPLAY=:2` and a private D-Bus bus. SteamVR
|
||
(`vrserver`, `vrcompositor`) and `xrdp` are running.
|
||
- **9.** `rsync`, `flatpak`, `python3`, `git`, `qdbus6` and `xrdp` are present.
|
||
`wl-copy`, `xclip`, `xsel`, `kdeconnect-cli`, `tailscale`, `krfb` and `wayvnc`
|
||
are **not** (Tailscale can be added in `~`; see [tailscale.md](tailscale.md)). `paste-to-frame.sh` now uses Klipper over D-Bus and round-trips
|
||
text correctly.
|
||
- Flathub is already configured as a **system** remote; Chromium is the only
|
||
installed Flatpak. `/` is 10 GB (42% used); `/home` is 929 GB.
|
||
- `push.sh` copied a test file with rsync.
|
||
- **10.** `install-apps.sh remmina --vnc-host <mac>.local` installed Remmina as
|
||
a `--user` Flatpak over SSH and wrote the profile. The desktop's
|
||
`XDG_DATA_DIRS` includes the user Flatpak exports, so it shows up in the menu.
|
||
The Frame can reach the Mac's Screen Sharing port (5900). The Remmina
|
||
connection itself hasn't been tried in the headset yet (part of 11).
|
||
|
||
- **Panels.** An X11 window on gamescope's `:0` with its own `STEAM_GAME` id
|
||
gets its own SteamVR overlay (`valve.steam.desktopgame.<id>`). Three were
|
||
created side by side with `panel-on-frame.sh`. See [panels.md](panels.md).
|
||
|
||
Still open: 4, 6, 7, 11 (in-headset connect), 12–15, 16 (off-LAN and after a reboot), 17–21.
|
||
|
||
## Check on the headset (in order)
|
||
|
||
1. **Is Developer Mode available on a retail unit?** Valve's pages are aimed at
|
||
developers. Confirm that **Steam Settings → System → Enable Developer Mode**
|
||
and **Developer → Set User Password** both exist on your OS channel (Stable
|
||
vs Beta).
|
||
2. **Does SSH work straight after that, with no terminal steps?** From the Mac,
|
||
run `nc -z frame.local 22`, then `./scripts/connect.sh`.
|
||
3. **Does `frame.local` resolve from the Mac (mDNS/Avahi)?** If not, use the IP
|
||
and set up a DHCP reservation.
|
||
4. **Does SSH stay enabled after a reboot and after an OS update?** Also check
|
||
that `~/.ssh/authorized_keys` survives an update.
|
||
5. **Is the `sshd_config.d` include present?** Check before `--harden`:
|
||
`ssh frame 'grep -n Include /etc/ssh/sshd_config'`.
|
||
6. **What does Steam Link on macOS show when connected to `frame`?** Is it the
|
||
VR view, a flat mirror, or the desktop? Does keyboard/mouse input reach the
|
||
headset?
|
||
7. **Does the xrdp session work from Microsoft Windows App on macOS?** Valve
|
||
only documents Windows Remote Desktop Connection. Is clipboard sync
|
||
supported?
|
||
8. **What kind of session is the in-headset Linux desktop?** It could be a
|
||
normal Plasma Wayland session (with a `wayland-*` socket in
|
||
`/run/user/$(id -u)`), X11, or something nested in SteamVR. This decides
|
||
whether `paste-to-frame.sh` works. `ssh frame 'ls /run/user/$(id -u); loginctl list-sessions'`.
|
||
9. **Are `wl-copy`, `xclip`, and `rsync` present on the image?**
|
||
`ssh frame 'command -v wl-copy xclip rsync flatpak'`.
|
||
10. **Can Flatpaks be installed `--user` over SSH, and do they appear in the
|
||
headset's desktop?** Test with `./scripts/install-apps.sh remmina`.
|
||
11. **Remmina → macOS Screen Sharing:** does it connect, and is it usable at
|
||
Retina resolutions? Is the pre-seeded profile path
|
||
(`~/.var/app/org.remmina.Remmina/data/remmina/`) the one Remmina
|
||
actually reads?
|
||
12. **Moonlight Flatpak (aarch64) + Sunshine on macOS:** worth trying only if
|
||
VNC is too slow.
|
||
13. **KDE Connect**: is it preinstalled or installable on the Frame, and does
|
||
it pair with KDE Connect for macOS?
|
||
14. **Bluetooth keyboard pairing** on the Frame, for the rare times you do need
|
||
to type locally.
|
||
15. **ADB**: does `adb shell` over USB-C from a Mac (not just a Windows PC)
|
||
reach the Linux side? Does USB power from the Mac cope?
|
||
16. ~~**Tailscale**~~: answered 2026-09-25. A userspace `tailscaled` in `~`
|
||
runs as a lingering user service with no sudo; see [tailscale.md](tailscale.md).
|
||
Still open: reaching the Frame from outside the home network, and the service
|
||
starting after a reboot.
|
||
17. **Floating panels in the headset** (see [panels.md](panels.md)): do the
|
||
panels from `panel-on-frame.sh` show up, take input, and offer **Float in
|
||
World** / **Move** / **Size**? Do floating positions survive closing and
|
||
reopening the app, or a reboot?
|
||
18. **`LEPTON_NO_CLEANUP=1 %command%`** as Lepton Development's launch
|
||
option: do ADB-installed apps survive closing and reopening it?
|
||
19. **Typing in Android apps:** Lepton has no IME installed. Does the SteamVR
|
||
keyboard or a Bluetooth keyboard reach Android text fields, or does an
|
||
F-Droid keyboard (installed and enabled with `ime enable`/`ime set`) work?
|
||
20. **F-Droid 2.0** (Compose 1.12): does it run? If so, the catalogue can
|
||
install it instead of 1.17.2.
|
||
|
||
21. **DeoVR local files:** does DeoVR's file browser show `Videos → VR`
|
||
(the symlink from `push-vr-video.sh`) or `Z:\home\steamos\Videos\VR`, and do
|
||
the colour-coded test clips play in 3D (red left eye, cyan right) for both
|
||
H.264 and H.265? Does the DLNA browser find a server on the Mac?
|
||
|
||
## Verified 2026-09-27
|
||
|
||
- **Recovery images exist** for the Frame at
|
||
`https://steamdeck-images.steamos.cloud/recovery/`; the root filesystem inside
|
||
is btrfs and runs, as a userland, on ARM64 Linux. See
|
||
[recovery-and-images.md](recovery-and-images.md).
|
||
- **Frame Control's server runs on the Frame itself** (the iPhone app does
|
||
this), including headset capture, 31 fps live video and file uploads. See
|
||
[iphone.md](iphone.md).
|
||
- **Password pairing and `sudo -S`** work against the recovery image's own
|
||
sshd and sudo (not yet against the headset, whose password we don't hold).
|
||
|
||
## Still open (2026-09-27)
|
||
|
||
- Does `podman exec <lepton container> /system/bin/sh -c 'wm size'` change an
|
||
instance's display the way `adb shell wm size` does?
|
||
- Can the recovery image, or its kernel, boot in a VM at all?
|
||
- Does a real sleep, restart or shut down from the iPhone app work (via
|
||
`sudo -S systemctl`)?
|
||
- The Mac EDL flashing script in `~/Downloads/steam-frame-recovery/` hasn't
|
||
been run against a Frame.
|
||
|
||
## Unconfirmed claims made in these docs
|
||
|
||
- `/home` and `/etc` persist across Frame OS updates. This is inferred from
|
||
Steam Deck behaviour.
|
||
- The whole Mac → Frame desktop path (VNC → Remmina). Each part is documented
|
||
separately, but the combination is untested.
|
||
- Steam Remote Play with a Mac as host is broken. That's based on community
|
||
reports, not tested with the Frame.
|
||
- `connect.sh --harden`, `serve-bootstrap.sh` and
|
||
`bootstrap-on-frame.sh` haven't run against real hardware.
|