From 580bc4f70ddfa20abbe8a742e9b0b4e724c01163 Mon Sep 17 00:00:00 2001 From: Karakurt <43828023+0Karakurt0@users.noreply.github.com> Date: Thu, 17 Jul 2025 03:10:50 +0300 Subject: [PATCH] Updated flasher script with some quality of life (#2141) * Added automatic retries * Generalized naming --- ...sh_ts100_linux.sh => flash_ts10X_linux.sh} | 59 ++++++++++++------- 1 file changed, 37 insertions(+), 22 deletions(-) rename scripts/{flash_ts100_linux.sh => flash_ts10X_linux.sh} (75%) diff --git a/scripts/flash_ts100_linux.sh b/scripts/flash_ts10X_linux.sh similarity index 75% rename from scripts/flash_ts100_linux.sh rename to scripts/flash_ts10X_linux.sh index d2139f21..5681859e 100755 --- a/scripts/flash_ts100_linux.sh +++ b/scripts/flash_ts10X_linux.sh @@ -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 " 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