OpenWrt – Blame information for rev 4
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
4 | office | 1 | # |
2 | # Copyright (C) 2011 OpenWrt.org |
||
3 | # |
||
4 | |||
5 | . /lib/functions/system.sh |
||
6 | . /lib/ar71xx.sh |
||
7 | |||
8 | PART_NAME=firmware |
||
9 | RAMFS_COPY_DATA=/lib/ar71xx.sh |
||
10 | RAMFS_COPY_BIN='nandwrite' |
||
11 | |||
12 | CI_BLKSZ=65536 |
||
13 | CI_LDADR=0x80060000 |
||
14 | |||
15 | PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=0 |
||
16 | |||
17 | platform_find_partitions() { |
||
18 | local first dev size erasesize name |
||
19 | while read dev size erasesize name; do |
||
20 | name=${name#'"'}; name=${name%'"'} |
||
21 | case "$name" in |
||
22 | vmlinux.bin.l7|vmlinux|kernel|linux|linux.bin|rootfs|filesystem) |
||
23 | if [ -z "$first" ]; then |
||
24 | first="$name" |
||
25 | else |
||
26 | echo "$erasesize:$first:$name" |
||
27 | break |
||
28 | fi |
||
29 | ;; |
||
30 | esac |
||
31 | done < /proc/mtd |
||
32 | } |
||
33 | |||
34 | platform_find_kernelpart() { |
||
35 | local part |
||
36 | for part in "${1%:*}" "${1#*:}"; do |
||
37 | case "$part" in |
||
38 | vmlinux.bin.l7|vmlinux|kernel|linux|linux.bin) |
||
39 | echo "$part" |
||
40 | break |
||
41 | ;; |
||
42 | esac |
||
43 | done |
||
44 | } |
||
45 | |||
46 | platform_find_rootfspart() { |
||
47 | local part |
||
48 | for part in "${1%:*}" "${1#*:}"; do |
||
49 | [ "$part" != "$2" ] && echo "$part" && break |
||
50 | done |
||
51 | } |
||
52 | |||
53 | platform_do_upgrade_combined() { |
||
54 | local partitions=$(platform_find_partitions) |
||
55 | local kernelpart=$(platform_find_kernelpart "${partitions#*:}") |
||
56 | local erase_size=$((0x${partitions%%:*})); partitions="${partitions#*:}" |
||
57 | local kern_length=0x$(dd if="$1" bs=2 skip=1 count=4 2>/dev/null) |
||
58 | local kern_blocks=$(($kern_length / $CI_BLKSZ)) |
||
59 | local root_blocks=$((0x$(dd if="$1" bs=2 skip=5 count=4 2>/dev/null) / $CI_BLKSZ)) |
||
60 | |||
61 | if [ -n "$partitions" ] && [ -n "$kernelpart" ] && \ |
||
62 | [ ${kern_blocks:-0} -gt 0 ] && \ |
||
63 | [ ${root_blocks:-0} -gt 0 ] && \ |
||
64 | [ ${erase_size:-0} -gt 0 ]; |
||
65 | then |
||
66 | local rootfspart=$(platform_find_rootfspart "$partitions" "$kernelpart") |
||
67 | local append="" |
||
68 | [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR" |
||
69 | |||
70 | if [ "$PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD" -ne 1 ]; then |
||
71 | ( dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks 2>/dev/null; \ |
||
72 | dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) count=$root_blocks 2>/dev/null ) | \ |
||
73 | mtd -r $append -F$kernelpart:$kern_length:$CI_LDADR,rootfs write - $partitions |
||
74 | elif [ -n "$rootfspart" ]; then |
||
75 | dd if="$1" bs=$CI_BLKSZ skip=1 count=$kern_blocks 2>/dev/null | \ |
||
76 | mtd write - $kernelpart |
||
77 | dd if="$1" bs=$CI_BLKSZ skip=$((1+$kern_blocks)) count=$root_blocks 2>/dev/null | \ |
||
78 | mtd -r $append write - $rootfspart |
||
79 | fi |
||
80 | fi |
||
81 | PLATFORM_DO_UPGRADE_COMBINED_SEPARATE_MTD=0 |
||
82 | } |
||
83 | |||
84 | tplink_get_image_hwid() { |
||
85 | get_image "$@" | dd bs=4 count=1 skip=16 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' |
||
86 | } |
||
87 | |||
88 | tplink_get_image_mid() { |
||
89 | get_image "$@" | dd bs=4 count=1 skip=17 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' |
||
90 | } |
||
91 | |||
92 | tplink_get_image_boot_size() { |
||
93 | get_image "$@" | dd bs=4 count=1 skip=37 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' |
||
94 | } |
||
95 | |||
96 | tplink_pharos_check_support_list() { |
||
97 | local image="$1" |
||
98 | local offset="$2" |
||
99 | local model="$3" |
||
100 | local trargs="$4" |
||
101 | |||
102 | # Here $image is given to dd directly instead of using get_image; |
||
103 | # otherwise the skip will take almost a second (as dd can't seek) |
||
104 | dd if="$image" bs=1 skip=$offset count=1024 2>/dev/null | tr -d "$trargs" | ( |
||
105 | while IFS= read -r line; do |
||
106 | [ "$line" = "$model" ] && exit 0 |
||
107 | done |
||
108 | |||
109 | exit 1 |
||
110 | ) |
||
111 | } |
||
112 | |||
113 | tplink_pharos_check_image() { |
||
114 | local image_magic="$(get_magic_long "$1")" |
||
115 | local board_magic="$2" |
||
116 | [ "$image_magic" != "$board_magic" ] && { |
||
117 | echo "Invalid image magic '$image_magic'. Expected '$board_magic'." |
||
118 | return 1 |
||
119 | } |
||
120 | |||
121 | local model_string="$3" |
||
122 | local trargs="$4" |
||
123 | |||
124 | # New images have the support list at 7802888, old ones at 1511432 |
||
125 | tplink_pharos_check_support_list "$1" 7802888 "$model_string" "$trargs" || \ |
||
126 | tplink_pharos_check_support_list "$1" 1511432 "$model_string" "$trargs" || { |
||
127 | echo "Unsupported image (model not in support-list)" |
||
128 | return 1 |
||
129 | } |
||
130 | |||
131 | return 0 |
||
132 | } |
||
133 | |||
134 | seama_get_type_magic() { |
||
135 | get_image "$@" | dd bs=1 count=4 skip=53 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' |
||
136 | } |
||
137 | |||
138 | wrgg_get_image_magic() { |
||
139 | get_image "$@" | dd bs=4 count=1 skip=8 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' |
||
140 | } |
||
141 | |||
142 | cybertan_get_image_magic() { |
||
143 | get_image "$@" | dd bs=8 count=1 skip=0 2>/dev/null | hexdump -v -n 8 -e '1/1 "%02x"' |
||
144 | } |
||
145 | |||
146 | cybertan_check_image() { |
||
147 | local magic="$(cybertan_get_image_magic "$1")" |
||
148 | local fw_magic="$(cybertan_get_hw_magic)" |
||
149 | |||
150 | [ "$fw_magic" != "$magic" ] && { |
||
151 | echo "Invalid image, ID mismatch, got:$magic, but need:$fw_magic" |
||
152 | return 1 |
||
153 | } |
||
154 | |||
155 | return 0 |
||
156 | } |
||
157 | |||
158 | platform_do_upgrade_compex() { |
||
159 | local fw_file=$1 |
||
160 | local fw_part=$PART_NAME |
||
161 | local fw_mtd=$(find_mtd_part $fw_part) |
||
162 | local fw_length=0x$(dd if="$fw_file" bs=2 skip=1 count=4 2>/dev/null) |
||
163 | local fw_blocks=$(($fw_length / 65536)) |
||
164 | |||
165 | if [ -n "$fw_mtd" ] && [ ${fw_blocks:-0} -gt 0 ]; then |
||
166 | local append="" |
||
167 | [ -f "$CONF_TAR" -a "$SAVE_CONFIG" -eq 1 ] && append="-j $CONF_TAR" |
||
168 | |||
169 | sync |
||
170 | dd if="$fw_file" bs=64k skip=1 count=$fw_blocks 2>/dev/null | \ |
||
171 | mtd $append write - "$fw_part" |
||
172 | fi |
||
173 | } |
||
174 | |||
175 | alfa_check_image() { |
||
176 | local magic_long="$(get_magic_long "$1")" |
||
177 | local fw_part_size=$(mtd_get_part_size firmware) |
||
178 | |||
179 | case "$magic_long" in |
||
180 | "27051956") |
||
181 | [ "$fw_part_size" != "16318464" ] && { |
||
182 | echo "Invalid image magic \"$magic_long\" for $fw_part_size bytes" |
||
183 | return 1 |
||
184 | } |
||
185 | ;; |
||
186 | "68737173") |
||
187 | [ "$fw_part_size" != "7929856" ] && { |
||
188 | echo "Invalid image magic \"$magic_long\" for $fw_part_size bytes" |
||
189 | return 1 |
||
190 | } |
||
191 | ;; |
||
192 | esac |
||
193 | |||
194 | return 0 |
||
195 | } |
||
196 | |||
197 | gl_board_is_nand() { |
||
198 | local size="$(mtd_get_part_size 'ubi')" |
||
199 | case "$size" in |
||
200 | 132120576) |
||
201 | return 0 |
||
202 | ;; |
||
203 | 134217728) |
||
204 | return 0 |
||
205 | ;; |
||
206 | *) |
||
207 | return 1 |
||
208 | ;; |
||
209 | esac |
||
210 | } |
||
211 | |||
212 | # $(1) image file |
||
213 | # $(2) board name |
||
214 | # $(3) magic |
||
215 | platform_check_image_gl_nand() { |
||
216 | local board=$2 |
||
217 | local magic=$3 |
||
218 | |||
219 | if gl_board_is_nand; then |
||
220 | nand_do_platform_check $board $1 |
||
221 | return $? |
||
222 | else |
||
223 | [ "$magic" != "2705" ] && { |
||
224 | echo "Invalid image type." |
||
225 | return 1 |
||
226 | } |
||
227 | return 0 |
||
228 | fi |
||
229 | } |
||
230 | |||
231 | platform_check_image() { |
||
232 | local board=$(board_name) |
||
233 | local magic="$(get_magic_word "$1")" |
||
234 | local magic_long="$(get_magic_long "$1")" |
||
235 | |||
236 | [ "$#" -gt 1 ] && return 1 |
||
237 | |||
238 | case "$board" in |
||
239 | airgateway|\ |
||
240 | airgatewaypro|\ |
||
241 | airrouter|\ |
||
242 | ap121f|\ |
||
243 | ap132|\ |
||
244 | ap531b0|\ |
||
245 | ap90q|\ |
||
246 | archer-c25-v1|\ |
||
247 | archer-c58-v1|\ |
||
248 | archer-c59-v1|\ |
||
249 | archer-c60-v1|\ |
||
250 | archer-c60-v2|\ |
||
251 | archer-c7-v4|\ |
||
252 | archer-c7-v5|\ |
||
253 | bullet-m|\ |
||
254 | c-55|\ |
||
255 | carambola2|\ |
||
256 | cf-e316n-v2|\ |
||
257 | cf-e320n-v2|\ |
||
258 | cf-e355ac-v1|\ |
||
259 | cf-e355ac-v2|\ |
||
260 | cf-e375ac|\ |
||
261 | cf-e380ac-v1|\ |
||
262 | cf-e380ac-v2|\ |
||
263 | cf-e385ac|\ |
||
264 | cf-e520n|\ |
||
265 | cf-e530n|\ |
||
266 | cpe505n|\ |
||
267 | cpe830|\ |
||
268 | cpe870|\ |
||
269 | dap-1330-a1|\ |
||
270 | dgl-5500-a1|\ |
||
271 | dhp-1565-a1|\ |
||
272 | dir-505-a1|\ |
||
273 | dir-600-a1|\ |
||
274 | dir-615-c1|\ |
||
275 | dir-615-e1|\ |
||
276 | dir-615-e4|\ |
||
277 | dir-615-i1|\ |
||
278 | dir-825-c1|\ |
||
279 | dir-835-a1|\ |
||
280 | dlan-hotspot|\ |
||
281 | dlan-pro-1200-ac|\ |
||
282 | dlan-pro-500-wp|\ |
||
283 | dr342|\ |
||
284 | dr531|\ |
||
285 | dragino2|\ |
||
286 | e1700ac-v2|\ |
||
287 | e558-v2|\ |
||
288 | e600g-v2|\ |
||
289 | e600gac-v2|\ |
||
290 | e750a-v4|\ |
||
291 | e750g-v8|\ |
||
292 | ebr-2310-c1|\ |
||
293 | ens202ext|\ |
||
294 | epg5000|\ |
||
295 | esr1750|\ |
||
296 | esr900|\ |
||
297 | ew-balin|\ |
||
298 | ew-dorin|\ |
||
299 | ew-dorin-router|\ |
||
300 | gl-ar150|\ |
||
301 | gl-ar300|\ |
||
302 | gl-ar750|\ |
||
303 | gl-domino|\ |
||
304 | gl-mifi|\ |
||
305 | gl-mifi-v3|\ |
||
306 | gl-usb150|\ |
||
307 | hiwifi-hc6361|\ |
||
308 | hornet-ub-x2|\ |
||
309 | jwap230|\ |
||
310 | lbe-m5|\ |
||
311 | lima|\ |
||
312 | loco-m-xw|\ |
||
313 | mzk-w04nu|\ |
||
314 | mzk-w300nh|\ |
||
315 | n5q|\ |
||
316 | nanostation-m|\ |
||
317 | nanostation-m-xw|\ |
||
318 | nbg460n_550n_550nh|\ |
||
319 | pqi-air-pen|\ |
||
320 | r36a|\ |
||
321 | r602n|\ |
||
322 | rme-eg200|\ |
||
323 | rocket-m|\ |
||
324 | rocket-m-ti|\ |
||
325 | rocket-m-xw|\ |
||
326 | rw2458n|\ |
||
327 | sc1750|\ |
||
328 | sc300m|\ |
||
329 | sc450|\ |
||
330 | sr3200|\ |
||
331 | t830|\ |
||
332 | tew-632brp|\ |
||
333 | tew-712br|\ |
||
334 | tew-732br|\ |
||
335 | tew-823dru|\ |
||
336 | tl-wr1043n-v5|\ |
||
337 | tl-wr942n-v1|\ |
||
338 | unifi|\ |
||
339 | unifi-outdoor|\ |
||
340 | unifiac-lite|\ |
||
341 | unifiac-pro|\ |
||
342 | wam250|\ |
||
343 | weio|\ |
||
344 | whr-g301n|\ |
||
345 | whr-hp-g300n|\ |
||
346 | whr-hp-gn|\ |
||
347 | wlae-ag300n|\ |
||
348 | wndap360|\ |
||
349 | wpj342|\ |
||
350 | wpj344|\ |
||
351 | wpj531|\ |
||
352 | wpj558|\ |
||
353 | wpj563|\ |
||
354 | wrt400n|\ |
||
355 | wrtnode2q|\ |
||
356 | wzr-450hp2|\ |
||
357 | wzr-hp-ag300h|\ |
||
358 | wzr-hp-g300nh|\ |
||
359 | wzr-hp-g300nh2|\ |
||
360 | wzr-hp-g450h|\ |
||
361 | xd3200) |
||
362 | [ "$magic" != "2705" ] && { |
||
363 | echo "Invalid image type." |
||
364 | return 1 |
||
365 | } |
||
366 | |||
367 | return 0 |
||
368 | ;; |
||
369 | gl-ar300m|\ |
||
370 | gl-x750|\ |
||
371 | gl-x1200|\ |
||
372 | gl-ar750s) |
||
373 | platform_check_image_gl_nand "$1" "$board" "$magic" && return 0 |
||
374 | return 1 |
||
375 | ;; |
||
376 | alfa-ap96|\ |
||
377 | alfa-nx|\ |
||
378 | ap121|\ |
||
379 | ap121-mini|\ |
||
380 | ap135-020|\ |
||
381 | ap136-010|\ |
||
382 | ap136-020|\ |
||
383 | ap147-010|\ |
||
384 | ap152|\ |
||
385 | ap91-5g|\ |
||
386 | ap96|\ |
||
387 | arduino-yun|\ |
||
388 | bhr-4grv2|\ |
||
389 | bxu2000n-2-a1|\ |
||
390 | db120|\ |
||
391 | dr344|\ |
||
392 | dw33d|\ |
||
393 | f9k1115v2|\ |
||
394 | hornet-ub|\ |
||
395 | mr12|\ |
||
396 | mr16|\ |
||
397 | zbt-we1526|\ |
||
398 | zcn-1523h-2|\ |
||
399 | zcn-1523h-5) |
||
400 | [ "$magic_long" != "68737173" -a "$magic_long" != "19852003" ] && { |
||
401 | echo "Invalid image type." |
||
402 | return 1 |
||
403 | } |
||
404 | |||
405 | return 0 |
||
406 | ;; |
||
407 | all0258n|\ |
||
408 | all0315n|\ |
||
409 | cap324|\ |
||
410 | cap4200ag|\ |
||
411 | cr3000|\ |
||
412 | cr5000) |
||
413 | platform_check_image_allnet "$1" && return 0 |
||
414 | return 1 |
||
415 | ;; |
||
416 | all0305|\ |
||
417 | eap300v2|\ |
||
418 | eap7660d|\ |
||
419 | ja76pf|\ |
||
420 | ja76pf2|\ |
||
421 | jwap003|\ |
||
422 | ls-sr71|\ |
||
423 | pb42|\ |
||
424 | pb44|\ |
||
425 | routerstation|\ |
||
426 | routerstation-pro|\ |
||
427 | wp543|\ |
||
428 | wpe72) |
||
429 | [ "$magic" != "4349" ] && { |
||
430 | echo "Invalid image. Use *-sysupgrade.bin files on this board" |
||
431 | return 1 |
||
432 | } |
||
433 | |||
434 | local md5_img=$(dd if="$1" bs=2 skip=9 count=16 2>/dev/null) |
||
435 | local md5_chk=$(dd if="$1" bs=$CI_BLKSZ skip=1 2>/dev/null | md5sum -); md5_chk="${md5_chk%% *}" |
||
436 | |||
437 | if [ -n "$md5_img" -a -n "$md5_chk" ] && [ "$md5_img" = "$md5_chk" ]; then |
||
438 | return 0 |
||
439 | else |
||
440 | echo "Invalid image. Contents do not match checksum (image:$md5_img calculated:$md5_chk)" |
||
441 | return 1 |
||
442 | fi |
||
443 | |||
444 | return 0 |
||
445 | ;; |
||
446 | antminer-s1|\ |
||
447 | antminer-s3|\ |
||
448 | antrouter-r1|\ |
||
449 | archer-c5|\ |
||
450 | archer-c7|\ |
||
451 | el-m150|\ |
||
452 | el-mini|\ |
||
453 | gl-inet|\ |
||
454 | lan-turtle|\ |
||
455 | mc-mac1200r|\ |
||
456 | minibox-v1|\ |
||
457 | omy-g1|\ |
||
458 | omy-x1|\ |
||
459 | onion-omega|\ |
||
460 | oolite-v1|\ |
||
461 | oolite-v5.2|\ |
||
462 | oolite-v5.2-dev|\ |
||
463 | packet-squirrel|\ |
||
464 | re355|\ |
||
465 | re450|\ |
||
466 | rut900|\ |
||
467 | smart-300|\ |
||
468 | som9331|\ |
||
469 | tellstick-znet-lite|\ |
||
470 | tl-mr10u|\ |
||
471 | tl-mr11u|\ |
||
472 | tl-mr12u|\ |
||
473 | tl-mr13u|\ |
||
474 | tl-mr3020|\ |
||
475 | tl-mr3040|\ |
||
476 | tl-mr3040-v2|\ |
||
477 | tl-mr3220|\ |
||
478 | tl-mr3220-v2|\ |
||
479 | tl-mr3420|\ |
||
480 | tl-mr3420-v2|\ |
||
481 | tl-mr6400|\ |
||
482 | tl-wa701nd-v2|\ |
||
483 | tl-wa7210n-v2|\ |
||
484 | tl-wa750re|\ |
||
485 | tl-wa7510n|\ |
||
486 | tl-wa801nd-v2|\ |
||
487 | tl-wa801nd-v3|\ |
||
488 | tl-wa830re-v2|\ |
||
489 | tl-wa850re|\ |
||
490 | tl-wa850re-v2|\ |
||
491 | tl-wa855re-v1|\ |
||
492 | tl-wa860re|\ |
||
493 | tl-wa901nd|\ |
||
494 | tl-wa901nd-v2|\ |
||
495 | tl-wa901nd-v3|\ |
||
496 | tl-wa901nd-v4|\ |
||
497 | tl-wa901nd-v5|\ |
||
498 | tl-wdr3320-v2|\ |
||
499 | tl-wdr3500|\ |
||
500 | tl-wdr4300|\ |
||
501 | tl-wdr4900-v2|\ |
||
502 | tl-wdr6500-v2|\ |
||
503 | tl-wpa8630|\ |
||
504 | tl-wr1041n-v2|\ |
||
505 | tl-wr1043nd|\ |
||
506 | tl-wr1043nd-v2|\ |
||
507 | tl-wr1043nd-v4|\ |
||
508 | tl-wr2543n|\ |
||
509 | tl-wr703n|\ |
||
510 | tl-wr710n|\ |
||
511 | tl-wr720n-v3|\ |
||
512 | tl-wr740n-v6|\ |
||
513 | tl-wr741nd|\ |
||
514 | tl-wr741nd-v4|\ |
||
515 | tl-wr802n-v1|\ |
||
516 | tl-wr802n-v2|\ |
||
517 | tl-wr810n|\ |
||
518 | tl-wr810n-v2|\ |
||
519 | tl-wr840n-v2|\ |
||
520 | tl-wr840n-v3|\ |
||
521 | tl-wr841n-v1|\ |
||
522 | tl-wr841n-v7|\ |
||
523 | tl-wr841n-v8|\ |
||
524 | tl-wr841n-v9|\ |
||
525 | tl-wr841n-v11|\ |
||
526 | tl-wr842n-v2|\ |
||
527 | tl-wr842n-v3|\ |
||
528 | tl-wr902ac-v1|\ |
||
529 | tl-wr940n-v4|\ |
||
530 | tl-wr940n-v6|\ |
||
531 | tl-wr941nd|\ |
||
532 | tl-wr941nd-v5|\ |
||
533 | tl-wr941nd-v6|\ |
||
534 | ts-d084|\ |
||
535 | wifi-pineapple-nano) |
||
536 | local magic_ver="0100" |
||
537 | |||
538 | case "$board" in |
||
539 | tl-wdr6500-v2) |
||
540 | magic_ver="0200" |
||
541 | ;; |
||
542 | esac |
||
543 | |||
544 | [ "$magic" != "$magic_ver" ] && { |
||
545 | echo "Invalid image type." |
||
546 | return 1 |
||
547 | } |
||
548 | |||
549 | local hwid |
||
550 | local mid |
||
551 | local imagehwid |
||
552 | local imagemid |
||
553 | |||
554 | hwid=$(tplink_get_hwid) |
||
555 | mid=$(tplink_get_mid) |
||
556 | imagehwid=$(tplink_get_image_hwid "$1") |
||
557 | imagemid=$(tplink_get_image_mid "$1") |
||
558 | |||
559 | [ "$hwid" != "$imagehwid" -o "$mid" != "$imagemid" ] && { |
||
560 | echo "Invalid image, hardware ID mismatch, hw:$hwid $mid image:$imagehwid $imagemid." |
||
561 | return 1 |
||
562 | } |
||
563 | |||
564 | local boot_size |
||
565 | |||
566 | boot_size=$(tplink_get_image_boot_size "$1") |
||
567 | [ "$boot_size" != "00000000" ] && { |
||
568 | echo "Invalid image, it contains a bootloader." |
||
569 | return 1 |
||
570 | } |
||
571 | |||
572 | return 0 |
||
573 | ;; |
||
574 | bsb|\ |
||
575 | dir-825-b1|\ |
||
576 | tew-673gru) |
||
577 | dir825b_check_image "$1" && return 0 |
||
578 | ;; |
||
579 | rb-411|\ |
||
580 | rb-411u|\ |
||
581 | rb-433|\ |
||
582 | rb-433u|\ |
||
583 | rb-435g|\ |
||
584 | rb-450|\ |
||
585 | rb-450g|\ |
||
586 | rb-493|\ |
||
587 | rb-493g|\ |
||
588 | rb-750|\ |
||
589 | rb-750gl|\ |
||
590 | rb-751|\ |
||
591 | rb-751g|\ |
||
592 | rb-911g-2hpnd|\ |
||
593 | rb-911g-5hpnd|\ |
||
594 | rb-911g-5hpacd|\ |
||
595 | rb-912uag-2hpnd|\ |
||
596 | rb-912uag-5hpnd|\ |
||
597 | rb-921gs-5hpacd-r2|\ |
||
598 | rb-951g-2hnd|\ |
||
599 | rb-951ui-2hnd|\ |
||
600 | rb-2011l|\ |
||
601 | rb-2011il|\ |
||
602 | rb-2011ils|\ |
||
603 | rb-2011uas|\ |
||
604 | rb-2011uas-2hnd|\ |
||
605 | rb-2011uias|\ |
||
606 | rb-2011uias-2hnd|\ |
||
607 | rb-sxt2n|\ |
||
608 | rb-sxt5n) |
||
609 | nand_do_platform_check routerboard $1 |
||
610 | return $? |
||
611 | ;; |
||
612 | c-60|\ |
||
613 | hiveap-121|\ |
||
614 | nbg6716|\ |
||
615 | r6100|\ |
||
616 | rambutan|\ |
||
617 | wi2a-ac200i|\ |
||
618 | wndr3700v4|\ |
||
619 | wndr4300) |
||
620 | nand_do_platform_check $board $1 |
||
621 | return $? |
||
622 | ;; |
||
623 | cpe210|\ |
||
624 | cpe510|\ |
||
625 | eap120|\ |
||
626 | wbs210|\ |
||
627 | wbs510) |
||
628 | tplink_pharos_check_image "$1" "7f454c46" "$(tplink_pharos_get_model_string)" '' && return 0 |
||
629 | return 1 |
||
630 | ;; |
||
631 | cpe210-v2) |
||
632 | tplink_pharos_check_image "$1" "01000000" "$(tplink_pharos_v2_get_model_string)" '\0\xff\r' && return 0 |
||
633 | return 1 |
||
634 | ;; |
||
635 | a40|\ |
||
636 | a60|\ |
||
637 | mr1750|\ |
||
638 | mr1750v2|\ |
||
639 | mr600|\ |
||
640 | mr600v2|\ |
||
641 | mr900|\ |
||
642 | mr900v2|\ |
||
643 | om2p|\ |
||
644 | om2p-hs|\ |
||
645 | om2p-hsv2|\ |
||
646 | om2p-hsv3|\ |
||
647 | om2p-hsv4|\ |
||
648 | om2p-lc|\ |
||
649 | om2pv2|\ |
||
650 | om2pv4|\ |
||
651 | om5p|\ |
||
652 | om5p-ac|\ |
||
653 | om5p-acv2|\ |
||
654 | om5p-an) |
||
655 | platform_check_image_openmesh "$magic_long" "$1" && return 0 |
||
656 | return 1 |
||
657 | ;; |
||
658 | mr18|\ |
||
659 | z1) |
||
660 | merakinand_do_platform_check $board $1 |
||
661 | return $? |
||
662 | ;; |
||
663 | dir-869-a1|\ |
||
664 | mynet-n600|\ |
||
665 | mynet-n750|\ |
||
666 | qihoo-c301) |
||
667 | [ "$magic_long" != "5ea3a417" ] && { |
||
668 | echo "Invalid image, bad magic: $magic_long" |
||
669 | return 1 |
||
670 | } |
||
671 | |||
672 | local typemagic=$(seama_get_type_magic "$1") |
||
673 | [ "$typemagic" != "6669726d" ] && { |
||
674 | echo "Invalid image, bad type: $typemagic" |
||
675 | return 1 |
||
676 | } |
||
677 | |||
678 | return 0 |
||
679 | ;; |
||
680 | e2100l|\ |
||
681 | mynet-rext|\ |
||
682 | wrt160nl) |
||
683 | cybertan_check_image "$1" && return 0 |
||
684 | return 1 |
||
685 | ;; |
||
686 | nbg6616|\ |
||
687 | uap-pro|\ |
||
688 | unifi-outdoor-plus) |
||
689 | [ "$magic_long" != "19852003" ] && { |
||
690 | echo "Invalid image type." |
||
691 | return 1 |
||
692 | } |
||
693 | |||
694 | return 0 |
||
695 | ;; |
||
696 | tube2h) |
||
697 | alfa_check_image "$1" && return 0 |
||
698 | return 1 |
||
699 | ;; |
||
700 | wndr3700|\ |
||
701 | wnr1000-v2|\ |
||
702 | wnr2000-v3|\ |
||
703 | wnr612-v2|\ |
||
704 | wpn824n) |
||
705 | local hw_magic |
||
706 | |||
707 | hw_magic="$(ar71xx_get_mtd_part_magic firmware)" |
||
708 | [ "$magic_long" != "$hw_magic" ] && { |
||
709 | echo "Invalid image, hardware ID mismatch, hw:$hw_magic image:$magic_long." |
||
710 | return 1 |
||
711 | } |
||
712 | |||
713 | return 0 |
||
714 | ;; |
||
715 | wnr2000-v4) |
||
716 | [ "$magic_long" != "32303034" ] && { |
||
717 | echo "Invalid image type." |
||
718 | return 1 |
||
719 | } |
||
720 | |||
721 | return 0 |
||
722 | ;; |
||
723 | wnr2200) |
||
724 | [ "$magic_long" != "32323030" ] && { |
||
725 | echo "Invalid image type." |
||
726 | return 1 |
||
727 | } |
||
728 | |||
729 | return 0 |
||
730 | ;; |
||
731 | dap-2695-a1) |
||
732 | local magic=$(wrgg_get_image_magic "$1") |
||
733 | [ "$magic" != "21030820" ] && { |
||
734 | echo "Invalid image, bad type: $magic" |
||
735 | return 1 |
||
736 | } |
||
737 | |||
738 | return 0; |
||
739 | ;; |
||
740 | # these boards use metadata images |
||
741 | fritz300e|\ |
||
742 | fritz4020|\ |
||
743 | fritz450e|\ |
||
744 | koala|\ |
||
745 | rb-750-r2|\ |
||
746 | rb-750p-pbr2|\ |
||
747 | rb-750up-r2|\ |
||
748 | rb-911-2hn|\ |
||
749 | rb-911-5hn|\ |
||
750 | rb-941-2nd|\ |
||
751 | rb-951ui-2nd|\ |
||
752 | rb-952ui-5ac2nd|\ |
||
753 | rb-962uigs-5hact2hnt|\ |
||
754 | rb-lhg-5nd|\ |
||
755 | rb-map-2nd|\ |
||
756 | rb-mapl-2nd|\ |
||
757 | rb-wap-2nd|\ |
||
758 | rb-wapg-5hact2hnd) |
||
759 | return 0 |
||
760 | ;; |
||
761 | esac |
||
762 | |||
763 | echo "Sysupgrade is not yet supported on $board." |
||
764 | return 1 |
||
765 | } |
||
766 | |||
767 | platform_pre_upgrade_gl_nand() { |
||
768 | if gl_board_is_nand; then |
||
769 | nand_do_upgrade "$1" |
||
770 | fi |
||
771 | } |
||
772 | |||
773 | platform_pre_upgrade() { |
||
774 | local board=$(board_name) |
||
775 | |||
776 | case "$board" in |
||
777 | rb-750-r2|\ |
||
778 | rb-750p-pbr2|\ |
||
779 | rb-750up-r2|\ |
||
780 | rb-911-2hn|\ |
||
781 | rb-911-5hn|\ |
||
782 | rb-941-2nd|\ |
||
783 | rb-951ui-2nd|\ |
||
784 | rb-952ui-5ac2nd|\ |
||
785 | rb-962uigs-5hact2hnt|\ |
||
786 | rb-lhg-5nd|\ |
||
787 | rb-map-2nd|\ |
||
788 | rb-mapl-2nd|\ |
||
789 | rb-wap-2nd|\ |
||
790 | rb-wapg-5hact2hnd) |
||
791 | # erase firmware if booted from initramfs |
||
792 | [ -z "$(rootfs_type)" ] && mtd erase firmware |
||
793 | ;; |
||
794 | gl-ar300m|\ |
||
795 | gl-x750|\ |
||
796 | gl-x1200|\ |
||
797 | gl-ar750s) |
||
798 | platform_pre_upgrade_gl_nand "$1" |
||
799 | ;; |
||
800 | esac |
||
801 | } |
||
802 | |||
803 | platform_nand_pre_upgrade() { |
||
804 | local board=$(board_name) |
||
805 | |||
806 | case "$board" in |
||
807 | rb*) |
||
808 | CI_KERNPART=none |
||
809 | local fw_mtd=$(find_mtd_part kernel) |
||
810 | fw_mtd="${fw_mtd/block/}" |
||
811 | [ -n "$fw_mtd" ] || return |
||
812 | mtd erase kernel |
||
813 | tar xf "$1" sysupgrade-routerboard/kernel -O | nandwrite -o "$fw_mtd" - |
||
814 | ;; |
||
815 | wi2a-ac200i) |
||
816 | case "$(fw_printenv -n dualPartition)" in |
||
817 | imgA) |
||
818 | fw_setenv dualPartition imgB |
||
819 | fw_setenv ActImg NokiaImageB |
||
820 | ;; |
||
821 | imgB) |
||
822 | fw_setenv dualPartition imgA |
||
823 | fw_setenv ActImg NokiaImageA |
||
824 | ;; |
||
825 | esac |
||
826 | ubiblock -r /dev/ubiblock0_0 2>/dev/null >/dev/null |
||
827 | rm -f /dev/ubiblock0_0 |
||
828 | ubidetach -d 0 2>/dev/null >/dev/null |
||
829 | CI_UBIPART=ubi_alt |
||
830 | CI_KERNPART=kernel_alt |
||
831 | ;; |
||
832 | esac |
||
833 | } |
||
834 | |||
835 | platform_do_upgrade() { |
||
836 | local board=$(board_name) |
||
837 | |||
838 | case "$board" in |
||
839 | all0258n) |
||
840 | platform_do_upgrade_allnet "0x9f050000" "$ARGV" |
||
841 | ;; |
||
842 | all0305|\ |
||
843 | eap7660d|\ |
||
844 | ja76pf|\ |
||
845 | ja76pf2|\ |
||
846 | jwap003|\ |
||
847 | ls-sr71|\ |
||
848 | pb42|\ |
||
849 | pb44|\ |
||
850 | routerstation|\ |
||
851 | routerstation-pro) |
||
852 | platform_do_upgrade_combined "$ARGV" |
||
853 | ;; |
||
854 | all0315n) |
||
855 | platform_do_upgrade_allnet "0x9f080000" "$ARGV" |
||
856 | ;; |
||
857 | cap4200ag|\ |
||
858 | eap300v2|\ |
||
859 | ens202ext) |
||
860 | platform_do_upgrade_allnet "0xbf0a0000" "$ARGV" |
||
861 | ;; |
||
862 | dir-825-b1|\ |
||
863 | tew-673gru) |
||
864 | platform_do_upgrade_dir825b "$ARGV" |
||
865 | ;; |
||
866 | a40|\ |
||
867 | a60|\ |
||
868 | mr1750|\ |
||
869 | mr1750v2|\ |
||
870 | mr600|\ |
||
871 | mr600v2|\ |
||
872 | mr900|\ |
||
873 | mr900v2|\ |
||
874 | om2p|\ |
||
875 | om2p-hs|\ |
||
876 | om2p-hsv2|\ |
||
877 | om2p-hsv3|\ |
||
878 | om2p-hsv4|\ |
||
879 | om2p-lc|\ |
||
880 | om2pv2|\ |
||
881 | om2pv4|\ |
||
882 | om5p|\ |
||
883 | om5p-ac|\ |
||
884 | om5p-acv2|\ |
||
885 | om5p-an) |
||
886 | platform_do_upgrade_openmesh "$ARGV" |
||
887 | ;; |
||
888 | c-60|\ |
||
889 | hiveap-121|\ |
||
890 | nbg6716|\ |
||
891 | r6100|\ |
||
892 | rambutan|\ |
||
893 | rb-411|\ |
||
894 | rb-411u|\ |
||
895 | rb-433|\ |
||
896 | rb-433u|\ |
||
897 | rb-435g|\ |
||
898 | rb-450|\ |
||
899 | rb-450g|\ |
||
900 | rb-493|\ |
||
901 | rb-493g|\ |
||
902 | rb-750|\ |
||
903 | rb-750gl|\ |
||
904 | rb-751|\ |
||
905 | rb-751g|\ |
||
906 | rb-911g-2hpnd|\ |
||
907 | rb-911g-5hpacd|\ |
||
908 | rb-911g-5hpnd|\ |
||
909 | rb-912uag-2hpnd|\ |
||
910 | rb-912uag-5hpnd|\ |
||
911 | rb-921gs-5hpacd-r2|\ |
||
912 | rb-951g-2hnd|\ |
||
913 | rb-951ui-2hnd|\ |
||
914 | rb-2011il|\ |
||
915 | rb-2011ils|\ |
||
916 | rb-2011l|\ |
||
917 | rb-2011uas|\ |
||
918 | rb-2011uas-2hnd|\ |
||
919 | rb-2011uias|\ |
||
920 | rb-2011uias-2hnd|\ |
||
921 | rb-sxt2n|\ |
||
922 | rb-sxt5n|\ |
||
923 | wi2a-ac200i|\ |
||
924 | wndr3700v4|\ |
||
925 | wndr4300) |
||
926 | nand_do_upgrade "$1" |
||
927 | ;; |
||
928 | mr18|\ |
||
929 | z1) |
||
930 | merakinand_do_upgrade "$1" |
||
931 | ;; |
||
932 | uap-pro|\ |
||
933 | unifi-outdoor-plus) |
||
934 | MTD_CONFIG_ARGS="-s 0x180000" |
||
935 | default_do_upgrade "$ARGV" |
||
936 | ;; |
||
937 | wp543|\ |
||
938 | wpe72) |
||
939 | platform_do_upgrade_compex "$ARGV" |
||
940 | ;; |
||
941 | *) |
||
942 | default_do_upgrade "$ARGV" |
||
943 | ;; |
||
944 | esac |
||
945 | } |