mirror of
https://github.com/saphid/frame-control.git
synced 2026-10-06 13:00:33 +02:00
Record headset results for sideloading and devkit pairing
Tested on a Frame (BUILD_ID 20260922.6101926): - Devkit pairing: the service runs and answers properties.json, but /register refuses with "please put the Steam client in pairing mode" unless Steam is on Settings > Developer > Pair new host. Both setup paths now say so and keep asking for 2 minutes before falling back to the password. - Sideloading: registering, launching, quoted start paths and Remove work; a Windows exe runs under Proton 11 through FEX. An aarch64 build starts but outside the runtime container, and an x86-64 Linux build doesn't start because the x86-64 Steam Linux Runtime 4.0 isn't installed. The inspect note for x86-64 Linux builds now says so. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
84ac687399
commit
1580dae42e
8 files changed
+106
-36
No files matched your search
+16
-10
@@ -182,17 +182,23 @@ pair_with_devkit() {
|
||||
comment="frame-control@$(hostname -s | tr -cs 'A-Za-z0-9._-' '-' | sed 's/^[-.]*//; s/[-.]*$//')"
|
||||
[[ "$comment" == "frame-control@" ]] && comment="frame-control@computer"
|
||||
body="ssh-rsa $(awk '{print $2}' "$DEVKIT_KEY.pub") $comment $MAGIC_PHRASE"
|
||||
print " Approve the pairing request in the headset (it waits about 30 seconds)"
|
||||
if ! resp=$(print -r -- "$body" | curl -sS --noproxy '*' -m 60 -H 'Content-Type: text/plain' \
|
||||
--data-binary @- -w '\n%{http_code}' "$(devkit_url /register)" 2>&1); then
|
||||
devkit_why="devkit pairing failed: no answer (${${resp##*curl: }%%$'\n'*})"; return 1
|
||||
fi
|
||||
code=${resp##*$'\n'}
|
||||
text=${resp%$'\n'*}
|
||||
if [[ "$code" != 2* ]]; then
|
||||
print " In the headset: Steam Settings > Developer > Pair new host, then approve the request"
|
||||
# The headset refuses at once unless Steam is on its "Pair new host" screen
|
||||
# (verified on a Frame, 2026-09-26), so keep asking for 2 minutes while it's opened.
|
||||
local deadline=$(( SECONDS + 120 ))
|
||||
while true; do
|
||||
if ! resp=$(print -r -- "$body" | curl -sS --noproxy '*' -m 60 -H 'Content-Type: text/plain' \
|
||||
--data-binary @- -w '\n%{http_code}' "$(devkit_url /register)" 2>&1); then
|
||||
devkit_why="devkit pairing failed: no answer (${${resp##*curl: }%%$'\n'*})"; return 1
|
||||
fi
|
||||
code=${resp##*$'\n'}
|
||||
text=${resp%$'\n'*}
|
||||
[[ "$code" == 2* ]] && break
|
||||
err=$(print -r -- "$text" | sed -n 's/.*"error"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -n 1)
|
||||
devkit_why="devkit pairing failed: ${err:-${text:-HTTP $code}}"; return 1
|
||||
fi
|
||||
devkit_why="devkit pairing failed: ${err:-${text:-HTTP $code}}"
|
||||
[[ "$devkit_why" == *"pairing mode"* ]] && (( SECONDS < deadline )) || return 1
|
||||
sleep 3
|
||||
done
|
||||
# The approval is what turns sshd on, so it may take a moment to answer.
|
||||
local i
|
||||
for i in {1..10}; do
|
||||
|
||||
Reference in new issue
Block a user