TP-Link MR3020 v3 build problems

What do your target/linux/ramips/base-files/lib/ramips.sh and target/linux/ramips/dts/TL-MR3020V3.dts look like?

And please upload this to Github,it is really impossible to review code this way

Before I upload this I have to clean this project. When I finish, I will upload files to github.

TL-MR3020V3.dts:

/dts-v1/;

#include "TL-MR3020V3.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

/ {
	compatible = "tplink,tl-mr3020-v3", "mediatek,mt7628an-soc";
	model = "TP-Link TL-MR3020 v3";

	gpio-keys-polled {
		compatible = "gpio-keys-polled";
		#address-cells = <1>;
		#size-cells = <0>;
		poll-interval = <20>;

		reset {
			label = "reset";
			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_WPS_BUTTON>;
		};

		
	};

	gpio-leds {
		compatible = "gpio-leds";

		power {
			label = "tl-mr3020-v3:green:power";
			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
		};

		wps {
			label = "tl-mr3020-v3:green:wps";
			gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
		};


		lan {
			label = "tl-mr3020-v3:green:lan";
			gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
		};


		usb {
			label = "tl-mr3020-v3:green:usb";
			gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
		};


		wlan {
			label = "tl-mr3020-v3:green:wlan";
			gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
		};
	};
};

&pinctrl {
	state_default: pinctrl0 {
		gpio {
			ralink,group = "gpio", "p0led_an", "p1led_an", "p2led_an", "p3led_an", "p4led_an", "perst", "refclk", "uart1", "wdt", "wled_an", "i2s";
			ralink,function = "gpio";
		};
	};
};

Where is ramips.sh?
And also,what do you even need TL-MR3020V3.dtsi for?

TL-MR3020V3.dtsi is different from 841, so I've created one:

#include "mt7628an.dtsi"

/ {
	chosen {
		bootargs = "console=ttyS0,115200";
	};

	memory@0 {
		device_type = "memory";
		reg = <0x0 0x4000000>;
	};
};

&spi0 {
	status = "okay";

	m25p80@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <10000000>;
		m25p,chunked-io = <32>;

		partition@0 {
			label = "boot";
			reg = <0x0 0x20000>;
			read-only;
		};

		partition@20000 {
			label = "firmware";
			reg = <0x20000 0x7a0000>;
		};

		partition@7c0000 {
			label = "config";
			reg = <0x7c0000 0x10000>;
			read-only;
		};

		factory: partition@7d0000 {
			label = "factory";
			reg = <0x7d0000 0x30000>;
			read-only;
		};
	};
};

&ehci {
	status = "okay";
};

&ohci {
	status = "okay";
};
&gpio0 {
	status = "okay";
};
&gpio1 {
	status = "okay";
};

&wmac {
	status = "okay";
	mtd-mac-address = <&factory 0xf100>;
	mediatek,mtd-eeprom = <&factory 0x20000>;
};

&ethernet {
	mtd-mac-address = <&factory 0xf100>;
	mediatek,portmap = "llllw";
};

ramips.sh:

#!/bin/sh
#
# Copyright (C) 2010-2013 OpenWrt.org
#

RAMIPS_BOARD_NAME=
RAMIPS_MODEL=

