-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathinstaller.sh
executable file
·173 lines (159 loc) · 7.14 KB
/
installer.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#!/bin/bash
REPOSITORY_URL1="https://raw.githubusercontent.com/ojaksch/MiSTer_tty2tft/main"
REPOSITORY_URL2="https://www.tty2tft.de/MiSTer_tty2tft-installer"
DBAUD="921600"
DSTD="--before default_reset --after hard_reset write_flash --compress --flash_mode dio --flash_freq 80m --flash_size detect"
TMPDIR=$(mktemp -d)
cd ${TMPDIR}
flashesp() {
echo "------------------------------------------------------------------------"
case "${MCUtype}" in
TFTESP32)
if [ "${1}" = "stage1" ]; then # Flash GFX Demo/Test
wget -q ${REPOSITORY_URL2}/boot_app0.bin ${REPOSITORY_URL2}/bootloader_dio_80m.bin ${REPOSITORY_URL2}/partitions.bin ${REPOSITORY_URL2}/${2}
${TMPDIR}/esptool.py --chip esp32 --port ${TTYDEV} --baud ${DBAUD} ${DSTD} 0xe000 ${TMPDIR}/boot_app0.bin 0x1000 ${TMPDIR}/bootloader_dio_80m.bin 0x10000 ${TMPDIR}/${2} 0x8000 ${TMPDIR}/partitions.bin
fi
if [ "${1}" = "stage2" ]; then # Flash tty2tft
if [ "${TTY2TFT_UPDATE_BY}" = "WEB" ]; then
echo "CMDOTAUPDATE,${TTY2TFT_DISPLAY}" > ${TTYDEV}
else
wget -q --content-disposition ${REPOSITORY_URL2}/MAC.html?${MAC} ${REPOSITORY_URL2}/boot_app0.bin ${REPOSITORY_URL2}/bootloader_dio_80m.bin ${REPOSITORY_URL2}/partitions.bin ${REPOSITORY_URL2}/esp32de_${BUILDVER}_${TTY2TFT_DISPLAY}.bin?mac=${MAC}
if ! [ -e esp32de_${BUILDVER}_${TTY2TFT_DISPLAY}.bin ]; then
echo -e "${fred}Unfortunately something went wrong!${freset}"
echo -e "${fred}Possible causes:${freset}"
echo -e "${fred}- Missing files, busy server, drunken Webmaster. Call forum.${freset}"
echo -e "${fred}\nMAC address: ${MAC}${freset}"
exit 255
fi
${TMPDIR}/esptool.py --chip esp32 --port ${TTYDEV} --baud ${DBAUD} ${DSTD} 0xe000 ${TMPDIR}/boot_app0.bin 0x1000 ${TMPDIR}/bootloader_dio_80m.bin 0x10000 ${TMPDIR}/esp32de_${BUILDVER}_${TTY2TFT_DISPLAY}.bin 0x8000 ${TMPDIR}/partitions.bin
fi
fi
;;
esac
echo "------------------------------------------------------------------------"
echo -en "${fyellow}${fblink}...waiting for reboot of device...${freset}" ; sleep 4 ; echo -e "\033[2K"
stty -F ${TTYDEV} ${BAUDRATE} ${TTYPARAM} ; sleep 1
echo -e "\n${fgreen}Flash progress completed. Have fun!${freset}"
}
checkesp() {
MAC=$(${TMPDIR}/esptool.py --chip esp32 --port ${TTYDEV} --baud ${DBAUD} --after no_reset flash_id | grep MAC | awk '{print $2}')
MAC=${MAC^^}
}
# If there's an existing ini, use it
if [ -r /media/fat/tty2tft/tty2tft-system.ini ]; then
. /media/fat/tty2tft/tty2tft-system.ini
else
wget -q ${REPOSITORY_URL1}/tty2tft-system.ini -O ${TMPDIR}/tty2tft-system.ini
. ${TMPDIR}/tty2tft-system.ini
fi
if [ -r /media/fat/tty2tft/tty2tft-user.ini ]; then
. /media/fat/tty2tft/tty2tft-user.ini
else
wget -q ${REPOSITORY_URL1}/tty2tft-user.ini -O ${TMPDIR}/tty2tft-user.ini
. ${TMPDIR}/tty2tft-user.ini
fi
# When started with parameter "T" use testing sketch
[ "${TTY2TFT_FW_TESTING}" = "yes" ] && BUILDVER=$(wget -q ${REPOSITORY_URL2}/buildverT -O -) || BUILDVER=$(wget -q ${REPOSITORY_URL2}/buildver -O -)
# Stop an already running daemon
if [ $(pidof ${DAEMONNAME}) ] && [ -f ${INITSCRIPT} ] ; then
${INITSCRIPT} stop
INITSTOPPED="yes"
sleep 0.5
fi
# Install pySerial (if it is missing)
if ! python -c "import serial" &> /dev/null; then
! [ -f /lib/python3.9/site-packages/pyserial-3.5-py3.9.egg ] && wget -q ${REPOSITORY_URL2}/pyserial-3.5-py3.9.egg -O /lib/python3.9/site-packages/pyserial-3.5-py3.9.egg
echo "./pyserial-3.5-py3.9.egg" >> /lib/python3.9/site-packages/easy-install.pth
fi
# Install esptool (if it is missing)
if ! [ -f ${TMPDIR}/esptool.py ]; then
wget -q ${REPOSITORY_URL2}/esptool.py -O ${TMPDIR}/esptool.py
chmod +x ${TMPDIR}/esptool.py
fi
# Check if interface tty* device is present
echo -en "${freset}Checking for device at ${TTYDEV}${freset}: "
if [[ -c ${TTYDEV} ]]; then
stty -F ${TTYDEV} ${BAUDRATE} ${TTYPARAM}
echo -e "${fgreen}available${freset}"
echo -en "${freset}Trying to identify device... ${freset}"
echo "CMDHWINF" > ${TTYDEV} ; read -t5 BLA < ${TTYDEV}
BLA=$(echo $BLA | sed "s/ttyack;//g")
if [[ ${?} > 1 ]] && [ -z "${BLA}" ]; then
MCUtype="TFTESP32"
SWver="0"
checkesp
else
MCUtype="${BLA:0:8}"
SWver="${BLA:9:6}"
MAC="${BLA:16:17}"
if [ "${MCUtype:0:2}" = "HW" ]; then
echo -e "${fgreen}${MCUtype} with sketch version ${SWver}${freset}"
fi
fi
else
echo -e "${fred}Could not connect to interface. Please check USB connection and run script again.${freset}"
exit 1
fi
# Check for MCU
case "${MCUtype}" in
Exit) exit 0 ;;
TFTESP32) echo -e "${fyellow}ESP32 selected/detected.${freset}" ;;
esac
if [ "${1}" = "IDENTIFY" ]; then
#echo -e "${fred}Trying to identify device...${freset}"
echo -e "${fcyan}MAC address is: ${MAC}${freset}"
exit 0
fi
if [ "${1}" = "FORCE" ]; then
MCUtype="TFTESP32"
MAC=$(${TMPDIR}/esptool.py --chip esp32 --port ${TTYDEV} read_mac | grep "MAC: " | tail -n1 | awk '{print $2}')
if ! [ -z "${3}" ]; then BUILDVER="${3}"; fi
echo -e "${fred}FORCED UPDATE${freset}"
echo -e "${fyellow}Version of your tty2tft device is ${fblue}${SWver}${fyellow}, forced BUILDVER is ${fgreen}${BUILDVER}${fyellow}.${freset}"
echo -e "${fyellow}MCUtype is set to ${fblue}${MCUtype}${freset}"
if ! [ -z "${2}" ]; then
TTY2TFT_DISPLAY="${2}"
flashesp stage2 "${TTY2TFT_DISPLAY}"
else
flashesp stage2
fi
[ "${INITSTOPPED}" = "yes" ] && ${INITSCRIPT} start
elif [ "${1}" = "TEST-ILI9341" ]; then
echo -e "${fred}1st Test of your setup${freset}"
flashesp stage1 gfx-test_ILI9341.bin
elif [ "${1}" = "TEST-ILI9341SPI" ]; then
echo -e "${fred}1st Test of your setup${freset}"
flashesp stage1 gfx-test_ILI9341SPI.bin
elif [ "${1}" = "TEST-ILI9486" ]; then
echo -e "${fred}1st Test of your setup${freset}"
flashesp stage1 gfx-test_ILI9486.bin
elif [ "${1}" = "TEST-ILI9488" ]; then
echo -e "${fred}1st Test of your setup${freset}"
flashesp stage1 gfx-test_ILI9488.bin
else
if [[ "${SWver}" < "${BUILDVER}" ]]; then
echo -e "${fyellow}Version of your tty2tft device is ${fblue}${SWver}${fyellow}, but BUILDVER is ${fgreen}${BUILDVER}${fyellow}.${freset}"
echo -en "${fyellow}Do you want to Update? Use Cursor or Joystick for ${fgreen}YES=UP${freset} / ${fred}NO=DOWN${fyellow}. Countdown: 9${freset}"
yesno 9
if [ "${KEY}" = "y" ]; then
echo "Updating tty2tft" > ${TTYDEV}
flashesp stage2
fi
elif [[ "${SWver}" > "${BUILDVER}" ]]; then
if [ "${SWver: -1}" = "T" ]; then
echo -e "${fyellow}Your version ${fblue}${SWver}${fyellow} is newer than the available stable build ${fgreen}${BUILDVER}${fyellow}!${freset}"
echo -en "${fyellow}Do you want to Downgrade? Use Cursor or Joystick for ${fgreen}YES=UP${freset} / ${fred}NO=DOWN${fyellow}. Countdown: 9${freset}"
yesno 9
if [ "${KEY}" = "y" ]; then
echo "Downgrading tty2tft" > ${TTYDEV}
flashesp stage2
fi
fi
[ "${INITSTOPPED}" = "yes" ] && ! [ "${1}" = "UPDATER" ] && ${INITSCRIPT} start
elif [[ "${SWver}" = "${BUILDVER}" ]]; then
echo -e "${fyellow}Good job, your hardware is up-to-date!${freset}"
[ "${INITSTOPPED}" = "yes" ] && ! [ "${1}" = "UPDATER" ] && ${INITSCRIPT} start
fi
fi
rm -rf "${TMPDIR}"
exit 0