mirror of
https://github.com/Ralim/IronOS.git
synced 2025-02-26 07:53:55 +00:00
Add flash script for Linux (#40)
* Add flash script for Linux * Add credit and link to github
This commit is contained in:
130
flash/flash_ts100_linux.sh
Executable file
130
flash/flash_ts100_linux.sh
Executable file
@@ -0,0 +1,130 @@
|
||||
#!/bin/bash
|
||||
# TS100 Flasher for Linux by Alex Wigen (https://github.com/awigen)
|
||||
|
||||
DIR_TMP="/tmp/ts100"
|
||||
|
||||
function usage() {
|
||||
echo
|
||||
echo "#################"
|
||||
echo "# TS100 Flasher #"
|
||||
echo "#################"
|
||||
echo
|
||||
echo " Usage: $0 <HEXFILE>"
|
||||
echo
|
||||
echo "This script has been tested to work on Fedora."
|
||||
echo "If you experience any issues please open a ticket at:"
|
||||
echo "https://github.com/Ralim/ts100/issues/new"
|
||||
echo
|
||||
}
|
||||
|
||||
GAUTOMOUNT=0
|
||||
function disable_gautomount {
|
||||
GSETTINGS=`which gsettings`
|
||||
if [ $? -ne 0 ]; then
|
||||
return 1
|
||||
fi
|
||||
gsettings get org.gnome.desktop.media-handling automount | grep true > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
GAUTOMOUNT=1
|
||||
gsettings set org.gnome.desktop.media-handling automount false
|
||||
fi
|
||||
}
|
||||
|
||||
function enable_gautomount {
|
||||
if [ "$GAUTOMOUNT" -ne 0 ]; then
|
||||
gsettings set org.gnome.desktop.media-handling automount true
|
||||
fi
|
||||
}
|
||||
|
||||
function is_attached {
|
||||
output=`lsblk -b --raw --output NAME,MODEL | grep 'DFU\\\\x20Disk'`
|
||||
if [ $? -ne 0 ]; then
|
||||
return 1
|
||||
fi
|
||||
DEVICE=`echo $output | awk '{print "/dev/"$1}'`
|
||||
}
|
||||
|
||||
instructions="not printed"
|
||||
function wait_for_ts100 {
|
||||
is_attached
|
||||
while [ $? -ne 0 ]; do
|
||||
if [ "$instructions" = "not printed" ]; then
|
||||
echo
|
||||
echo "#####################################################"
|
||||
echo "# Waiting for TS100 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 #"
|
||||
echo "#####################################################"
|
||||
echo
|
||||
instructions="printed"
|
||||
fi
|
||||
sleep 0.1
|
||||
is_attached
|
||||
done
|
||||
}
|
||||
|
||||
function mount_ts100 {
|
||||
mkdir -p "$DIR_TMP"
|
||||
sudo mount -t msdos -o uid=$UID "$1" "$DIR_TMP"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to mount $DEVICE on $DIR_TMP"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function umount_ts100 {
|
||||
mountpoint "$DIR_TMP" > /dev/null && sudo umount "$DIR_TMP"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to unmount $DIR_TMP"
|
||||
exit 1
|
||||
fi
|
||||
rmdir "$DIR_TMP"
|
||||
}
|
||||
|
||||
function cleanup {
|
||||
enable_gautomount
|
||||
if [ -d "$DIR_TMP" ]; then
|
||||
umount_ts100
|
||||
fi
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Please provide a HEX file to flash"
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$1" ]; then
|
||||
echo "'$1' is not a regular file, please provide a HEX file to flash"
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ `head -c1 "$1"` != ":" ] || [ `tail -n1 "$1" | head -c1` != ":" ]; then
|
||||
echo "'$1' doesn't look like a valid HEX file. Please provide a HEX file to flash"
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
disable_gautomount
|
||||
|
||||
wait_for_ts100
|
||||
echo "Found TS100 config disk device on $DEVICE"
|
||||
|
||||
mount_ts100
|
||||
echo "Mounted config disk drive, flashing..."
|
||||
cp -v "$1" "$DIR_TMP/ts100.hex"
|
||||
sync
|
||||
|
||||
echo "Waiting for TS100 to flash"
|
||||
sleep 5
|
||||
|
||||
echo "Remounting config disk drive"
|
||||
umount_ts100
|
||||
wait_for_ts100
|
||||
mount_ts100
|
||||
|
||||
echo "Flash result: "
|
||||
ls "$DIR_TMP"/ts100*
|
||||
Reference in New Issue
Block a user