ramips_board_detect() {
	local machine
	local name

	machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /proc/cpuinfo)

	case "$machine" in
	*"11AC NAS Router")
		name="11acnas"
		;;
	*"3G150B")
		name="3g150b"
		;;
	*"3G300M")
		name="3g300m"
		;;
	*"3g-6200n")
		name="3g-6200n"
		;;
	*"3g-6200nl")
		name="3g-6200nl"
		;;
	*"A5-V11")
		name="a5-v11"
		;;
	*"Ai-BR100")
		name="ai-br100"
		;;
	*"Air3GII")
		name="air3gii"
		;;
	*"ALL0239-3G")
		name="all0239-3g"
		;;
	*"ALL0256N (4M)")
		name="all0256n-4M"
		;;
	*"ALL0256N (8M)")
		name="all0256n-8M"
		;;
	*"ALL5002")
		name="all5002"
		;;
	*"ALL5003")
		name="all5003"
		;;
	*"AR670W")
		name="ar670w"
		;;
	*"AR725W")
		name="ar725w"
		;;
	*"ASL26555 (8M)")
		name="asl26555-8M"
		;;
	*"ASL26555 (16M)")
		name="asl26555-16M"
		;;
	*"ATP-52B")
		name="atp-52b"
		;;
	*"AWAPN2403")
		name="awapn2403"
		;;
	*"AWM002 EVB (4M)")
		name="awm002-evb-4M"
		;;
	*"AWM002 EVB (8M)")
		name="awm002-evb-8M"
		;;
	*"BC2")
		name="bc2"
		;;
	*"BR-6475nD")
		name="br-6475nd"
		;;
	*"Broadway")
		name="broadway"
		;;
	*"C108")
		name="c108"
		;;
	*"C20")
		name="c20"
		;;
	*"C20i")
		name="c20i"
		;;
	*"C50")
		name="c50"
		;;
	*"Carambola")
		name="carambola"
		;;
	*"CF-WR800N")
		name="cf-wr800n"
		;;
	*"CS-QR10")
		name="cs-qr10"
		;;
	*"CY-SWR1100")
		name="cy-swr1100"
		;;
	*"D105")
		name="d105"
		;;
	*"D240")
		name="d240"
		;;
	*"DAP-1350")
		name="dap-1350"
		;;
	*"DB-WRT01")
		name="db-wrt01"
		;;
	*"DCH-M225")
		name="dch-m225"
		;;
	*"DCS-930")
		name="dcs-930"
		;;
	*"DCS-930L B1")
		name="dcs-930l-b1"
		;;
	*"DIR-300 B1")
		name="dir-300-b1"
		;;
	*"DIR-300 B7")
		name="dir-300-b7"
		;;
	*"DIR-320 B1")
		name="dir-320-b1"
		;;
	*"DIR-600 B1")
		name="dir-600-b1"
		;;
	*"DIR-610 A1")
		name="dir-610-a1"
		;;
	*"DIR-615 D")
		name="dir-615-d"
		;;
	*"DIR-615 H1")
		name="dir-615-h1"
		;;
	*"DIR-620 A1")
		name="dir-620-a1"
		;;
	*"DIR-620 D1")
		name="dir-620-d1"
		;;
	*"DIR-645")
		name="dir-645"
		;;
	*"DIR-810L")
		name="dir-810l"
		;;
	*"DIR-860L B1")
		name="dir-860l-b1"
		;;
	*"Dovado Tiny AC")
		name="tiny-ac"
		;;
	*"DuZun DM06")
		name="duzun-dm06"
		;;
	*"DWR-512 B")
		name="dwr-512-b"
		;;
	*"E1700")
		name="e1700"
		;;
	*"ESR-9753")
		name="esr-9753"
		;;
	*"EW1200")
		name="ew1200"
		;;
	*"EX2700")
		name="ex2700";
		;;
	*"EX3700/EX3800")
		name="ex3700"
		;;
	*"F5D8235 v1")
		name="f5d8235-v1"
		;;
	*"F5D8235 v2")
		name="f5d8235-v2"
		;;
	*"F7C027")
		name="f7c027"
		;;
	*"FireWRT")
		name="firewrt"
		;;
	*"Fonera 2.0N")
		name="fonera20n"
		;;
	*"FreeStation5")
		name="freestation5"
		;;
	*"GB-PC1")
		name="gb-pc1"
		;;
	*"GL-MT300A")
		name="gl-mt300a"
		;;
	*"GL-MT300N")
		name="gl-mt300n"
		;;
	*"GL-MT750")
		name="gl-mt750"
		;;
	*"GL-MT300N-V2")
		name="gl-mt300n-v2"
		;;
	*"HC5661")
		name="hc5661"
		;;
	*"HC5661A")
		name="hc5661a"
		;;
	*"HC5761")
		name="hc5761"
		;;
	*"HC5861")
		name="hc5861"
		;;
	*"HC5962")
		name="hc5962"
		;;
	*"HG255D")
		name="hg255d"
		;;
	*"HLK-RM04")
		name="hlk-rm04"
		;;
	*"HPM")
		name="hpm"
		;;
	*"HT-TM02")
		name="ht-tm02"
		;;
	*"HW550-3G")
		name="hw550-3g"
		;;
	*"IP2202")
		name="ip2202"
		;;
	*"JHR-N805R")
		name="jhr-n805r"
		;;
	*"JHR-N825R")
		name="jhr-n825r"
		;;
	*"JHR-N926R")
		name="jhr-n926r"
		;;
	*"K2P")
		name="k2p"
		;;
	*"M3")
		name="m3"
		;;
	*"M4 (4M)")
		name="m4-4M"
		;;
	*"M4 (8M)")
		name="m4-8M"
		;;
	*"MediaTek LinkIt Smart 7688")
		linkit="$(dd bs=1 skip=1024 count=12 if=/dev/mtd2 2> /dev/null)"
		if [ "${linkit}" = "LINKITS7688D" ]; then
			name="linkits7688d"
			RAMIPS_MODEL="${machine} DUO"
		else
			name="linkits7688"
		fi
		;;
	*"Memory 2 Move")
		name="m2m"
		;;
	*"Mercury MAC1200R v2")
		name="mac1200rv2"
		;;
	*"Mi Router 3G")
		name="mir3g"
		;;
	*"MicroWRT")
		name="microwrt"
		;;
	*"MiniEMBPlug")
		name="miniembplug"
		;;
	*"MiniEMBWiFi")
		name="miniembwifi"
		;;
	*"MiWiFi Mini")
		name="miwifi-mini"
		;;
	*"MiWiFi Nano")
		name="miwifi-nano"
		;;
	*"MLW221")
		name="mlw221"
		;;
	*"MLWG2")
		name="mlwg2"
		;;
	*"MOFI3500-3GN")
		name="mofi3500-3gn"
		;;
	*"MPR-A1")
		name="mpr-a1"
		;;
	*"MPR-A2")
		name="mpr-a2"
		;;
	*"MR-102N")
		name="mr-102n"
		;;
	*"MR200")
		name="mr200"
		;;
	*"MT7620a + MT7530 evaluation"*)
		name="mt7620a_mt7530"
		;;
	*"MT7620a V22SG"*)
		name="mt7620a_v22sg"
		;;
	*"MT7621 evaluation"*)
		name="mt7621"
		;;
	*"MT7628AN evaluation"*)
		name="mt7628"
		;;
	*"MT7688 evaluation"*)
		name="mt7688"
		;;
	*"MZK-750DHP")
		name="mzk-750dhp"
		;;
	*"MZK-DP150N")
		name="mzk-dp150n"
		;;
	*"MZK-EX300NP")
		name="mzk-ex300np"
		;;
	*"MZK-EX750NP")
		name="mzk-ex750np"
		;;
	*"MZK-W300NH2"*)
		name="mzk-w300nh2"
		;;
	*"MZK-WDPR"*)
		name="mzk-wdpr"
		;;
	*"NA930")
		name="na930"
		;;
	*"NBG-419N")
		name="nbg-419n"
		;;
	*"NBG-419N v2")
		name="nbg-419n2"
		;;
	*"Newifi-D1")
		name="newifi-d1"
		;;
	*"NCS601W")
		name="ncs601w"
		;;
	*"NixcoreX1 (8M)")
		name="nixcore-x1-8M"
		;;
	*"NixcoreX1 (16M)")
		name="nixcore-x1-16M"
		;;
	*"NW718")
		name="nw718"
		;;
	*"Onion Omega2")
		name="omega2"
		;;
	*"Onion Omega2+")
		name="omega2p"
		;;
	*"OY-0001")
		name="oy-0001"
		;;
	*"PBR-D1")
		name="pbr-d1"
		;;
	*"PBR-M1")
		name="pbr-m1"
		;;
	*"PSG1208")
		name="psg1208"
		;;
	*"PSG1218 rev.A")
		name="psg1218a"
		;;
	*"PSG1218 rev.B")
		name="psg1218b"
		;;
	*"PSR-680W"*)
		name="psr-680w"
		;;
	*"PWH2004")
		name="pwh2004"
		;;
	*"PX-4885 (4M)")
		name="px-4885-4M"
		;;
	*"PX-4885 (8M)")
		name="px-4885-8M"
		;;
	*"Q7")
		name="zte-q7"
		;;
	*"R6220")
		name="r6220"
		;;
	*"RB750Gr3")
		name="rb750gr3"
		;;
	*"RE350 v1")
		name="re350-v1"
		;;
	*"RE6500")
		name="re6500"
		;;
	*"RN502J")
		name="xdxrn502j"
		;;
	*"RP-N53")
		name="rp-n53"
		;;
	*"RT5350F-OLinuXino")
		name="rt5350f-olinuxino"
		;;
	*"RT5350F-OLinuXino-EVB")
		name="rt5350f-olinuxino-evb"
		;;
	*"RT-AC51U")
		name="rt-ac51u"
		;;
	*"RT-G32 B1")
		name="rt-g32-b1"
		;;
	*"RT-N10+")
		name="rt-n10-plus"
		;;
	*"RT-N13U")
		name="rt-n13u"
		;;
	*"RT-N14U")
		name="rt-n14u"
		;;
	*"RT-N15")
		name="rt-n15"
		;;
	*"RT-N56U")
		name="rt-n56u"
		;;
	*"RUT5XX")
		name="rut5xx"
		;;
	*"SamKnows Whitebox 8")
		name="sk-wb8"
		;;
	*"SAP-G3200U3")
		name="sap-g3200u3"
		;;
	*"SL-R7205"*)
		name="sl-r7205"
		;;
	*"TEW-638APB v2")
		name="tew-638apb-v2"
		;;
	*"TEW-691GR")
		name="tew-691gr"
		;;
	*"TEW-692GR")
		name="tew-692gr"
		;;
	*"TEW-714TRU")
		name="tew-714tru"
		;;
	*"Timecloud")
		name="timecloud"
		;;
	*"TL-WR840N v4")
		name="tl-wr840n-v4"
		;;
	*"TL-WR841N v13")
		name="tl-wr841n-v13"
		;;
	*"TL-MR3020 V3")
		name="tl-mr3020-v3"
		;;
	*"U25AWF-H1")
		name="u25awf-h1"
		;;
	*"UBNT-ERX")
		name="ubnt-erx"
		;;
	*"UBNT-ERX-SFP")
		name="ubnt-erx-sfp"
		;;
	*"UR-326N4G")
		name="ur-326n4g"
		;;
	*"UR-336UN")
		name="ur-336un"
		;;
	*"V11ST-FE")
		name="v11st-fe"
		;;
	*"V22RW-2X2")
		name="v22rw-2x2"
		;;
	*"VoCore (8M)")
		name="vocore-8M"
		;;
	*"VoCore (16M)")
		name="vocore-16M"
		;;
	*"VoCore2")
		name="vocore2"
		;;
	*"VoCore2-Lite")
		name="vocore2lite"
		;;
	*"VR500")
		name="vr500"
		;;
	*"W150M")
		name="w150m"
		;;
	*"W2914NS v2")
		name="w2914nsv2"
		;;
	*"W306R V2.0")
		name="w306r-v20"
		;;
	*"W502U")
		name="w502u"
		;;
	*"WCR-1166DS")
		name="wcr-1166ds"
		;;
	*"WCR-150GN")
		name="wcr-150gn"
		;;
	*"WE1026-5G (16M)")
		name="we1026-5g-16m"
		;;
	*"WF-2881")
		name="wf-2881"
		;;
	*"WHR-1166D")
		name="whr-1166d"
		;;
	*"WHR-300HP2")
		name="whr-300hp2"
		;;
	*"WHR-600D")
		name="whr-600d"
		;;
	*"WHR-G300N")
		name="whr-g300n"
		;;
	*"Widora-NEO")
		name="widora-neo"
		;;
	*"WiTi")
                name="witi"
		;;
	*"WIZARD 8800")
		name="wizard8800"
		;;
	*"WizFi630A")
		name="wizfi630a"
		;;
	*"WL-330N")
		name="wl-330n"
		;;
	*"WL-330N3G")
		name="wl-330n3g"
		;;
	*"WL-341 v3")
		name="wl-341v3"
		;;
	*"WL-351 v1 002")
		name="wl-351"
		;;
	*"WL-WN575A3")
		name="wl-wn575a3"
		;;
	*"WLI-TX4-AG300N")
		name="wli-tx4-ag300n"
		;;
	*"WLR-6000")
		name="wlr-6000"
		;;
	*"WMDR-143N")
		name="wmdr-143n"
		;;
	*"WMR-300")
		name="wmr-300"
		;;
	*"WN3000RPv3")
		name="wn3000rpv3"
		;;
	*"WNCE2001")
		name="wnce2001"
		;;
	*"WNDR3700v5")
		name="wndr3700v5"
		;;
	*"WR512-3GN (4M)")
		name="wr512-3gn-4M"
		;;
	*"WR512-3GN (8M)")
		name="wr512-3gn-8M"
		;;
	*"WR6202")
		name="wr6202"
		;;
	*"WRH-300CR")
		name="wrh-300cr"
		;;
	*"WRTNODE")
		name="wrtnode"
		;;
	*"WRTnode2R")
		name="wrtnode2r"
		;;
	*"WRTnode2P")
		name="wrtnode2p"
		;;
	*"WSR-1166DHP")
		name="wsr-1166"
		;;
	*"WSR-600DHP")
		name="wsr-600"
		;;
	*"WT1520 (4M)")
		name="wt1520-4M"
		;;
	*"WT1520 (8M)")
		name="wt1520-8M"
		;;
	*"WT3020 (4M)")
		name="wt3020-4M"
		;;
	*"WT3020 (8M)")
		name="wt3020-8M"
		;;
	*"WZR-AGL300NH")
		name="wzr-agl300nh"
		;;
	*"X5")
		name="x5"
		;;
	*"X8")
		name="x8"
		;;
	*"Y1")
		name="y1"
		;;
	*"Y1S")
		name="y1s"
		;;
	*"ZBT-APE522II")
		name="zbt-ape522ii"
		;;
	*"ZBT-CPE102")
		name="zbt-cpe102"
		;;
	*"ZBT-WA05")
		name="zbt-wa05"
		;;
	*"ZBT-WE1326")
		name="zbt-we1326"
		;;
	*"ZBT-WE2026")
		name="zbt-we2026"
		;;
	*"ZBT-WE826 (16M)")
		name="zbt-we826-16M"
		;;
	*"ZBT-WE826 (32M)")
		name="zbt-we826-32M"
		;;
	*"ZBT-WG2626")
		name="zbt-wg2626"
		;;
	*"ZBT-WG3526 (16M)")
		name="zbt-wg3526-16M"
		;;
	*"ZBT-WG3526 (32M)")
		name="zbt-wg3526-32M"
		;;
	*"ZBT-WR8305RT")
		name="zbt-wr8305rt"
		;;
	*"ZyXEL Keenetic")
		name="kn"
		;;
	*"ZyXEL Keenetic Omni")
		name="kn_rc"
		;;
	*"ZyXEL Keenetic Omni II")
		name="kn_rf"
		;;
	*"ZyXEL Keenetic Viva")
		name="kng_rc"
		;;
	*"YK1")
		name="youku-yk1"
		;;
	*)
		name="generic"
		;;
	esac

	[ -z "$RAMIPS_BOARD_NAME" ] && RAMIPS_BOARD_NAME="$name"
	[ -z "$RAMIPS_MODEL" ] && RAMIPS_MODEL="$machine"

	[ -e "/tmp/sysinfo/" ] || mkdir -p "/tmp/sysinfo/"

	echo "$RAMIPS_BOARD_NAME" > /tmp/sysinfo/board_name
	echo "$RAMIPS_MODEL" > /tmp/sysinfo/model
}

