firmware/bin/device-update.sh

67 lines
1.6 KiB
Bash
Raw Normal View History

#!/bin/sh
2020-05-07 02:43:17 +00:00
2023-01-21 15:17:08 +00:00
PYTHON=${PYTHON:-$(which python3 python|head -n 1)}
# Determine the correct esptool command to use
if "$PYTHON" -m esptool version >/dev/null 2>&1; then
ESPTOOL_CMD="$PYTHON -m esptool"
elif command -v esptool >/dev/null 2>&1; then
ESPTOOL_CMD="esptool"
elif command -v esptool.py >/dev/null 2>&1; then
ESPTOOL_CMD="esptool.py"
else
echo "Error: esptool not found"
exit 1
fi
# Usage info
show_help() {
2023-01-21 15:17:08 +00:00
cat << EOF
Usage: $(basename $0) [-h] [-p ESPTOOL_PORT] [-P PYTHON] [-f FILENAME|FILENAME]
Flash image file to device, leave existing system intact."
2020-05-07 02:43:17 +00:00
-h Display this help and exit
-p ESPTOOL_PORT Set the environment variable for ESPTOOL_PORT. If not set, ESPTOOL iterates all ports (Dangerous).
-P PYTHON Specify alternate python interpreter to use to invoke esptool. (Default: "$PYTHON")
2022-11-24 11:30:15 +00:00
-f FILENAME The *update.bin file to flash. Custom to your device type.
EOF
}
2020-05-07 02:43:17 +00:00
2023-01-21 15:17:08 +00:00
while getopts ":hp:P:f:" opt; do
2023-01-21 15:17:08 +00:00
case "${opt}" in
h)
show_help
exit 0
;;
p) export ESPTOOL_PORT=${OPTARG}
;;
P) PYTHON=${OPTARG}
;;
f) FILENAME=${OPTARG}
;;
*)
echo "Invalid flag."
2023-01-21 15:17:08 +00:00
show_help >&2
exit 1
;;
esac
done
2023-01-21 15:17:08 +00:00
shift "$((OPTIND-1))"
[ -z "$FILENAME" -a -n "$1" ] && {
2023-01-21 15:17:08 +00:00
FILENAME=$1
shift
}
if [ -f "${FILENAME}" ] && [ -z "${FILENAME##*"update"*}" ]; then
printf "Trying to flash update ${FILENAME}"
$ESPTOOL_CMD --baud 115200 write_flash 0x10000 ${FILENAME}
else
show_help
echo "Invalid file: ${FILENAME}"
fi
exit 0