openwrt/tools/firmware-utils/src
Petr Štetiar a2728a806a tplink-safeloader: fix C7v5 factory flashing from vendor fw > v1.1.x
Currently it's not possible to flash factory images on devices shipped
with vendor firmware versions 1.1.0 Build 20201120 rel. 50406 (published
2020-12-22):

 (curFw_ver, newFw_ver) == (1.1, 1.0) [NM_Error](nm_checkSoftVer) 00848: Firmwave not supports, check failed.
 [NM_Error](nm_checkUpdateContent) 01084: software version dismatched
 [NM_Error](nm_buildUpgradeStruct) 01188: checkUpdateContent failed.

They've even following note in release notes:

 Note: You will be unable to downgrade to the previous firmware version
       after updating this firmware.

This version check in vendor firmware is implemented in
/usr/bin/nvrammanager binary likely as following C code[1]:

 sscanf(buf, "%d.%d.%*s",&upd_fw_major, &upd_fw_minor);
 ...
 if (((int)upd_fw_major < (int)cur_fw_major) ||
     ((ret = 1, cur_fw_major == upd_fw_major && (upd_fw_minor < (int)cur_fw_minor)))) {
       ret = 0;
       printf("[NM_Error](%s) %05d: Firmwave not supports, check failed.\r\n\r\n","nm_checkSoftVer" ,0x350);
 }
 ...
 return ret;

So in order to fix this and make it future proof it should be enough to
ship our factory firmware images with major version 7 (lucky number).

Tested on latest firmware version 1.1.2 Build 20210125 rel.37999:

 Firmwave supports, check OK.
  (curFw_ver, newFw_ver) == (1.1, 7.0) check firmware ok!

Flashing back to vendor firmware
c7v5_us-up-ver1-1-2-P1[20210125-rel37999]_2021-01-25_10.33.55.bin works
as well:

 U-Boot 1.1.4-gbec22107-dirty (Nov 18 2020 - 18:19:12)
 ...
 Firmware downloaded... filesize = 0xeeae77 fileaddr = 0x80060000.
 Firmware Recovery file length : 15642231
 Firmware process id 2.
 handle_fw_cloud 146
 Image verify OK!
 Firmware file Verify ok!
 product-info:product_name:Archer C7
 product_ver:5.0.0
 special_id:55530000
 [Error]sysmgr_cfg_checkSupportList(): 1023 @ specialId 45550000 NOT Match.
 Firmware supports, check OK.
 Firmware Recovery check ok!