platform.sh:

#
# Copyright (C) 2010 OpenWrt.org
#

PART_NAME=firmware

platform_check_image() {
	local board=$(board_name)
	local magic="$(get_magic_long "$1")"

	[ "$#" -gt 1 ] && return 1

	case "$board" in
	3g150b|\
	3g300m|\
	a5-v11|\
	ai-br100|\
	air3gii|\
	all0239-3g|\
	all0256n-4M|\
	all0256n-8M|\
	all5002|\
	all5003|\
	ar725w|\
	asl26555-8M|\
	asl26555-16M|\
	awapn2403|\
	awm002-evb-4M|\
	awm002-evb-8M|\
	bc2|\
	broadway|\
	c108|\
	carambola|\
	cf-wr800n|\
	cs-qr10|\
	d105|\
	d240|\
	dap-1350|\
	db-wrt01|\
	dcs-930|\
	dcs-930l-b1|\
	dir-300-b1|\
	dir-300-b7|\
	dir-320-b1|\
	dir-600-b1|\
	dir-615-d|\
	dir-615-h1|\
	dir-620-a1|\
	dir-620-d1|\
	dir-810l|\
	duzun-dm06|\
	dwr-512-b|\
	e1700|\
	esr-9753|\
	ew1200|\
	ex2700|\
	ex3700|\
	f7c027|\
	firewrt|\
	fonera20n|\
	freestation5|\
	gb-pc1|\
	gl-mt300a|\
	gl-mt300n|\
	gl-mt750|\
	gl-mt300n-v2|\
	hc5*61|\
	hc5661a|\
	hg255d|\
	hlk-rm04|\
	hpm|\
	ht-tm02|\
	hw550-3g|\
	ip2202|\
	jhr-n805r|\
	jhr-n825r|\
	jhr-n926r|\
	k2p|\
	kn|\
	kn_rc|\
	kn_rf|\
	kng_rc|\
	linkits7688|\
	linkits7688d|\
	m2m|\
	m3|\
	m4-4M|\
	m4-8M|\
	mac1200rv2|\
	microwrt|\
	miniembplug|\
	miniembwifi|\
	miwifi-mini|\
	miwifi-nano|\
	mlw221|\
	mlwg2|\
	mofi3500-3gn|\
	mpr-a1|\
	mpr-a2|\
	mr-102n|\
	mt7628|\
	mzk-750dhp|\
	mzk-dp150n|\
	mzk-ex300np|\
	mzk-ex750np|\
	mzk-w300nh2|\
	mzk-wdpr|\
	nbg-419n|\
	nbg-419n2|\
	newifi-d1|\
	nixcore-x1-8M|\
	nixcore-x1-16M|\
	nw718|\
	omega2|\
	omega2p|\
	oy-0001|\
	pbr-d1|\
	pbr-m1|\
	psg1208|\
	psg1218a|\
	psg1218b|\
	psr-680w|\
	px-4885-4M|\
	px-4885-8M|\
	rb750gr3|\
	re6500|\
	rp-n53|\
	rt5350f-olinuxino|\
	rt5350f-olinuxino-evb|\
	rt-ac51u|\
	rt-g32-b1|\
	rt-n10-plus|\
	rt-n13u|\
	rt-n14u|\
	rt-n15|\
	rt-n56u|\
	rut5xx|\
	sap-g3200u3|\
	sk-wb8|\
	sl-r7205|\
	tew-638apb-v2|\
	tew-691gr|\
	tew-692gr|\
	tew-714tru|\
	timecloud|\
	tiny-ac|\
	u25awf-h1|\
	ur-326n4g|\
	ur-336un|\
	v22rw-2x2|\
	vocore-8M|\
	vocore-16M|\
	vocore2|\
	vocore2lite|\
	vr500|\
	w150m|\
	w2914nsv2|\
	w306r-v20|\
	w502u|\
	wf-2881|\
	whr-1166d|\
	whr-300hp2|\
	whr-600d|\
	whr-g300n|\
	widora-neo|\
	witi|\
	wizfi630a|\
	wl-330n|\
	wl-330n3g|\
	wl-341v3|\
	wl-351|\
	wl-wn575a3|\
	wli-tx4-ag300n|\
	wlr-6000|\
	wmdr-143n|\
	wmr-300|\
	wn3000rpv3|\
	wnce2001|\
	wndr3700v5|\
	wr512-3gn-4M|\
	wr512-3gn-8M|\
	wr6202|\
	wrh-300cr|\
	wrtnode|\
	wrtnode2r |\
	wrtnode2p |\
	wsr-600|\
	wt1520-4M|\
	wt1520-8M|\
	wt3020-4M|\
	wt3020-8M|\
	wzr-agl300nh|\
	x5|\
	x8|\
	y1|\
	y1s|\
	we1026-5g-16m|\
	zbt-ape522ii|\
	zbt-cpe102|\
	zbt-wa05|\
	zbt-we1326|\
	zbt-we2026|\
	zbt-we826-16M|\
	zbt-we826-32M|\
	zbt-wg2626|\
	zbt-wg3526-16M|\
	zbt-wg3526-32M|\
	zbt-wr8305rt|\
	zte-q7|\
	youku-yk1)
		[ "$magic" != "27051956" ] && {
			echo "Invalid image type."
			return 1
		}
		return 0
		;;
	3g-6200n|\
	3g-6200nl|\
	br-6475nd)
		[ "$magic" != "43535953" ] && {
			echo "Invalid image type."
			return 1
		}
		return 0
		;;

	ar670w)
		[ "$magic" != "6d000080" ] && {
			echo "Invalid image type."
			return 1
		}
		return 0
		;;
	c20|\
	c20i|\
	c50|\
	mr200|\
	tl-wr840n-v4|\
	tl-wr841n-v13|\
	tl-mr3020-v3)
		[ "$magic" != "03000000" ] && {
			echo "Invalid image type."
			return 1
		}
		return 0
		;;
	cy-swr1100|\
	dch-m225|\
	dir-610-a1|\
	dir-645|\
	dir-860l-b1)
		[ "$magic" != "5ea3a417" ] && {
			echo "Invalid image type."
			return 1
		}
		return 0
		;;
	hc5962|\
	mir3g|\
	r6220)
		# these boards use metadata images
		return 0
		;;
	re350-v1)
		[ "$magic" != "01000000" ] && {
			echo "Invalid image type."
			return 1
		}
		return 0
		;;
	ubnt-erx|\
	ubnt-erx-sfp)
		nand_do_platform_check "$board" "$1"
		return $?;
		;;
	wcr-1166ds|\
	wsr-1166)
		[ "$magic" != "48445230" ] && {
			echo "Invalid image type."
			return 1
		}
		return 0
		;;
	esac

	echo "Sysupgrade is not yet supported on $board."
	return 1
}

