[PATCH v5 2/2] Add support for TP-Link Archer C50v1
Adrian Schmutzler
freifunk at adrianschmutzler.de
Mo Okt 23 12:46:26 CEST 2017
From: Fabian Blaese <fabian at blaese.de>
Changes in v2:
- Rebased onto 1043v5
- Renamed TPLINK_BOARD_ID back to TPLINK_BOARD_NAME
- Changed numbers of LEDE patches
- Renamed device to include v1 in various places
- Renamed board from 'c50' to 'archer-c50-v1'
Changes in v3:
- Add subtarget to bsp
- Rename sysupgrade image
Changes in v4:
- Rename BSP to mt7620
Changes in v5:
- Update sysupgrade.sh to support C50
Signed-off-by: Fabian Bläse <fabian at blaese.de>
Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
bsp/board_mt7620.bsp | 8 +
bsp/mt7620/.config | 16 ++
...mktplinkfw2-related-commands-to-image-com.patch | 168 +++++++++++++++++++++
...e-simplify-TP-Link-Archer-devices-definit.patch | 75 +++++++++
...s-Archer-C50v1-support-US-and-EU-versions.patch | 59 ++++++++
...ils-mktplinkfw2-support-additional-hardwa.patch | 149 ++++++++++++++++++
...tils-mktplinkfw2-fix-support-for-w-option.patch | 34 +++++
...6-firmware-utils-mktplinkfw2-fix-MD5-salt.patch | 70 +++++++++
.../files/etc/uci-defaults/50-fff-boardname | 3 +
.../fff/fff-network/ramips/network.archer-c50-v1 | 8 +
.../fff/fff-sysupgrade/files/etc/sysupgrade.sh | 10 +-
11 files changed, 597 insertions(+), 3 deletions(-)
create mode 100644 bsp/board_mt7620.bsp
create mode 100644 bsp/mt7620/.config
create mode 100644 build_patches/openwrt/0021-build-move-mktplinkfw2-related-commands-to-image-com.patch
create mode 100644 build_patches/openwrt/0022-ramips-image-simplify-TP-Link-Archer-devices-definit.patch
create mode 100644 build_patches/openwrt/0023-ramips-Archer-C50v1-support-US-and-EU-versions.patch
create mode 100644 build_patches/openwrt/0024-firmware-utils-mktplinkfw2-support-additional-hardwa.patch
create mode 100644 build_patches/openwrt/0025-firmware-utils-mktplinkfw2-fix-support-for-w-option.patch
create mode 100644 build_patches/openwrt/0026-firmware-utils-mktplinkfw2-fix-MD5-salt.patch
mode change 100755 => 100644 src/packages/fff/fff-boardname/files/etc/uci-defaults/50-fff-boardname
create mode 100644 src/packages/fff/fff-network/ramips/network.archer-c50-v1
diff --git a/bsp/board_mt7620.bsp b/bsp/board_mt7620.bsp
new file mode 100644
index 0000000..948dff0
--- /dev/null
+++ b/bsp/board_mt7620.bsp
@@ -0,0 +1,8 @@
+machine=mt7620
+chipset=ramips
+subtarget=mt7620
+target=$builddir/$machine
+
+images=(
+ "lede-ramips-mt7620-ArcherC50v1-squashfs-sysupgrade.bin"
+ )
diff --git a/bsp/mt7620/.config b/bsp/mt7620/.config
new file mode 100644
index 0000000..9ebca41
--- /dev/null
+++ b/bsp/mt7620/.config
@@ -0,0 +1,16 @@
+# Generated using "./buildscript config openwrt".
+# Do no edit manually
+#
+CONFIG_TARGET_ramips=y
+CONFIG_TARGET_ramips_mt7620=y
+CONFIG_TARGET_ramips_mt7620_DEVICE_ArcherC50v1=y
+CONFIG_BUSYBOX_CUSTOM=y
+CONFIG_CLEAN_IPKG=y
+CONFIG_PACKAGE_kmod-ifb=y
+CONFIG_PACKAGE_kmod-ledtrig-heartbeat=y
+CONFIG_PACKAGE_kmod-ledtrig-netdev=y
+CONFIG_PACKAGE_kmod-sched-connmark=y
+CONFIG_PACKAGE_qos-scripts=y
+CONFIG_PACKAGE_tc=y
+CONFIG_STRIP_KERNEL_EXPORTS=y
+CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=512
diff --git a/build_patches/openwrt/0021-build-move-mktplinkfw2-related-commands-to-image-com.patch b/build_patches/openwrt/0021-build-move-mktplinkfw2-related-commands-to-image-com.patch
new file mode 100644
index 0000000..7a842dc
--- /dev/null
+++ b/build_patches/openwrt/0021-build-move-mktplinkfw2-related-commands-to-image-com.patch
@@ -0,0 +1,168 @@
+From 65450ee007e5379e022cb27bbeda10ada58667fc Mon Sep 17 00:00:00 2001
+From: Piotr Dymacz <pepe2k at gmail.com>
+Date: Fri, 23 Jun 2017 23:07:10 +0200
+Subject: [PATCH 1/6] build: move mktplinkfw2 related commands to
+ image-commands.mk
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+There are already two targets (lantiq, ramips) which use mktplinkfw2
+tool for creating images. This de-duplicates code, introduces two new
+build commands: tplink-v2-header, tplink-v2-image and makes use of
+them in place of old, (sub)target specific ones.
+
+Signed-off-by: Piotr Dymacz <pepe2k at gmail.com>
+[Rebased on 8ad1b09]
+Signed-off-by: Fabian Bläse <fabian at blaese.de>
+[Rebased on 8ad1b09 + C25 + 1043v5]
+Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
+---
+ include/image-commands.mk | 14 ++++++++++++++
+ target/linux/lantiq/image/tp-link.mk | 25 ++++++++-----------------
+ target/linux/ramips/image/mt7620.mk | 24 ++++++++++++------------
+ 3 files changed, 34 insertions(+), 29 deletions(-)
+
+diff --git a/include/image-commands.mk b/include/image-commands.mk
+index 9e56ab8..c197967 100644
+--- a/include/image-commands.mk
++++ b/include/image-commands.mk
+@@ -182,6 +182,20 @@ define Build/sysupgrade-tar
+ $@
+ endef
+
++define Build/tplink-v2-header
++ $(STAGING_DIR_HOST)/bin/mktplinkfw2 \
++ -c -V "ver. 2.0" -B $(TPLINK_BOARD_NAME) $(1) -k $@ -o $@.new
++ @mv $@.new $@
++endef
++
++define Build/tplink-v2-image
++ $(STAGING_DIR_HOST)/bin/mktplinkfw2 \
++ -a 0x4 -j -V "ver. 2.0" -B $(TPLINK_BOARD_NAME) $(1) \
++ -k $(IMAGE_KERNEL) -r $(IMAGE_ROOTFS) -o $@.new
++ cat $@.new >> $@
++ rm -rf $@.new
++endef
++
+ json_quote=$(subst ','\'',$(subst ",\",$(1)))
+ #")')
+ metadata_devices=$(if $(1),$(subst "$(space)","$(comma)",$(strip $(foreach v,$(1),"$(call json_quote,$(v))"))))
+diff --git a/target/linux/lantiq/image/tp-link.mk b/target/linux/lantiq/image/tp-link.mk
+index 49c4bc1..555c108 100644
+--- a/target/linux/lantiq/image/tp-link.mk
++++ b/target/linux/lantiq/image/tp-link.mk
+@@ -1,27 +1,18 @@
+-define Build/tplink-fw
+- mktplinkfw2 -c -B $(BOARD_ID) -s \
+- -k $@ -o $@.new
+- mv $@.new $@
+-endef
+-
+-define Build/mktplinkfw2
+- mktplinkfw2 -B $(BOARD_ID) -s -a 0x4 -j \
+- -k $(IMAGE_KERNEL) -r $(IMAGE_ROOTFS) \
+- -o $@
+-endef
+-DEVICE_VARS += BOARD_ID
++DEVICE_VARS += TPLINK_BOARD_NAME
+
+ define Device/lantiqTpLink
+ KERNEL := kernel-bin | append-dtb | lzma
+- KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | tplink-fw
++ KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | \
++ tplink-v2-header -s -V "ver. 1.0"
+ IMAGES := sysupgrade.bin
+- IMAGE/sysupgrade.bin := mktplinkfw2 | append-metadata | check-size $$$$(IMAGE_SIZE)
++ IMAGE/sysupgrade.bin := tplink-v2-image -s -V "ver. 1.0" | \
++ append-metadata | check-size $$$$(IMAGE_SIZE)
+ endef
+
+ define Device/TDW8970
+ $(Device/lantiqTpLink)
+ DEVICE_PROFILE := TDW8970
+- BOARD_ID := TD-W8970v1
++ TPLINK_BOARD_NAME := TD-W8970v1
+ IMAGE_SIZE := 7680k
+ DEVICE_TITLE := TP-LINK TD-W8970
+ DEVICE_PACKAGES:= kmod-ath9k wpad-mini kmod-usb-dwc2 kmod-usb-ledtrig-usbport
+@@ -30,7 +21,7 @@ endef
+ define Device/TDW8980
+ $(Device/lantiqTpLink)
+ DEVICE_PROFILE := TDW8980
+- BOARD_ID := TD-W8980v1
++ TPLINK_BOARD_NAME := TD-W8980v1
+ IMAGE_SIZE := 7680k
+ DEVICE_TITLE := TP-LINK TD-W8980
+ DEVICE_PACKAGES:= kmod-ath9k kmod-owl-loader wpad-mini kmod-usb-dwc2 kmod-usb-ledtrig-usbport
+@@ -39,7 +30,7 @@ endef
+ define Device/VR200v
+ $(Device/lantiqTpLink)
+ DEVICE_PROFILE := VR200v
+- BOARD_ID := ArcherVR200V
++ TPLINK_BOARD_NAME := ArcherVR200V
+ IMAGE_SIZE := 15808k
+ DEVICE_TITLE := TP-LINK Archer VR200v
+ DEVICE_PACKAGES:= kmod-usb-dwc2 kmod-usb-ledtrig-usbport
+diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk
+index c2c0ae2..5f26ca1 100644
+--- a/target/linux/ramips/image/mt7620.mk
++++ b/target/linux/ramips/image/mt7620.mk
+@@ -2,10 +2,7 @@
+ # MT7620A Profiles
+ #
+
+-define Build/tplink-header
+- $(STAGING_DIR_HOST)/bin/mktplinkfw2 -a 0x4 -V "ver. 2.0" -B $(1) \
+- -o $@.new -k $@ -r $(IMAGE_ROOTFS) && mv $@.new $@
+-endef
++DEVICE_VARS += TPLINK_BOARD_NAME
+
+ define Build/pad-kernel-ex2700
+ cp $@ $@.tmp && dd if=/dev/zero bs=64 count=1 >> $@.tmp \
+@@ -35,10 +32,11 @@ endef
+ define Device/ArcherC20i
+ DTS := ArcherC20i
+ SUPPORTED_DEVICES := c20i
++ TPLINK_BOARD_NAME := ArcherC20i
+ KERNEL := $(KERNEL_DTB)
+- KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-header ArcherC20i -c
+- IMAGE/factory.bin := append-kernel | tplink-header ArcherC20i -j
+- IMAGE/sysupgrade.bin := append-kernel | tplink-header ArcherC20i -j -s | append-metadata
++ KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-v2-header
++ IMAGE/factory.bin := tplink-v2-image
++ IMAGE/sysupgrade.bin := tplink-v2-image -s | append-metadata
+ IMAGES += factory.bin
+ DEVICE_TITLE := TP-Link ArcherC20i
+ endef
+@@ -47,10 +45,11 @@ TARGET_DEVICES += ArcherC20i
+ define Device/ArcherC50
+ DTS := ArcherC50
+ SUPPORTED_DEVICES := c50
++ TPLINK_BOARD_NAME := ArcherC50
+ KERNEL := $(KERNEL_DTB)
+- KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-header ArcherC50 -c
+- IMAGE/factory.bin := append-kernel | tplink-header ArcherC50 -j
+- IMAGE/sysupgrade.bin := append-kernel | tplink-header ArcherC50 -j -s | append-metadata
++ KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-v2-header
++ IMAGE/factory.bin := tplink-v2-image
++ IMAGE/sysupgrade.bin := tplink-v2-image -s | append-metadata
+ IMAGES += factory.bin
+ DEVICE_TITLE := TP-Link ArcherC50
+ endef
+@@ -59,9 +58,10 @@ TARGET_DEVICES += ArcherC50
+ define Device/ArcherMR200
+ DTS := ArcherMR200
+ SUPPORTED_DEVICES := mr200
++ TPLINK_BOARD_NAME := ArcherMR200
+ KERNEL := $(KERNEL_DTB)
+- KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-header ArcherMR200 -c
+- IMAGE/sysupgrade.bin := append-kernel | tplink-header ArcherMR200 -j -s | append-metadata
++ KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-v2-header
++ IMAGE/sysupgrade.bin := tplink-v2-image -s | append-metadata
+ DEVICE_PACKAGES := kmod-usb2 kmod-usb-net kmod-usb-net-rndis kmod-usb-serial kmod-usb-serial-option adb
+ DEVICE_TITLE := TP-Link ArcherMR200
+ endef
+--
+2.7.4
+
diff --git a/build_patches/openwrt/0022-ramips-image-simplify-TP-Link-Archer-devices-definit.patch b/build_patches/openwrt/0022-ramips-image-simplify-TP-Link-Archer-devices-definit.patch
new file mode 100644
index 0000000..06e6805
--- /dev/null
+++ b/build_patches/openwrt/0022-ramips-image-simplify-TP-Link-Archer-devices-definit.patch
@@ -0,0 +1,75 @@
+From accb6db2f14f380524b441c8533526493e9d0328 Mon Sep 17 00:00:00 2001
+From: Piotr Dymacz <pepe2k at gmail.com>
+Date: Fri, 23 Jun 2017 23:20:53 +0200
+Subject: [PATCH 2/6] ramips: image: simplify TP-Link Archer devices
+ definitions
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Signed-off-by: Piotr Dymacz <pepe2k at gmail.com>
+[Rebased on 8ad1b09]
+Signed-off-by: Fabian Bläse <fabian at blaese.de>
+[Rebased on 8ad1b09 + C25 + 1043v5]
+Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
+---
+ target/linux/ramips/image/mt7620.mk | 21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk
+index 5f26ca1..69e5abb 100644
+--- a/target/linux/ramips/image/mt7620.mk
++++ b/target/linux/ramips/image/mt7620.mk
+@@ -29,39 +29,38 @@ define Build/zyimage
+ $(STAGING_DIR_HOST)/bin/zyimage $(1) $@
+ endef
+
+-define Device/ArcherC20i
+- DTS := ArcherC20i
+- SUPPORTED_DEVICES := c20i
+- TPLINK_BOARD_NAME := ArcherC20i
++define Device/Archer
+ KERNEL := $(KERNEL_DTB)
+ KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-v2-header
+ IMAGE/factory.bin := tplink-v2-image
+ IMAGE/sysupgrade.bin := tplink-v2-image -s | append-metadata
++endef
++
++define Device/ArcherC20i
++ $(Device/Archer)
++ DTS := ArcherC20i
++ SUPPORTED_DEVICES := c20i
++ TPLINK_BOARD_NAME := ArcherC20i
+ IMAGES += factory.bin
+ DEVICE_TITLE := TP-Link ArcherC20i
+ endef
+ TARGET_DEVICES += ArcherC20i
+
+ define Device/ArcherC50
++ $(Device/Archer)
+ DTS := ArcherC50
+ SUPPORTED_DEVICES := c50
+ TPLINK_BOARD_NAME := ArcherC50
+- KERNEL := $(KERNEL_DTB)
+- KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-v2-header
+- IMAGE/factory.bin := tplink-v2-image
+- IMAGE/sysupgrade.bin := tplink-v2-image -s | append-metadata
+ IMAGES += factory.bin
+ DEVICE_TITLE := TP-Link ArcherC50
+ endef
+ TARGET_DEVICES += ArcherC50
+
+ define Device/ArcherMR200
++ $(Device/Archer)
+ DTS := ArcherMR200
+ SUPPORTED_DEVICES := mr200
+ TPLINK_BOARD_NAME := ArcherMR200
+- KERNEL := $(KERNEL_DTB)
+- KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-v2-header
+- IMAGE/sysupgrade.bin := tplink-v2-image -s | append-metadata
+ DEVICE_PACKAGES := kmod-usb2 kmod-usb-net kmod-usb-net-rndis kmod-usb-serial kmod-usb-serial-option adb
+ DEVICE_TITLE := TP-Link ArcherMR200
+ endef
+--
+2.7.4
+
diff --git a/build_patches/openwrt/0023-ramips-Archer-C50v1-support-US-and-EU-versions.patch b/build_patches/openwrt/0023-ramips-Archer-C50v1-support-US-and-EU-versions.patch
new file mode 100644
index 0000000..5c7ae8e
--- /dev/null
+++ b/build_patches/openwrt/0023-ramips-Archer-C50v1-support-US-and-EU-versions.patch
@@ -0,0 +1,59 @@
+From bca2f4cfa7721f17d5151f407b5e63c203e02bc5 Mon Sep 17 00:00:00 2001
+From: Thibaut VARENE <hacks at slashdirt.org>
+Date: Fri, 28 Jul 2017 13:00:54 +0200
+Subject: [PATCH 3/6] ramips: Archer C50v1: support US and EU versions
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+For the Archer C50v1, the EU and US versions are differentiated by their
+respective HW additional version (0x0 for US, 0x2 for EU).
+
+The stock web interface checks this field before flashing, making it
+impossible to flash the current (US) factory image on EU hardware.
+
+However the bootloader does not check this field, making it possible to use
+a single sysupgrade image for both hardware.
+
+This patch adds the necessary build bits to generate both EU and US factory
+images, and renames the target as "Archer C50v1" since there are as of now
+3 different versions of Archer C50 (all with different CPUs).
+
+Signed-off-by: Thibaut VARENE <hacks at slashdirt.org>
+[Rebased on 8ad1b09]
+Signed-off-by: Fabian Bläse <fabian at blaese.de>
+[Rebased on 8ad1b09 + C25 + 1043v5]
+Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
+---
+ target/linux/ramips/image/mt7620.mk | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk
+index 69e5abb..df96c32 100644
+--- a/target/linux/ramips/image/mt7620.mk
++++ b/target/linux/ramips/image/mt7620.mk
+@@ -46,15 +46,17 @@ define Device/ArcherC20i
+ endef
+ TARGET_DEVICES += ArcherC20i
+
+-define Device/ArcherC50
++define Device/ArcherC50v1
+ $(Device/Archer)
+ DTS := ArcherC50
+ SUPPORTED_DEVICES := c50
+ TPLINK_BOARD_NAME := ArcherC50
+- IMAGES += factory.bin
+- DEVICE_TITLE := TP-Link ArcherC50
++ IMAGES += factory-us.bin factory-eu.bin
++ IMAGE/factory-us.bin := tplink-v2-image -w 0
++ IMAGE/factory-eu.bin := tplink-v2-image -w 2
++ DEVICE_TITLE := TP-Link ArcherC50v1
+ endef
+-TARGET_DEVICES += ArcherC50
++TARGET_DEVICES += ArcherC50v1
+
+ define Device/ArcherMR200
+ $(Device/Archer)
+--
+2.7.4
+
diff --git a/build_patches/openwrt/0024-firmware-utils-mktplinkfw2-support-additional-hardwa.patch b/build_patches/openwrt/0024-firmware-utils-mktplinkfw2-support-additional-hardwa.patch
new file mode 100644
index 0000000..2c18db1
--- /dev/null
+++ b/build_patches/openwrt/0024-firmware-utils-mktplinkfw2-support-additional-hardwa.patch
@@ -0,0 +1,149 @@
+From 067733515c6ebe92f81aad587128cd97cf28dc10 Mon Sep 17 00:00:00 2001
+From: Piotr Dymacz <pepe2k at gmail.com>
+Date: Wed, 21 Jun 2017 14:15:55 +0200
+Subject: [PATCH 4/6] firmware-utils: mktplinkfw2: support additional hardware
+ version
+
+As it turned out, some of new MediaTek based TP-Link devices use value
+from field at 0x3c offset in version 3 of TP-Link header to specify
+"Additional Hardware Version".
+
+Value from this field is validated during regular (GUI) firmware upgrade
+on devices like TL-WR840N v4 or TL-WR841N v13. If it's zero (based on
+some tests, it seems that firmware will accept anything != 0), errors
+like below are printed on console and upgrade fails:
+
+[ rsl_sys_updateFirmware ] 2137: Firmware Additional HardwareVersion
+check failed
+
+[ rdp_updateFirmware ] 345: perror:4506
+
+Signed-off-by: Piotr Dymacz <pepe2k at gmail.com>
+[Rebased on 8ad1b09 + C25 + 1043v5]
+Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
+---
+ tools/firmware-utils/src/mktplinkfw2.c | 26 ++++++++++++++++++++------
+ 1 file changed, 20 insertions(+), 6 deletions(-)
+
+diff --git a/tools/firmware-utils/src/mktplinkfw2.c b/tools/firmware-utils/src/mktplinkfw2.c
+index 3ab5c52..b6dd670 100644
+--- a/tools/firmware-utils/src/mktplinkfw2.c
++++ b/tools/firmware-utils/src/mktplinkfw2.c
+@@ -43,7 +43,7 @@ struct fw_header {
+ char fw_version[48]; /* 0x04: fw version string */
+ uint32_t hw_id; /* 0x34: hardware id */
+ uint32_t hw_rev; /* 0x38: FIXME: hardware revision? */
+- uint32_t unk1; /* 0x3c: 0x00000000 */
++ uint32_t hw_ver_add; /* 0x3c: additional hardware version */
+ uint8_t md5sum1[MD5SUM_LEN]; /* 0x40 */
+ uint32_t unk2; /* 0x50: 0x00000000 */
+ uint8_t md5sum2[MD5SUM_LEN]; /* 0x54 */
+@@ -80,6 +80,7 @@ struct board_info {
+ char *id;
+ uint32_t hw_id;
+ uint32_t hw_rev;
++ uint32_t hw_ver_add;
+ char *layout_id;
+ uint32_t hdr_ver;
+ bool endian_swap;
+@@ -104,6 +105,8 @@ static char *opt_hw_id;
+ static uint32_t hw_id;
+ static char *opt_hw_rev;
+ static uint32_t hw_rev;
++static char *opt_hw_ver_add;
++static uint32_t hw_ver_add;
+ static int fw_ver_lo;
+ static int fw_ver_mid;
+ static int fw_ver_hi;
+@@ -288,6 +291,7 @@ static void usage(int status)
+ " -L <la> overwrite kernel load address with <la> (hexval prefixed with 0x)\n"
+ " -H <hwid> use hardware id specified with <hwid>\n"
+ " -W <hwrev> use hardware revision specified with <hwrev>\n"
++" -w <hwveradd> use additional hardware version specified with <hwveradd>\n"
+ " -F <id> use flash layout specified with <id>\n"
+ " -k <file> read kernel image from the file <file>\n"
+ " -r <file> read rootfs image from the file <file>\n"
+@@ -391,6 +395,7 @@ static int check_options(void)
+
+ hw_id = board->hw_id;
+ hw_rev = board->hw_rev;
++ hw_ver_add = board->hw_ver_add;
+ if (board->hdr_ver)
+ hdr_ver = board->hdr_ver;
+ endian_swap = board->endian_swap;
+@@ -405,6 +410,11 @@ static int check_options(void)
+ hw_rev = strtoul(opt_hw_rev, NULL, 0);
+ else
+ hw_rev = 1;
++
++ if (opt_hw_ver_add)
++ hw_ver_add = strtoul(opt_hw_rev, NULL, 0);
++ else
++ hw_ver_add = 0;
+ }
+
+ layout = find_layout(layout_id);
+@@ -511,6 +521,7 @@ static void fill_header(char *buf, int len)
+
+ hdr->hw_id = htonl(hw_id);
+ hdr->hw_rev = htonl(hw_rev);
++ hdr->hw_ver_add = htonl(hw_ver_add);
+
+ if (boot_info.file_size == 0) {
+ memcpy(hdr->md5sum1, md5salt_normal, sizeof(hdr->md5sum1));
+@@ -535,7 +546,6 @@ static void fill_header(char *buf, int len)
+ hdr->boot_ofs = htonl(0);
+ hdr->boot_len = htonl(boot_info.file_size);
+
+- hdr->unk1 = htonl(0);
+ hdr->unk2 = htonl(0);
+ hdr->unk3 = htonl(0xffffffff);
+ hdr->unk4 = htons(0x55aa);
+@@ -779,9 +789,6 @@ static int inspect_fw(void)
+
+ inspect_fw_phexdec("Version 2 Header size", sizeof(struct fw_header));
+
+- if (ntohl(hdr->unk1) != 0)
+- inspect_fw_phexdec("Unknown value 1", hdr->unk1);
+-
+ memcpy(md5sum, hdr->md5sum1, sizeof(md5sum));
+ if (ntohl(hdr->boot_len) == 0)
+ memcpy(hdr->md5sum1, md5salt_normal, sizeof(md5sum));
+@@ -820,11 +827,15 @@ static int inspect_fw(void)
+ ntohl(hdr->hw_id), board->id);
+ inspect_fw_phexexp("Hardware Revision",
+ ntohl(hdr->hw_rev), board->hw_rev);
++ inspect_fw_phexexp("Additional HW Version",
++ ntohl(hdr->hw_ver_add), board->hw_ver_add);
+ } else {
+ inspect_fw_phexpost("Hardware ID",
+ ntohl(hdr->hw_id), "unknown");
+ inspect_fw_phex("Hardware Revision",
+ ntohl(hdr->hw_rev));
++ inspect_fw_phex("Additional HW Version",
++ ntohl(hdr->hw_ver_add));
+ }
+
+ printf("%-23s: %d.%d.%d-%d.%d\n", "Software version",
+@@ -919,7 +930,7 @@ int main(int argc, char *argv[])
+ while ( 1 ) {
+ int c;
+
+- c = getopt(argc, argv, "a:B:H:E:F:L:V:N:W:ci:k:r:R:o:xhsjv:y:T:e");
++ c = getopt(argc, argv, "a:B:H:E:F:L:V:N:W:w:ci:k:r:R:o:xhsjv:y:T:e");
+ if (c == -1)
+ break;
+
+@@ -942,6 +953,9 @@ int main(int argc, char *argv[])
+ case 'W':
+ opt_hw_rev = optarg;
+ break;
++ case 'w':
++ opt_hw_ver_add = optarg;
++ break;
+ case 'L':
+ sscanf(optarg, "0x%x", &kernel_la);
+ break;
+--
+2.7.4
+
diff --git a/build_patches/openwrt/0025-firmware-utils-mktplinkfw2-fix-support-for-w-option.patch b/build_patches/openwrt/0025-firmware-utils-mktplinkfw2-fix-support-for-w-option.patch
new file mode 100644
index 0000000..1afba47
--- /dev/null
+++ b/build_patches/openwrt/0025-firmware-utils-mktplinkfw2-fix-support-for-w-option.patch
@@ -0,0 +1,34 @@
+From 5ead985c0d47952f0d70783ad5222d85a9381441 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Sun, 2 Jul 2017 22:28:24 +0200
+Subject: [PATCH 5/6] firmware-utils: mktplinkfw2: fix support for -w option
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This fixes copy & paste typo when reading -w argument.
+
+Fixes: 4b35e174caa5b ("firmware-utils: mktplinkfw2: support additional hardware version")
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+[Rebased on 8ad1b09 + C25 + 1043v5]
+Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
+---
+ tools/firmware-utils/src/mktplinkfw2.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/firmware-utils/src/mktplinkfw2.c b/tools/firmware-utils/src/mktplinkfw2.c
+index b6dd670..4efe06a 100644
+--- a/tools/firmware-utils/src/mktplinkfw2.c
++++ b/tools/firmware-utils/src/mktplinkfw2.c
+@@ -412,7 +412,7 @@ static int check_options(void)
+ hw_rev = 1;
+
+ if (opt_hw_ver_add)
+- hw_ver_add = strtoul(opt_hw_rev, NULL, 0);
++ hw_ver_add = strtoul(opt_hw_ver_add, NULL, 0);
+ else
+ hw_ver_add = 0;
+ }
+--
+2.7.4
+
diff --git a/build_patches/openwrt/0026-firmware-utils-mktplinkfw2-fix-MD5-salt.patch b/build_patches/openwrt/0026-firmware-utils-mktplinkfw2-fix-MD5-salt.patch
new file mode 100644
index 0000000..21304bb
--- /dev/null
+++ b/build_patches/openwrt/0026-firmware-utils-mktplinkfw2-fix-MD5-salt.patch
@@ -0,0 +1,70 @@
+From a8a8b0ee0f159a918ab224a51e0d2cf8620793e7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Sun, 2 Jul 2017 17:06:58 +0200
+Subject: [PATCH 6/6] firmware-utils: mktplinkfw2: fix MD5 salt
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+LEDE supports few devices using TP-Link firmware format (V2 or V3):
+ArcherC20i, ArcherC50, ArcherMR200, TDW8970, TDW8980, TL-WR840N v4,
+TL-WR841N v13 and VR200v
+
+Testing mktplinkfw2 tool with official (vendor generated) firmware files
+for above devices has shown an error when comparing calculated and
+included MD5 sum, e.g.:
+> mktplinkfw2 -i Archer_C20iv1_0.9.1_3.2_up_boot\(170221\)_2017-02-21_17.14.03.bin | grep -A 1 MD5Sum1
+Header MD5Sum1 : 22 5a cb 92 10 d2 95 7b df 62 9a f8 62 17 37 10 (*ERROR*)
+ --> expected : ad 19 11 d1 78 98 a7 42 5f 2e 64 da 8a 34 ec cb
+
+This problem has been verified to occur with:
+Archer_C20iv1_0.9.1_3.2_up_boot(170221)_2017-02-21_17.14.03.bin
+Archer MR200v1_0.9.1_1.1_up_boot_v004a.0 Build 160905 Rel.60037n.bin
+TD-W8970v3_0.9.1_2.0_up_boot(160816)_2016-08-16_10.40.57.bin
+TD-W8980v1_0.6.0_1.8_up_boot(150514)_2015-05-14_11.16.43.bin
+Archer_VR200vv2_0.2.0_0.8.0_up_boot(161202)_2016-12-05_14.39.06.bin
+
+For some images, e.g.:
+Archer_C50v3_EU_0.9.1_0.3_up_boot[170417-rel52298].bin
+TL-WR840Nv4_EU_0.9.1_4.16_up_boot[170421-rel70692].bin
+TL-WR841Nv13_0.9.1_3.16_up_boot(161012).bin
+mktplinkfw2 calculates zero MD5 so these has to be fixed separately:
+> mktplinkfw2 -i TL-WR841Nv13_0.9.1_3.16_up_boot\(161012\).bin | grep -A 1 MD5Sum1
+Header MD5Sum1 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (*ERROR*)
+ --> expected : 6f 1d 9b 57 5d 42 14 6d bf a2 03 9d 46 7d 55 55
+
+It's most likely that MD5 salt used in mktplinkfw2 has been always wrong
+(and it's not a matter of e.g. a vendor change). Update it to fix MD5
+calculation.
+
+This has been also verified to calculate MD5 correctly for other (not
+yet supported) devices, e.g.:
+Archer_C3150v2_0.1.0_0.9.1_up_boot(160812)_2016-08-12_10.52.54.bin
+Archer_C3200v1_0.9.1_0.1_up_boot(160704)_2016-07-04_15.48.28.bin
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+Acked-by: Mathias Kresin <dev at kresin.me>
+[Rebased on 8ad1b09 + C25 + 1043v5]
+Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
+---
+ tools/firmware-utils/src/mktplinkfw2.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tools/firmware-utils/src/mktplinkfw2.c b/tools/firmware-utils/src/mktplinkfw2.c
+index 4efe06a..f6436c9 100644
+--- a/tools/firmware-utils/src/mktplinkfw2.c
++++ b/tools/firmware-utils/src/mktplinkfw2.c
+@@ -135,8 +135,8 @@ char md5salt_normal[MD5SUM_LEN] = {
+ };
+
+ char md5salt_boot[MD5SUM_LEN] = {
+- 0x8c, 0xef, 0x33, 0x5b, 0xd5, 0xc5, 0xce, 0xfa,
+- 0xa7, 0x9c, 0x28, 0xda, 0xb2, 0xe9, 0x0f, 0x42,
++ 0x8c, 0xef, 0x33, 0x5f, 0xd5, 0xc5, 0xce, 0xfa,
++ 0xac, 0x9c, 0x28, 0xda, 0xb2, 0xe9, 0x0f, 0x42,
+ };
+
+ static struct flash_layout layouts[] = {
+--
+2.7.4
+
diff --git a/src/packages/fff/fff-boardname/files/etc/uci-defaults/50-fff-boardname b/src/packages/fff/fff-boardname/files/etc/uci-defaults/50-fff-boardname
old mode 100755
new mode 100644
index 94b9884..8b81754
--- a/src/packages/fff/fff-boardname/files/etc/uci-defaults/50-fff-boardname
+++ b/src/packages/fff/fff-boardname/files/etc/uci-defaults/50-fff-boardname
@@ -54,6 +54,9 @@ case "$BOARD" in
archer-c7)
BOARD=archer-c7-v2
;;
+ c50)
+ BOARD=archer-c50-v1
+ ;;
esac
uci set board.model.name=$BOARD
diff --git a/src/packages/fff/fff-network/ramips/network.archer-c50-v1 b/src/packages/fff/fff-network/ramips/network.archer-c50-v1
new file mode 100644
index 0000000..280d597
--- /dev/null
+++ b/src/packages/fff/fff-network/ramips/network.archer-c50-v1
@@ -0,0 +1,8 @@
+WANDEV=eth0
+SWITCHDEV=eth0
+CLIENT_PORTS="6t 1 2"
+WAN_PORTS="6t 0"
+BATMAN_PORTS="6t 3 4"
+
+ETHMESHMAC=
+ROUTERMAC=eth0
diff --git a/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh b/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh
index 8aaa924..a87745c 100755
--- a/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh
+++ b/src/packages/fff/fff-sysupgrade/files/etc/sysupgrade.sh
@@ -17,9 +17,11 @@ BOARD=$(uci get board.model.name)
#decide SOC
case $BOARD in
tl-wdr4900-v1 )
- SOC="mpc85xx" ;;
+ SOC="mpc85xx-g" ;;
+ archer-c50-v1 )
+ SOC="ramips-mt7620" ;;
* )
- SOC="ar71xx" ;;
+ SOC="ar71xx-g" ;;
esac
echo ""
echo "Hardware: $BOARD"
@@ -40,6 +42,8 @@ case $BOARD in
BOARD="wr841-v10" ;;
wr841n-v11 )
BOARD="wr841-v11" ;;
+ archer-c50-v1 )
+ BOARD="ArcherC50v1" ;;
esac
wget "${UPGRADE_PATH}/release.nfo"
@@ -81,7 +85,7 @@ if [ "$FIRMWARE_COMMUNITY" = "franken" ]; then
FIRMWARE_COMMUNITY="fff"
fi
-FILE="${FIRMWARE_COMMUNITY}-${VERSION}-${SOC}-g-${BOARD}-squashfs-sysupgrade.bin"
+FILE="${FIRMWARE_COMMUNITY}-${VERSION}-${SOC}-${BOARD}-squashfs-sysupgrade.bin"
echo "Downloading $FILE"
echo ""
wget "${UPGRADE_PATH}/${FILE}"
--
2.7.4
Mehr Informationen über die Mailingliste franken-dev