-
Notifications
You must be signed in to change notification settings - Fork 4
/
build-archerc50-web-fw.sh
136 lines (128 loc) · 3.94 KB
/
build-archerc50-web-fw.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
#!/bin/bash
# Description: Creates factory firmware images for TP-Link Archer C50 v3/v4
# License: GPLv3
# Requirements: /usr/bin/zip
# Initial version written by Collimas from Freifunk Lippe e.V.
ORIG_FW_LINK_V3="https://static.tp-link.com/2018/201804/20180420/Archer%20C50(EU)_V3_171227.zip"
ORIG_FW_LINK_V4="https://static.tp-link.com/2018/201805/20180528/Archer%20C50(EU)_V4_180313.zip"
GLUON_FW_LINK_V3="https://images.ffdo.de/ffdo_ng/domaenen/domaene07/releases/2.2.3/images/sysupgrade/gluon-ffdo-d07-2.2.3-tp-link-archer-c50-v3-sysupgrade.bin"
GLUON_FW_LINK_V4="https://images.ffdo.de/ffdo_ng/domaenen/domaene07/releases/2.2.3/images/sysupgrade/gluon-ffdo-d07-2.2.3-tp-link-archer-c50-v4-sysupgrade.bin"
OUTPUT_GLUON_WEB_NAME_V3="gluon-ffdo-d07-2.2.3-tp-link-archer-c50-v3-factory-web.bin"
OUTPUT_GLUON_WEB_NAME_V4="gluon-ffdo-d07-2.2.3-tp-link-archer-c50-v4-factory-web.bin"
build_v3() {
rm -rf archerc50temp/v3
mkdir -p archerc50temp/v3
cd archerc50temp
wget "$ORIG_FW_LINK_V3"
unzip -j Archer*.zip -d v3
rm Archer*.zip
echo "Hersteller-Firmware erfolgreich heruntergeladen und entpackt"
cd v3
wget "$GLUON_FW_LINK_V3"
echo "Freifunk-Firmware erfolgreich heruntergeladen"
mkdir web
echo "Verzeichnis web erfolgreich angelegt"
cp Archer*.bin web/tpl.bin
cp gluon*.bin web/owrt.bin
mkdir tftp
echo "Verzeichnis tftp erfolgreich angelegt"
cp Archer*.bin tftp/tpl.bin
cp gluon*.bin tftp/owrt.bin
cd web
dd if=tpl.bin of=boot.bin bs=131584 count=1
cat owrt.bin >> boot.bin
mv boot.bin "$OUTPUT_GLUON_WEB_NAME_V3"
cd ../tftp
dd if=/dev/zero of=tp_recovery.bin bs=196608 count=1
dd if=tpl.bin of=tmp.bin bs=131584 count=1
dd if=tmp.bin of=boot.bin bs=512 skip=1
cat boot.bin >> tp_recovery.bin
cat owrt.bin >> tp_recovery.bin
cd ..
rm web/owrt.bin
rm web/tpl.bin
rm tftp/owrt.bin
rm tftp/tpl.bin
rm tftp/boot.bin
rm tftp/tmp.bin
rm *.bin
rm *.pdf
echo
echo "Webflash- und TFTP-Recovery-Images erfolgreich erzeugt"
echo "Diese sind unter den Pfaden $HOME/archerc50temp/v3/tftp und"
echo "$HOME/archerc50temp/v3/web zu finden."
abfrage
}
build_v4() {
rm -rf archerc50temp/v4
mkdir -p archerc50temp/v4
cd archerc50temp
wget "$ORIG_FW_LINK_V4"
unzip -j Archer*.zip -d v4
rm Archer*.zip
echo "Hersteller-Firmware erfolgreich heruntergeladen und entpackt"
cd v4
wget "$GLUON_FW_LINK_V4"
echo "Freifunk-Firmware erfolgreich heruntergeladen"
mkdir web
echo "Verzeichnis web erfolgreich angelegt"
cp Archer*.bin web/tpl.bin
cp gluon*.bin web/owrt.bin
mkdir tftp
echo "Verzeichnis tftp erfolgreich angelegt"
cp Archer*.bin tftp/tpl.bin
cp gluon*.bin tftp/owrt.bin
cd web
dd if=tpl.bin of=boot.bin bs=131584 count=1
cat owrt.bin >> boot.bin
mv boot.bin "$OUTPUT_GLUON_WEB_NAME_V4"
cd ../tftp
dd if=/dev/zero of=tp_recovery.bin bs=196608 count=1
dd if=tpl.bin of=tmp.bin bs=131584 count=1
dd if=tmp.bin of=boot.bin bs=512 skip=1
cat boot.bin >> tp_recovery.bin
cat owrt.bin >> tp_recovery.bin
cd ..
rm web/owrt.bin
rm web/tpl.bin
rm tftp/owrt.bin
rm tftp/tpl.bin
rm tftp/boot.bin
rm tftp/tmp.bin
rm *.bin
rm *.pdf
echo
echo "Webflash- und TFTP-Recovery-Images erfolgreich erzeugt"
echo "Diese sind unter den Pfaden $HOME/archerc50temp/v4/tftp und"
echo "$HOME/archerc50temp/v4/web zu finden."
abfrage
}
abfrage() {
cd
echo
echo "Mit diesem Script werden Web- und TFTP-Recovery-Images für den TP-Link Archer C50 v3/v4 erzeugt."
echo "Diese Software unterliegt der GPLv3 Lizenz."
echo
PS3='Bitte Hardware-Revision des TP-Link Archer C50 auswählen: '
options=("v3" "v4" "Quit")
select opt in "${options[@]}"
do
case $opt in
"v3")
echo "Du hast Hardwarerevision 3 gewählt. Weiter gehts..."
build_v3
exit
;;
"v4")
echo "Du hast Hardwarerevision 4 gewählt. Weiter gehts..."
build_v4
exit
;;
"Quit")
break
;;
*) echo "Ungültige Auswahl $REPLY";
esac
done
}
abfrage