platform_nand_pre_upgrade() {
	local board=$(board_name)

	case "$board" in
	ubnt-erx|\
	ubnt-erx-sfp)
		platform_upgrade_ubnt_erx "$ARGV"
		;;
	esac
}

platform_do_upgrade() {
	local board=$(board_name)

	case "$board" in
	hc5962|\
	mir3g|\
	r6220|\
	ubnt-erx|\
	ubnt-erx-sfp)
		nand_do_upgrade "$ARGV"
		;;
	*)
		default_do_upgrade "$ARGV"
		;;
	esac
}

disable_watchdog() {
	killall watchdog
	( ps | grep -v 'grep' | grep '/dev/watchdog' ) && {
		echo 'Could not disable watchdog'
		return 1
	}
}

blink_led() {
	. /etc/diag.sh; set_state upgrade
}

append sysupgrade_pre_upgrade disable_watchdog
append sysupgrade_pre_upgrade blink_led

And part of mt76x8.mk:

define Device/tl-mr3020-v3
  DTS := TL-MR3020V3
  IMAGE_SIZE := 7808k
  DEVICE_TITLE := TP-Link TL-MR3020 v3
  TPLINK_FLASHLAYOUT := 8Mmtk
  TPLINK_HWID := 0x08410013
  TPLINK_HWREV := 0x268
  TPLINK_HWREVADD := 0x13
  TPLINK_HVERSION := 3
  KERNEL := $(KERNEL_DTB)
  KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-v2-header -e
  IMAGES += tftp-recovery.bin
  IMAGE/factory.bin := tplink-v2-image -e
  IMAGE/tftp-recovery.bin := pad-extra 128k | $$(IMAGE/factory.bin)
  IMAGE/sysupgrade.bin := tplink-v2-image -s -e | append-metadata | \
	check-size $$$$(IMAGE_SIZE)
