Add Support for Archer C50 (W) v6 BR

Could you add support for this router Archer C50 (W) V6 BR? It is exactly the same router as the TP-Link Archer C50 v6 (CA/EU/RU), but the partition layout is different. I compiled an image myself and it's working.

mt7628an_tplink_archer-c50-w-v6.dts

// SPDX-License-Identifier: GPL-2.0-or-later OR MIT

#include <dt-bindings/leds/common.h>

#include "mt7628an.dtsi"

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

/ {
	compatible = "tplink,archer-c50-w-v6", "mediatek,mt7628an-soc";
	model = "TP-Link Archer C50 (W) v6 (BR)";

	aliases {
		led-boot = &led_power;
		led-failsafe = &led_power;
		led-running = &led_power;
		led-upgrade = &led_power;
	};

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

	aliases {
		label-mac-device = &ethernet;
	};

	keys {
		compatible = "gpio-keys";

		reset {
			label = "reset";
			gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_RESTART>;
		};

		rfkill {
			label = "rfkill";
			gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_RFKILL>;
		};
	};

	leds {
		compatible = "gpio-leds";

		led_power: power {
			function = LED_FUNCTION_POWER;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
		};

		wlan2 {
			label = "green:wlan2g";
			gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
		};

		wlan5 {
			label = "green:wlan5g";
			gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
		};

		lan {
			function = LED_FUNCTION_LAN;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
		};

		wan {
			function = LED_FUNCTION_WAN;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
		};

		wan_orange {
			function = LED_FUNCTION_WAN;
			color = <LED_COLOR_ID_ORANGE>;
			gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
		};
	};
};

&spi0 {
	status = "okay";

	flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <10000000>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

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

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

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

			partition@7d0000 {
				label = "rom";
				reg = <0x7d0000 0x10000>;
				read-only;

				nvmem-layout {
					compatible = "fixed-layout";
					#address-cells = <1>;
					#size-cells = <1>;

					macaddr_rom_f100: macaddr@f100 {
						compatible = "mac-base";
						reg = <0xf100 0x6>;
						#nvmem-cell-cells = <1>;
					};
				};
			};

			partition@7e0000 {
				label = "romfile";
				reg = <0x7e0000 0x10000>;
			};

			partition@7f0000 {
				label = "radio";
				reg = <0x7f0000 0x10000>;
				read-only;

				nvmem-layout {
					compatible = "fixed-layout";
					#address-cells = <1>;
					#size-cells = <1>;

					eeprom_radio_0: eeprom@0 {
						reg = <0x0 0x400>;
					};

					eeprom_radio_8000: eeprom@8000 {
						reg = <0x8000 0x200>;
					};
				};
			};
		};
	};
};

&ehci {
	status = "disabled";
};

&ohci {
	status = "disabled";
};

&state_default {
	gpio {
		groups = "i2c", "p0led_an", "p1led_an", "p2led_an",
				   "p3led_an", "p4led_an", "wdt", "wled_an";
		function = "gpio";
	};
};

&pcie {
	status = "okay";
};

&pcie0 {
	wifi@0,0 {
		reg = <0x0000 0 0 0 0>;
		ieee80211-freq-limit = <5000000 6000000>;
		nvmem-cells = <&eeprom_radio_8000>, <&macaddr_rom_f100 (-1)>;
		nvmem-cell-names = "eeprom", "mac-address";
	};
};

&eeprom_radio_8000 {
	/* V2 has different eeprom size '0x4da8' for MT7613 */
	reg = <0x8000 0x4da8>;
};

&wmac {
	status = "okay";

	nvmem-cells = <&eeprom_radio_0>, <&macaddr_rom_f100 0>;
	nvmem-cell-names = "eeprom", "mac-address";
};

&ethernet {
	nvmem-cells = <&macaddr_rom_f100 0>;
	nvmem-cell-names = "mac-address";
};

&esw {
	mediatek,portmap = <0x3e>;
};

If anyone is interested, you can get my code here: https://github.com/FabianoTSS/openwrt — it's on the openwrt-24.10 branch.

1 Like

I am trying to build an image factory, I am getting the following log below.
The error occurs when trying to install the firmware by the web. I have already fixed the TPLINK_HWID, but now it's giving an MD5 error. I have no clue how to solve it.

[ rsl_sys_verifyFirmware ] 3780:  Image md5 checksum is not correct, len is 5c0338!

My image codes is:

define Device/tplink_archer-c50-w-v6
  $(Device/tplink-v2)
  IMAGE_SIZE := 7808k
  DEVICE_MODEL := Archer C50 (W)
  DEVICE_VARIANT := v6 (BR)
  TPLINK_FLASHLAYOUT := 8MSUmtk
  TPLINK_HWID := 0x600500c
  TPLINK_HWREVADD := 0x6
  DEVICE_PACKAGES := kmod-mt7615e kmod-mt7663-firmware-ap
  IMAGES := sysupgrade.bin
endef
TARGET_DEVICES += tplink_archer-c50-w-v6

The header of the original firmware looks like this:

The Header of the openwrt image looks like:

I solved this problem it was because I needed a factory image and I was using a sysupgrade image. But now the problem changed:

[ rdp_verifyFirmware ] 379:  perror:4503
[ cwmp_parseAcsInfo ] 1189:  empty ACS URL! return!!!
malloc 800104
[ cwmp_parseAcsInfo ] 1189:  empty ACS URL! return!!!
[ rsl_sys_verifyFirmware ] 3793:  Image is not correct(firmwareLength=0x770000)!

[ rdp_verifyFirmware ] 379:  perror:4503
iptables: No chain/target/match by that name.