1. https://gist.github.com/ynezz/2e0583647d863386a66c3d231541b6d1

Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit e6d66375cb)
Signed-off-by: Petr Štetiar <ynezz@true.cz>
2021-05-06 09:55:07 +02:00
..
add_header.c firmware-utils: when using open with O_CREAT and O_WRONLY, also use O_TRUNC to ensure that overwritten files have the right size (fixes #3505) 2008-09-23 16:12:40 +00:00
addpattern.c firmware-utils: honor env SOURCE_DATE_EPOCH 2017-06-19 14:34:52 +02:00
asustrx.c tools: firmware-utils: fix compiler warnings 2015-10-11 19:00:41 +00:00
bcm_tag.h firmware-utils: move bcm_tag.h here 2012-10-08 09:59:50 +00:00
bcmalgo.c tools: add Broadcom cable modem firmware image creator 2013-06-06 22:21:52 +00:00
bcmalgo.h tools: add Broadcom cable modem firmware image creator 2013-06-06 22:21:52 +00:00
buffalo-enc.c firmware-utils: improve tools for Buffalo DHP series 2017-01-31 10:55:02 +01:00
buffalo-lib.c firmware-utils/buffalo-enc: explicitly use signed char for checksum function 2015-10-12 13:11:20 +00:00
buffalo-lib.h firmware-utils: improve tools for Buffalo DHP series 2017-01-31 10:55:02 +01:00
buffalo-tag.c firmware-utils: improve tools for Buffalo DHP series 2017-01-31 10:55:02 +01:00
buffalo-tftp.c firmware-utils: fix compilation warnings. 2014-10-20 06:29:13 +00:00
csysimg.h adds support for Edimax BR-6524N 2013-01-06 11:11:30 +00:00
cyg_crc16.c firmware-utils: add new tool for the wrt400n (based on a patch by Sandeep Mistry <sandeep.mistry at gmail.com>) 2009-07-12 08:59:18 +00:00
cyg_crc32.c firmware-utils: add new tool for the wrt400n (based on a patch by Sandeep Mistry <sandeep.mistry at gmail.com>) 2009-07-12 08:59:18 +00:00
cyg_crc.h firmware-utils: add new tool for the wrt400n (based on a patch by Sandeep Mistry <sandeep.mistry at gmail.com>) 2009-07-12 08:59:18 +00:00
dgfirmware.c firmware-utils: fix various compiler warnings 2015-12-11 15:09:30 +00:00
dgn3500sum.c firmware-utils: fix dgn3500sum compiler warnings 2017-06-26 20:08:36 +02:00
dns313-header.c firmware-utils: add DNS-313 image header tool 2018-05-05 06:57:00 +02:00
edimax_fw_header.c tools: edimax_fw_header: fix suspicious memset usage 2015-01-10 18:08:16 +00:00
encode_crc.c remove 'svn:executable' property 2010-04-12 17:08:57 +00:00
fix-u-media-header.c firmware-utils: new tool for fixing U-Media firmware headers 2012-10-18 07:23:09 +00:00
fw.h mkfwimage: Add image type definition for WA images 2018-10-07 10:46:20 +02:00
hcsmakeimage.c firmware-utils: honor env SOURCE_DATE_EPOCH 2017-06-19 14:34:52 +02:00
imagetag_cmdline.c brcm63xx: do not align squashfs rootfs start 2015-02-27 17:38:14 +00:00
imagetag_cmdline.h brcm63xx: do not align squashfs rootfs start 2015-02-27 17:38:14 +00:00
imagetag.c firmware-utils: honor env SOURCE_DATE_EPOCH 2017-06-19 14:34:52 +02:00
imagetag.ggo brcm63xx: do not align squashfs rootfs start 2015-02-27 17:38:14 +00:00
jcgimage.c firmware-utils: jcgimage: add support for 4MiB+ images 2019-05-31 10:30:03 +02:00
lxlfw.c firmware-utils: add lxlfw tool for generating Luxul firmwares 2020-02-07 11:05:26 +01:00
lzma2eva.c firmware-utils: fix various compiler warnings 2015-12-11 15:09:30 +00:00
makeamitbin.c Add makeamitbin to generate images for other RDC-based devices, thanks sn9 ! 2008-10-28 16:26:42 +00:00
md5.c firmware-utils: replace md5 code with Alexander Peslyak's implementation 2016-11-28 07:52:31 +01:00
md5.h firmware-utils: replace md5 code with Alexander Peslyak's implementation 2016-11-28 07:52:31 +01:00
mkbrncmdline.c Support booting the Speedport W502V using BRN-BOOT. 2012-02-14 17:48:04 +00:00
mkbrnimg.c tools: firmware-utils: fix compiler warnings 2015-10-11 19:00:41 +00:00
mkbuffaloimg.c ar71xx: add support for Buffalo BHR-4GRV2 2016-11-16 10:54:33 +01:00
mkcameofw.c firmware-utils/mkcameofw: allow to use combined kernel image 2013-05-08 17:11:08 +00:00
mkcasfw.c tools: firmware-utils: fix compiler warnings 2015-10-11 19:00:41 +00:00
mkchkimg.c tools/firmware-utils: document reserved fields in mkchkimg 2017-08-03 00:11:25 +02:00
mkcsysimg.c tools: firmware-utils: fix compiler warnings 2015-10-11 19:00:41 +00:00
mkdapimg2.c tools/firmware-utils: fix sysupgrade typo in mkdapimg2 2019-01-12 19:47:25 +01:00
mkdapimg.c tools/firmware-utils: fix sysupgrade typo in mkdapimg 2019-01-12 19:44:35 +01:00
mkdhpimg.c firmware-utils: improve tools for Buffalo DHP series 2017-01-31 10:55:02 +01:00
mkdlinkfw-lib.c firmware-utils: mkdlinkfw: fix error handling 2019-01-13 18:31:10 +01:00
mkdlinkfw-lib.h firmware-utils: mkdlinkfw: cleanup code 2019-01-13 18:31:10 +01:00
mkdlinkfw.c firmware-utils: mkdlinkfw: add kernel image offset 2019-03-24 01:44:24 +01:00
mkdniimg.c tools: firmware-utils: fix compiler warnings 2015-10-11 19:00:41 +00:00
mkedimaximg.c firmware-utils: mkedimaximg: add "big-endianness mode" option 2018-09-10 09:29:39 +02:00
mkfwimage2.c tools/mkfwimage2: remove 256 length limit for partition images 2016-06-14 22:13:37 -07:00
mkfwimage.c mkfwimage: Add image type definition for WA images 2018-10-07 10:46:20 +02:00
mkheader_gemtek.c firmware-utils: add Gemtek header tool 2014-04-22 08:08:39 +00:00
mkhilinkfw.c firmware-utils: fix various compiler warnings 2015-12-11 15:09:30 +00:00
mkmerakifw-old.c tools/firmware-utils: fix portability issue in mkmerakifw-old 2016-09-22 13:37:23 +02:00
mkmerakifw.c firmware-utils: Fix build failure in mkmerakifw.c FS#298 2016-11-26 22:39:27 +01:00
mkmylofw.c ar71xx: Revert "added board support for compex wpj558" 2015-02-02 10:32:04 +00:00
mkplanexfw.c tools: firmware-utils: fix compiler warnings 2015-10-11 19:00:41 +00:00
mkporayfw.c ramips: generate factory images for Nexx devices 2014-12-07 16:53:22 +00:00
mkrasimage.c mkrasimage: fix segmentation fault 2020-03-29 18:47:32 +02:00
mkrtn56uimg.c firmware-utils: honor env SOURCE_DATE_EPOCH 2017-06-19 14:34:52 +02:00
mksenaofw.c ipq40xx: add factory image for EnGenius ENS620EXT 2019-05-11 16:37:11 +02:00
mksercommfw.c firmware-utils: mksercommfw: overhaul image creation 2019-01-15 19:11:54 +01:00
mktitanimg.c fix mktitanimg segfault on 64-bits hosts (#7443) 2010-06-12 18:10:01 +00:00
mktitanimg.h add mktitanimg to create Titan (AR7-based) images (#6632) 2010-06-06 19:16:43 +00:00
mktplinkfw2.c tools/firmware-utils: mktplinkfw2: add Qualcomm layouts 2019-05-18 17:59:49 +02:00
mktplinkfw-lib.c firmware-utils: mktplinkfw: fix JFFS2 EOF markers 2017-12-14 09:29:30 +01:00
mktplinkfw-lib.h tools/firmware-utils: mktplinkfw move build_fw() to lib 2017-10-06 08:28:41 +02:00
mktplinkfw.c firmware-utils: mktplinkfw: add rootfs offset for combined images 2018-06-26 07:03:57 +02:00
mkwrggimg.c firmware-utils: fix compilation on MacOS X 2016-10-31 12:39:09 +01:00
mkwrgimg.c firmware-utils: rename the devname variable in mkwrgimg to avoid a clash with a BSD stdlib function 2011-07-08 05:20:24 +00:00
mkzcfw.c tools: firmware-utils: fix compiler warnings 2015-10-11 19:00:41 +00:00
mkzynfw.c tools: firmware-utils: fix compiler warnings 2015-10-11 19:00:41 +00:00
motorola-bin.c get rid of $Id$ - it has never helped us and it has broken too many patches ;) 2009-04-17 14:09:46 +00:00
myloader.h ar71xx: Revert "added board support for compex wpj558" 2015-02-02 10:32:04 +00:00
nand_ecc.c treewide: replace nbd@openwrt.org with nbd@nbd.name 2016-06-07 08:58:42 +02:00
nec-enc.c firmware-utils: add nec-enc 2019-04-06 19:14:06 +02:00
osbridge-crc.c tools: firmware-utils: fix compiler warnings 2015-10-11 19:00:41 +00:00
oseama.c firmware-utils: oseama: support extracting entity 2016-06-15 10:54:16 +02:00
otrx.c firmware-utils: add otrx tool for handling TRX images 2017-11-17 11:42:59 +01:00
pc1crypt.c tools: firmware-utils: fix compiler warnings 2015-10-11 19:00:41 +00:00
ptgen.c firmware-tools/ptgen: Allow generation 0 size partitions 2019-02-20 18:51:31 +01:00
seama.c tools: firmware-utils: fix compiler warnings 2015-10-11 19:00:41 +00:00
seama.h tools/firmware-utils: add seama tool 2012-10-18 07:22:57 +00:00
sha1.c firmware-utils/mkplanexfw: new firmware generation tool for the Planex MZK-W04NU device 2009-02-04 21:09:06 +00:00
sha1.h firmware-utils/mkplanexfw: new firmware generation tool for the Planex MZK-W04NU device 2009-02-04 21:09:06 +00:00
spw303v.c firmware-utils: honor env SOURCE_DATE_EPOCH 2017-06-19 14:34:52 +02:00
srec2bin.c firmware-utils: fix various compiler warnings 2015-12-11 15:09:30 +00:00
tplink-safeloader.c tplink-safeloader: fix C7v5 factory flashing from vendor fw > v1.1.x 2021-05-06 09:55:07 +02:00
trx2edips.c firmware-utils: fix build on big endian systems 2011-06-21 21:13:58 +00:00
trx2usr.c move target/utils to tools/firmware-utils 2006-12-06 23:41:38 +00:00
trx.c firmware-utils: improve tools for Buffalo DHP series 2017-01-31 10:55:02 +01:00
wrt400n.c Revert "tools: wrt400n: fix making factory images with kernel bigger than 1MB" 2017-01-20 06:43:13 +01:00
xorimage.c firmware-utils: add hex pattern mode for xorimage 2018-12-24 19:18:07 +01:00
zyimage.c firmware-utils: add tool to create zyxel images 2016-11-17 20:01:21 +01:00
zynos.h firmware-utils/mkzynfw: add support for the NBG460N board 2010-05-14 09:20:36 +00:00
zyxbcm.c firmware-utils: honor env SOURCE_DATE_EPOCH 2017-06-19 14:34:52 +02:00