endef
TARGET_DEVICES+=tl-mr3020-v3

From what I see, it is configured correctly.
It's most likely some syntax error.
Please don't create a dtsi just for this one device.
dtsi is used to reuse same code in similar devices.

Put all of the stuff from that dtsi into dts of the device.

Also, since you are reusing whole device definition in mt76x8.mk
Just call 841n-v13 profile instead of defining everything again.
Although I am pretty sure that TPLINK_HWID, TPLINK_HWREV, and TPLINK_HWREVADD are different for MR3020-v3

Ok, thank you.

Do you know values of TPLINK_HWID, TPLINK_HWREV, and TPLINK_HWREVADD or know where to search it for?

They are in GPL sources.
Usually in reduced_data_model.xml

I compared reduced_data_model for 3020v3 and 840v5.

840v5:

<X_TP_ProductID t=u r=R d=0x08400005 nw=1 h=1 /> - from /targets/reduced_data_model_plaintext_WR840NV5.xml
<X_TP_ProductID t=u r=R d=0x89741003 nw=1 h=1 /> - from /sysfiles/config/cn/common/reduced_data_model.xml

Product Id are different, but in mt76x8.mk there is value TPLINK_HWID := 0x08400005.

For 3020v3:
<X_TP_ProductID t=u r=R d=0x89741003 nw=1 h=1 /> - only in /sysfiles/config/en/common/reduced_data_model.xml

with 0x89741003 value - the same as 840v5. I think the right value should be TPLINK_HWID := 0x03020003.
I can't find other variables:

  TPLINK_HWREV
  TPLINK_HWREVADD 
  TPLINK_HVERSION

I think TPLINK_HWREVADD should be set to 0x3 - as router 3020 version V3 - like:

  TPLINK_HWREVADD := 0x5 - in tl-wr840n-v5
  TPLINK_HWREVADD := 0x4 - in tl-wr840n-v4
  TPLINK_HWREVADD := 0x13 - in tl-wr841n-v13

I do not know how to identify TPLINK_HWREV (SoftwareRevision ? ) and TPLINK_HVERSION (PlatformVersion or DevModelVersion ?). Could you describe this variables?

Its TP-Link,pretty hard to guess why they use stuff when they use it.
It could be that stock firmware on MR3020 v3 does not check product ID at all if you were able to flash OpenWRT with 840 v5 ID

The problem with wrong "/tmp/sysinfo/board_name" was in file ramips.sh:

      *"TL-MR3020 V3")
		name="tl-mr3020-v3"
		;;

Should be (change V3 -> v3):

        *"TL-MR3020 v3")
		name="tl-mr3020-v3"
		;;

Do you know where could be problem with strange files in /bin/ ?? - see attachment
Lede - bin

