mirror of
https://github.com/Ralim/IronOS.git
synced 2025-07-22 12:00:35 +02:00
Updated flasher script with some quality of life (#2141)
* Added automatic retries * Generalized naming
This commit is contained in:
@@ -1,19 +1,21 @@
|
||||
#!/bin/bash
|
||||
# TS100 Flasher for Linux by Alex Wigen (https://github.com/awigen)
|
||||
# Jan 2021 - Update by Ysard (https://github.com/ysard)
|
||||
# Jul 2025 - Update by Karakurt
|
||||
|
||||
DIR_TMP="/tmp/ts100"
|
||||
DIR_TMP="/tmp/ironos"
|
||||
HEX_FIRMWARE="$DIR_TMP/ts100.hex"
|
||||
MAX_TRIES=5
|
||||
|
||||
usage() {
|
||||
echo
|
||||
echo "#################"
|
||||
echo "# TS100 Flasher #"
|
||||
echo "#################"
|
||||
echo "#######################"
|
||||
echo "# TS100/TS101 Flasher #"
|
||||
echo "#######################"
|
||||
echo
|
||||
echo " Usage: $0 <HEXFILE>"
|
||||
echo
|
||||
echo "This script has been tested to work on Fedora."
|
||||
echo "This script has been tested to work on Fedora and Arch Linux."
|
||||
echo "If you experience any issues please open a ticket at:"
|
||||
echo "https://github.com/Ralim/IronOS/issues/new"
|
||||
echo
|
||||
@@ -44,12 +46,12 @@ is_attached() {
|
||||
}
|
||||
|
||||
instructions="not printed"
|
||||
wait_for_ts100() {
|
||||
wait_for_iron() {
|
||||
while ! is_attached; do
|
||||
if [ "$instructions" = "not printed" ]; then
|
||||
echo
|
||||
echo "#####################################################"
|
||||
echo "# Waiting for TS100 config disk device to appear #"
|
||||
echo "# Waiting for config disk device to appear #"
|
||||
echo "# #"
|
||||
echo "# Connect the soldering iron with a USB cable while #"
|
||||
echo "# holding the button closest to the tip pressed #"
|
||||
@@ -61,7 +63,7 @@ wait_for_ts100() {
|
||||
done
|
||||
}
|
||||
|
||||
mount_ts100() {
|
||||
mount_iron() {
|
||||
mkdir -p "$DIR_TMP"
|
||||
user="${UID:-$(id -u)}"
|
||||
if ! sudo mount -t msdos -o uid=$user "$DEVICE" "$DIR_TMP"; then
|
||||
@@ -70,11 +72,12 @@ mount_ts100() {
|
||||
fi
|
||||
}
|
||||
|
||||
umount_ts100() {
|
||||
umount_iron() {
|
||||
if ! (mountpoint "$DIR_TMP" > /dev/null && sudo umount "$DIR_TMP"); then
|
||||
echo "Failed to unmount $DIR_TMP"
|
||||
exit 1
|
||||
fi
|
||||
sleep 1
|
||||
sudo rmdir "$DIR_TMP"
|
||||
}
|
||||
|
||||
@@ -84,19 +87,22 @@ check_flash() {
|
||||
if [ -f "$RDY_FIRMWARE" ]; then
|
||||
echo -e "\e[92mFlash is done\e[0m"
|
||||
echo "Disconnect the USB and power up the iron. You're good to go."
|
||||
return 0
|
||||
elif [ -f "$ERR_FIRMWARE" ]; then
|
||||
echo -e "\e[91mFlash error; Please retry!\e[0m"
|
||||
return 1
|
||||
else
|
||||
echo -e "\e[91mUNKNOWN error\e[0m"
|
||||
echo "Flash result: "
|
||||
ls "$DIR_TMP"/ts100*
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
enable_gautomount
|
||||
if [ -d "$DIR_TMP" ]; then
|
||||
umount_ts100
|
||||
umount_iron
|
||||
fi
|
||||
}
|
||||
trap cleanup EXIT
|
||||
@@ -121,19 +127,28 @@ fi
|
||||
|
||||
disable_gautomount
|
||||
|
||||
wait_for_ts100
|
||||
echo "Found TS100 config disk device on $DEVICE"
|
||||
TRIES=0
|
||||
while [ $TRIES -lt $MAX_TRIES ]; do
|
||||
wait_for_iron
|
||||
NAME=$(sudo fatlabel "$DEVICE" 2>/dev/null)
|
||||
echo "Found $NAME config disk device on $DEVICE"
|
||||
|
||||
mount_ts100
|
||||
echo "Mounted config disk drive, flashing..."
|
||||
dd if="$1" of="$HEX_FIRMWARE" oflag=direct
|
||||
umount_ts100
|
||||
mount_iron
|
||||
echo "Mounted config disk drive, flashing..."
|
||||
dd if="$1" of="$HEX_FIRMWARE" oflag=direct
|
||||
umount_iron
|
||||
|
||||
echo "Waiting for TS100 to flash"
|
||||
sleep 5
|
||||
echo "Waiting for $NAME to flash"
|
||||
sleep 5
|
||||
|
||||
echo "Remounting config disk drive"
|
||||
wait_for_ts100
|
||||
mount_ts100
|
||||
check_flash
|
||||
echo "Remounting config disk drive"
|
||||
wait_for_iron
|
||||
mount_iron
|
||||
check_flash && exit 0
|
||||
|
||||
echo "Retrying automatically..."
|
||||
TRIES=$((TRIES + 1))
|
||||
done
|
||||
echo -e "\e[91mMax retries reached.\e[0m"
|
||||
exit 1
|
||||
|
Reference in New Issue
Block a user