[PATCH] Add support for TP-Link Archer C50v1
mail at adrianschmutzler.de
mail at adrianschmutzler.de
So Okt 22 18:32:04 CEST 2017
Hallo Fabian,
hab grade mit deinem Patch ein bisschen rumgespielt und ihn entsprechend meiner Anmerkungen verändert.
Am Montag kommt mein Testrouter, ich bin gespannt… :-)
Grüße
Adrian
From: Fabian Bläse [mailto:fabian at blaese.de]
Sent: Freitag, 20. Oktober 2017 19:59
To: mail at adrianschmutzler.de; franken-dev at freifunk.net
Subject: RE: [PATCH] Add support for TP-Link Archer C50v1
Tatsächlich glaube ich nicht, dass das allzu viel ist, sind zwei komplett verschiedene Chipsätze. Aber ein zweites Gerät zum Testen ist auf jeden Fall gut :-)
Fabian
On 20 October 2017 19:31:40 GMT+02:00, mail at adrianschmutzler.de <mailto:mail at adrianschmutzler.de> wrote:
Gut, dann werde ich mir mal so ein Ding bestellen und am WE eine Patchversion bauen, die auf meinen 1043v5 rebased.
Da dürfte sich einiges von LEDE überschneiden.
Grüße
Adrian
-----Original Message-----
From: Fabian Bläse [mailto:fabian at blaese.de]
Sent: Freitag, 20. Oktober 2017 19:27
To: Adrian Schmutzler <mail at adrianschmutzler.de <mailto:mail at adrianschmutzler.de> >
Cc: franken-dev at freifunk.net <mailto:franken-dev at freifunk.net>
Subject: Re: [PATCH] Add support for TP-Link Archer C50v1
Die v3 wird getrennt vermarktet (und sieht auch sehr anders aus) und die v2
scheint es nicht für EU zu geben. Aber bin mir nicht sicher.
Ich hab zwei zu verschiedenen Zeitpunkten genau dort bestellt und immer
die v1 bekommen.
On 20. Oct 2017, at 19:25, <mail at adrianschmutzler.de <mailto:mail at adrianschmutzler.de> >
<mail at adrianschmutzler.de <mailto:mail at adrianschmutzler.de> > wrote:
Wenn ich den bestell, wie hoch ist die Chance auf einen v1?
https://www.amazon.de/TP-Link-Archer-C50-Anschluss-
GlasfaserModem/dp/B
011NLWSQS/ref=sr_1_2?ie=UTF8&qid=1508520112&sr=8-2&keywords=c50
-----Original Message-----
From: Fabian Bläse [mailto:fabian at blaese.de]
Sent: Freitag, 20. Oktober 2017 19:17
To: mail at adrianschmutzler.de <mailto:mail at adrianschmutzler.de>
Cc: franken-dev at freifunk.net <mailto:franken-dev at freifunk.net>
Subject: Re: [PATCH] Add support for TP-Link Archer C50v1
Ah, geht es um flashen auf die Factory Firmware? Das habe ich ehrlich
gesagt bisher noch nicht probiert, ich war leider gezwungen, per SPI
zu flashen, da hab ich gleich LEDE rauf geflasht.
Ich kümmere mich drum, danke für den Hinweis.
Fabian
On 20. Oct 2017, at 19:14, mail at adrianschmutzler.de <mailto:mail at adrianschmutzler.de> wrote:
Das geht auch, nur das Gerät nimmt ihn dann nicht an, weil es das
Image
mit TPLINK_BOARD_NAME prüft, ob es das richtige Gerät ist. Hatte
genau das beim 1043v5.
-----Original Message-----
From: Fabian Bläse [mailto:fabian at blaese.de]
Sent: Freitag, 20. Oktober 2017 19:12
To: Adrian Schmutzler <mail at adrianschmutzler.de <mailto:mail at adrianschmutzler.de> >
Cc: franken-dev at freifunk.net <mailto:franken-dev at freifunk.net>
Subject: Re: [PATCH] Add support for TP-Link Archer C50v1
Hallo Adrian,
ich schau nochmal drüber, sobald ich mit testen fertig bin.
Wann ist das passiert? Das letzte mal, als ich es probiert habe,
hat sich der Patch noch wunderbar applien und kompilieren lassen.
Fabian
On 20. Oct 2017, at 18:03, Adrian Schmutzler
<mail at adrianschmutzler.de <mailto:mail at adrianschmutzler.de> >
wrote:
Hallo nochmal,
es gab im LEDE master mal einen Patch, der hat
TPLINK_BOARD_NAME
to
TPLINK_BOARD_ID umbenannt. Da du den nicht drin hast (und auch
nicht reinnehmen solltest), musst du alle Fälle von TPLINK_BOARD_ID
entsprechend nach TPLINK_BOARD_NAME zurück-umbenennen.
Geht wahrscheinlich mit Find/Replace.
Grüße
Adrian
-----Original Message-----
From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On
Behalf
Of Fabian Bläse
Sent: Mittwoch, 18. Oktober 2017 16:41
To: franken-dev at freifunk.net <mailto:franken-dev at freifunk.net>
Subject: [PATCH] Add support for TP-Link Archer C50v1
Signed-off-by: Fabian Bläse <fabian at blaese.de <mailto:fabian at blaese.de> >
---
bsp/board_c50.bsp | 7 +
bsp/c50/.config | 16 ++
...mktplinkfw2-related-commands-to-image-com.patch | 166
+++++++++++++++++++++ ...e-simplify-TP-Link-Archer-devices-
definit.patch | 73 +++++++++
...s-Archer-C50v1-support-US-and-EU-
versions.patch | 52 +++++++
...ils-mktplinkfw2-support-additional-
hardwa.patch | 147 ++++++++++++++++++
...tils-mktplinkfw2-fix-support- for-w-option.patch | 32 ++++
...5-firmware-utils-mktplinkfw2-fix-MD5-
salt.patch | 68 +++++++++
src/packages/fff/fff-network/ramips/network.c50 | 8 +
9 files changed, 569 insertions(+) create mode 100644
bsp/board_c50.bsp create mode 100644 bsp/c50/.config create
mode
100644
build_patches/openwrt/0009-build-move-
mktplinkfw2-
related-commands-to-image-com.patch
create mode 100644
build_patches/openwrt/0010-ramips-image-simplify-
TP-Link-Archer-devices-definit.patch
create mode 100644 build_patches/openwrt/0011-ramips-Archer-
C50v1-
support-US-and-EU-versions.patch
create mode 100644 build_patches/openwrt/0013-firmware-utils-
mktplinkfw2-support-additional-hardwa.patch
create mode 100644 build_patches/openwrt/0014-firmware-utils-
mktplinkfw2-fix-support-for-w-option.patch
create mode 100644 build_patches/openwrt/0015-firmware-utils-
mktplinkfw2-fix-MD5-salt.patch
create mode 100644
src/packages/fff/fff-network/ramips/network.c50
diff --git a/bsp/board_c50.bsp b/bsp/board_c50.bsp new file mode
100644 index 0000000..74576c7
--- /dev/null
+++ b/bsp/board_c50.bsp
@@ -0,0 +1,7 @@
+machine=c50
+chipset=ramips
+target=$builddir/$machine
+
+images=(
+ "lede-ramips-mt7620-ArcherC50-squashfs-factory-
sysupgrade.bin"
+ )
diff --git a/bsp/c50/.config b/bsp/c50/.config new file mode
100644 index
0000000..6e9a624
--- /dev/null
+++ b/bsp/c50/.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_ArcherC50=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/0009-build-move-mktplinkfw2-related-
commands-to-image-com.patch b/build_patches/openwrt/0009-
build-
move-mktplinkfw2-related-commands-to-image-com.patch
new file mode 100644
index 0000000..1c9999b
--- /dev/null
+++ b/build_patches/openwrt/0009-build-move-mktplinkfw2-
related-
commands
+++ -to-image-com.patch
@@ -0,0 +1,166 @@
+From 82e87bab1f0572e576a89aa85b5ebfe45f257cc9 Mon Sep 17
00:00:00
2001
+From: Piotr Dymacz <pepe2k at gmail.com <mailto:pepe2k at gmail.com> >
+Date: Fri, 23 Jun 2017 23:07:10 +0200
+Subject: [PATCH 1/3] build: move mktplinkfw2 related commands
to
+image-commands.mk <http://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 <mailto:pepe2k at gmail.com> > [Rebased on
8ad1b09]
+Signed-off-by: Fabian Bläse <fabian at blaese.de <mailto:fabian at blaese.de> >
+---
+ include/image-commands.mk <http://image-commands.mk> | 14 ++++++++++++++
+ target/linux/lantiq/image/tp-link.mk <http://tp-link.mk> | 25
+++++++++----------------- target/linux/ramips/image/mt7620.mk <http://mt7620.mk> |
+24 ++++++++++++------------
+ 3 files changed, 34 insertions(+), 29 deletions(-)
+
+diff --git a/include/image-commands.mk <http://image-commands.mk> b/include/image-
commands.mk <http://commands.mk>
+index 04fa853fbb..90fe5fc242 100644
+--- a/include/image-commands.mk <http://image-commands.mk>
++++ b/include/image-commands.mk <http://image-commands.mk>
+@@ -173,6 +173,20 @@ define Build/sysupgrade-tar
+ $@
+ endef
+
++define Build/tplink-v2-header
++ $(STAGING_DIR_HOST)/bin/mktplinkfw2 \
++ -c -V "ver. 2.0" -B $(TPLINK_BOARD_ID) $(1) -k $@ -o
$@.new <mailto:$@.new>
++ @mv $@.new <mailto:$@.new> $@
++endef
++
++define Build/tplink-v2-image
++ $(STAGING_DIR_HOST)/bin/mktplinkfw2 \
++ -a 0x4 -j -V "ver. 2.0" -B $(TPLINK_BOARD_ID) $(1) \
++ -k $(IMAGE_KERNEL) -r $(IMAGE_ROOTFS) -o
$@.new <mailto:$@.new>
++ cat $@.new <mailto:$@.new> >> $@
++ rm -rf $@.new <mailto:$@.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 <http://tp-link.mk>
+b/target/linux/lantiq/image/tp-link.mk <http://tp-link.mk>
+index 49c4bc10e1..976184175a 100644
+--- a/target/linux/lantiq/image/tp-link.mk <http://tp-link.mk>
++++ b/target/linux/lantiq/image/tp-link.mk <http://tp-link.mk>
+@@ -1,27 +1,18 @@
+-define Build/tplink-fw
+- mktplinkfw2 -c -B $(BOARD_ID) -s \
+- -k $@ -o $@.new <mailto:$@.new>
+- mv $@.new <mailto:$@.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_ID
+
+ 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_ID := 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_ID := 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_ID := 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 <http://mt7620.mk>
+b/target/linux/ramips/image/mt7620.mk <http://mt7620.mk>
+index c2c0ae271d..bb79acb894 100644
+--- a/target/linux/ramips/image/mt7620.mk <http://mt7620.mk>
++++ b/target/linux/ramips/image/mt7620.mk <http://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 <mailto:$@.new> -k $@ -r $(IMAGE_ROOTFS) && mv
$@.new <mailto:$@.new> $@
+-endef
++DEVICE_VARS += TPLINK_BOARD_ID
+
+ define Build/pad-kernel-ex2700
+ cp $@ $@.tmp <mailto:$@.tmp> && dd if=/dev/zero bs=64 count=1 >> $@.tmp <mailto:$@.tmp>
\ @@ -
35,10
++32,11 @@ endef define Device/ArcherC20i
+ DTS := ArcherC20i
+ SUPPORTED_DEVICES := c20i
++ TPLINK_BOARD_ID := 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_ID := 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_ID := 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.14.2
+
diff --git
a/build_patches/openwrt/0010-ramips-image-simplify-TP-Link-
Archer-devices-definit.patch
b/build_patches/openwrt/0010-ramips-image-
simplify-TP-Link-Archer-devices-definit.patch
new file mode 100644
index 0000000..f30411f
--- /dev/null
+++ b/build_patches/openwrt/0010-ramips-image-simplify-TP-Link-
Archer
+++ -
de
+++ vices-definit.patch
@@ -0,0 +1,73 @@
+From 16cbb38ac1f84d60b9901f9d6827a498a1cbba46 Mon Sep 17
00:00:00
2001
+From: Piotr Dymacz <pepe2k at gmail.com <mailto:pepe2k at gmail.com> >
+Date: Fri, 23 Jun 2017 23:20:53 +0200
+Subject: [PATCH 2/3] 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 <mailto:pepe2k at gmail.com> > [Rebased on
8ad1b09]
+Signed-off-by: Fabian Bläse <fabian at blaese.de <mailto:fabian at blaese.de> >
+---
+ target/linux/ramips/image/mt7620.mk <http://mt7620.mk> | 21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+diff --git a/target/linux/ramips/image/mt7620.mk <http://mt7620.mk>
+b/target/linux/ramips/image/mt7620.mk <http://mt7620.mk>
+index bb79acb894..dd75f5a504 100644
+--- a/target/linux/ramips/image/mt7620.mk <http://mt7620.mk>
++++ b/target/linux/ramips/image/mt7620.mk <http://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_ID := 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_ID := 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_ID := 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_ID := 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.14.2
+
diff --git
a/build_patches/openwrt/0011-ramips-Archer-C50v1-support-US-
and-EU-versions.patch b/build_patches/openwrt/0011-ramips-
Archer-
C50v1-support-US-and-EU-versions.patch
new file mode 100644
index 0000000..95d8ce7
--- /dev/null
+++ b/build_patches/openwrt/0011-ramips-Archer-C50v1-support-
US-
and-
EU-v
+++ ersions.patch
@@ -0,0 +1,52 @@
+From cfa1a9466db691915960be89e40f3c8335b9ea4f Mon Sep 17
00:00:00
2001
+From: Thibaut VARENE <hacks at slashdirt.org <mailto:hacks at slashdirt.org> >
+Date: Fri, 28 Jul 2017 13:00:54 +0200
+Subject: [PATCH 3/3] ramips: Archer C50v1: support US and EU
+versions
+
+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 <mailto:hacks at slashdirt.org> >
+---
+ target/linux/ramips/image/mt7620.mk <http://mt7620.mk> | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/target/linux/ramips/image/mt7620.mk <http://mt7620.mk>
+b/target/linux/ramips/image/mt7620.mk <http://mt7620.mk>
+index dd75f5a504..64d11a5b0a 100644
+--- a/target/linux/ramips/image/mt7620.mk <http://mt7620.mk>
++++ b/target/linux/ramips/image/mt7620.mk <http://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_ID := 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.14.2
+
diff --git
a/build_patches/openwrt/0013-firmware-utils-mktplinkfw2-
support-additional-hardwa.patch
b/build_patches/openwrt/0013-firmware-
utils-mktplinkfw2-support-additional-hardwa.patch
new file mode 100644
index 0000000..e679fd0
--- /dev/null
+++ b/build_patches/openwrt/0013-firmware-utils-mktplinkfw2-
support
+++ -
addi
+++ tional-hardwa.patch
@@ -0,0 +1,147 @@
+From fc3aa153d006a0eb7e43f3f06af309ec60996755 Mon Sep 17
00:00:00
2001
+From: Piotr Dymacz <pepe2k at gmail.com <mailto:pepe2k at gmail.com> >
+Date: Wed, 21 Jun 2017 14:15:55 +0200
+Subject: [PATCH 1/3] 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 <mailto:pepe2k at gmail.com> >
+---
+ 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 3ab5c52ec2..b6dd670b90 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.11.0 (Apple Git-81)
+
diff --git
a/build_patches/openwrt/0014-firmware-utils-mktplinkfw2-fix-
support-for-w-option.patch
b/build_patches/openwrt/0014-firmware-utils-
mktplinkfw2-fix-support-for-w-option.patch
new file mode 100644
index 0000000..4ce76b6
--- /dev/null
+++ b/build_patches/openwrt/0014-firmware-utils-mktplinkfw2-fix-
suppo
+++ rt-
+++ for-w-option.patch
@@ -0,0 +1,32 @@
+From f116ed7573cc77e4db1ef8c183932da6a56a195f Mon Sep 17
00:00:00
2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?=
<rafal at milecki.pl <mailto:rafal at milecki.pl> >
+Date: Sun, 2 Jul 2017 22:28:24 +0200
+Subject: [PATCH 2/3] 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 <mailto:rafal at milecki.pl> >
+---
+ 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 b6dd670b90..4efe06acf3 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.11.0 (Apple Git-81)
+
diff --git
a/build_patches/openwrt/0015-firmware-utils-mktplinkfw2-fix-
MD5-salt.patch
b/build_patches/openwrt/0015-firmware-utils-mktplinkfw2-
fix-MD5-salt.patch
new file mode 100644
index 0000000..a0e14df
--- /dev/null
+++ b/build_patches/openwrt/0015-firmware-utils-mktplinkfw2-fix-
MD5
+++ -
salt
+++ .patch
@@ -0,0 +1,68 @@
+From 2f7382a3b9ae90e67980f0baedeb7f3109cfc0a6 Mon Sep 17
00:00:00
2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?=
<rafal at milecki.pl <mailto:rafal at milecki.pl> >
+Date: Sun, 2 Jul 2017 17:06:58 +0200
+Subject: [PATCH 3/3] 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
+> Arche
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20171022/3a4adb72/attachment.html>
Mehr Informationen über die Mailingliste franken-dev