ramips: add support for TP-Link RE650 v1
authorGeorgi Vlaev <georgi.vlaev@gmail.com>
Wed, 17 Apr 2019 18:17:45 +0000 (21:17 +0300)
committerDavid Bauer <mail@david-bauer.net>
Wed, 17 Jul 2019 21:14:23 +0000 (23:14 +0200)
TP-Link RE650 v1 is a dual-band AC2600 range extender,
based on MediaTek MT7621A and MT7615E. According to the
wikidevi entry for RE650 this device is identical with
TP-Link RE500 as hardware. This patch supports only RE650.

Hardware specification:

- SoC 880 MHz - MediaTek MT7621AT
- 128 MB of DDR3 RAM
- 16 MB - Winbond 25Q128FVSG
- 4T4R 2.4 GHz - MediaTek MT7615E
- 4T4R 5 GHz - MediaTek MT7615E
- 1x 1 Gbps Ethernet - MT7621AT integrated
- 7x LEDs (Power, 2G, 5G, WPS(x2), Lan(x2))
- 4x buttons (Reset, Power, WPS, LED)
- UART header (J1) - 2:GND, 3:RX, 4:TX
  Serial console @ 57600,8n1

Flash instructions:

Upload
openwrt-ramips-mt7621-tplink_re650-v1-squashfs-factory.bin
from the RE650 web interface.

TFTP recovery to stock firmware:

Unfortunately, I can't find an easy way to recover the RE
without opening the device and using modified binaries. The
TFTP upload will only work if selected from u-boot, which
means you have to open the device and attach to the serial
console. The TFTP update procedure does *not* accept the
published vendor firmware binaries. However, it allows to
flash kernel + rootfs binaries, and this works if you have
a backup of the original contents of the flash. It's probably
possible to create special image out of the vendor binaries
and use that as recovery image.

Signed-off-by: Georgi Vlaev <georgi.vlaev@gmail.com>
[re-added variables for kernel header]
Signed-off-by: David Bauer <mail@david-bauer.net>
src/tplink-safeloader.c

index 78d80ac89ece4e81538807b2132c04981b518272..773e7ed26cda8aa3abf1c691e0e7ce8160f73616 100644 (file)
@@ -1366,6 +1366,43 @@ static struct device_info boards[] = {
                .last_sysupgrade_partition = "file-system"
        },
 
+       /** Firmware layout for the RE650 */
+       {
+               .id = "RE650-V1",
+               .vendor = "",
+               .support_list =
+                       "SupportList:\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:00000000}\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:55530000}\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:45550000}\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:4A500000}\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:43410000}\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:41550000}\r\n"
+                       "{product_name:RE650,product_ver:1.0.0,special_id:41530000}\r\n",
+               .support_trail = '\x00',
+               .soft_ver = NULL,
+
+               /* We're using a dynamic kernel/rootfs split here */
+               .partitions = {
+                       {"fs-uboot", 0x00000, 0x20000},
+                       {"firmware", 0x20000, 0xde0000},
+                       {"partition-table", 0xe00000, 0x02000},
+                       {"default-mac", 0xe10000, 0x00020},
+                       {"pin", 0xe10100, 0x00020},
+                       {"product-info", 0xe11100, 0x01000},
+                       {"soft-version", 0xe20000, 0x01000},
+                       {"support-list", 0xe21000, 0x01000},
+                       {"profile", 0xe22000, 0x08000},
+                       {"user-config", 0xe30000, 0x10000},
+                       {"default-config", 0xe40000, 0x10000},
+                       {"radio", 0xff0000, 0x10000},
+                       {NULL, 0, 0}
+               },
+
+               .first_sysupgrade_partition = "os-image",
+               .last_sysupgrade_partition = "file-system"
+       },
+
        {}
 };