I think they are connected with errors that I can reed from uart inside device:

root@LED/bin/ash: root@LEDE:/#: not found

root@LEDE:/# 

root@LEDE:/# 

root@LEDE:/# 

root@LEDE:/# root@LEDE:/# > 

/bin/ash: syntax error: unexpected newline

root@LEDE:/# 

root@LEDE:/# 

root@LEDE:/# 

root@LEDE:/# /bin/ash: syntax error: unexpected newline

E:/# 

root@LEDE:/# root@LEDE:/# > 

/bin/ash: syntax error: /bin/ash: /bin/ash:: Permission denied

root@LEDE:/# 

root@LEDE:/# 

root@LEDE:/# 

root@LEDE:/# root@LEDE:/#

I switched device to full debug, but there is no errors connected to errors above.

Hm,classic syntax error in ramips.sh
I was searching for the string with find in browser and it does not care about case.

Those are pretty weird errors,like the symlink for something is missing.

Can you try rebasing your branch onto master and flashing that

The problem with errors like:

root@LEDE:/# root@LEDE:/# > 

/bin/ash: syntax error: unexpected newline

root@LEDE:/# 

was caused by wrong signal to "tx" pin on router board. So it was false alarm.

1 Like

Great,so false alarm

I have done a Github fork on this with my own TL-MR3020 port, see here:

@meyergru, you should not include TL-WR84XN.dtsi in your dts file. You must include generic platform mt7628an.dtsi skeleton.

Corrected.

Hi there,
I was build firmware for MR3020 v3, and when I trying install it via web - I have got message: "Error code: 4503 The uploaded file was not accepted." That do I do wrong?

I think, you can't upgrade it via web. You should start tftp server - 192.168.0.225 and name the file as: tp_recovery.bin - it should be factory file. Then:

  • disconnect power supply
  • press and hold wps/reset button
  • connect power supply and wait until one of diode start blinking
  • release wps/reset button
  • wait until update is installed.

Before doing this, you should have backup of working router soft.