Skip to content

Instantly share code, notes, and snippets.

@pagdot
Last active November 16, 2024 11:44
Show Gist options
  • Select an option

  • Save pagdot/9ca6dd8143b0f496b9a8ceb02e9738ed to your computer and use it in GitHub Desktop.

Select an option

Save pagdot/9ca6dd8143b0f496b9a8ceb02e9738ed to your computer and use it in GitHub Desktop.
Script to update valetudo binary without internet access on the robot. I've only done a limited amount of testing on the script, so use it at your own risk
#!/bin/sh
# Set to correct arch
ARCH=aarch64
# set to ssh host e.g. root@192.168.0.17
SSH_HOST=valetudo
releaseManifest=$(wget -q https://github.com/Hypfer/Valetudo/releases/latest/download/valetudo_release_manifest.json -O -)
echo Found release $(echo "${releaseManifest}" | jq -r ".version")
releaseSum=$(echo "${releaseManifest}" | jq -r ".sha256sums.\"valetudo-${ARCH}\"")
if [[ -z $releaseSum ]]; then
echo Failed to get checksum from release! Exiting
exit 1
fi
echo "Release checksum: ${releaseSum}"
installedSum=$(ssh "${SSH_HOST}" "sha256sum /data/valetudo | awk '{print \$1}'")
if [[ -z $installedSum ]]; then
echo Failed to get checksum from install! Exiting
exit 1
fi
echo Installed checksum: ${installedSum}
if [[ "$releaseSum" == "$installedSum" ]]; then
echo Valetudo already up to date!
exit 0
fi
echo Stopping valetudo and backing up old binary
ssh "${SSH_HOST}" "killall valetudo && mv /data/valetudo /data/valetudo.old"
echo Downloading latest
wget -q -O - "https://github.com/Hypfer/Valetudo/releases/latest/download/valetudo-${ARCH}" | ssh "${SSH_HOST}" "cat > /data/valetudo"
installedSum=$(ssh "${SSH_HOST}" "sha256sum /data/valetudo | awk '{print \$1}'")
if [[ -z $installedSum ]]; then
echo Failed to get checksum from install! Update is borked!
exit 1
fi
echo Newly installed checksum: ${releaseSum}
if [[ "$releaseSum" != "$installedSum" ]]; then
echo "Checksum don't match! Update is borked!"
exit 1
fi
echo Update successful! Rebooting
ssh "${SSH_HOST}" "chmod +x /data/valetudo && reboot"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment