Mercusys MR1800X i MR70X wgranie breed + OpenWrt
Witam
Oba modele mercusys to najtansze urzadzenia z wifi6 na ktore mozna wrzucic OpenWrt lub Padavan.
MT7621DA (zintegrowane 128MB DDR3)
3xLAN 1xWan , wszystko 1Gb
SPI 16MB (Winbond W25Q128)
MT7915 radio AX DBDC (rownolegla praca 2x2 2.4Ghz i 5ghz)
2 diody led
przycisk reset GPIO#8
dioda LED pomaranczowa GPIO#3
dioda LED zielona GPIO#4
diody sa polaczone tak ze nie mogą świecić jednoczesnie:
_-|>|-_
| |
GPIO4--|_-|<|-_|-- GPIO3
konsola szeregowa pod J1 (115.2k)
1.TX
2.RX
3.GND
4. 3.3V
(nie)standardowa partycja flash oraz TPlink safe loader nie pozwala na instalacje Padavan firmware czy OpenWrt
dev: size erasesize name offset
mtd0: 00040000 00010000 "uboot" 00000000
mtd1: 00400000 00010000 "uImage" 00040000
mtd2: 00bb0000 00010000 "rootfs" 00440000
mtd3: 00010000 00010000 "ART" 00ff0000
Praktycznie jest jeszcze jedna partycja ktora nie jest zdefiniowana a zawiera adres mac i ustawienia softu OEM
00fa0000-00ff0000 czyli końcówka "rootfs"
Pierwszym pomysłem jest oczywiście wykonanie kopii partycji i wysłanie ich w bezpieczne miejsce przez scp ktory jest dostepny pod konsola szeregową
szczególnie ważna jest partycja mtd3 ktora bedzie potrzebna pozniej
drugim krokiem jest wgranie breed .Co zmieni rozkład partycji SPI na klasyczny dla ralinka . Okazuje ze pasuje breed_SPI_ZM.03.bin
https://drive.google.com/file/d/1QC6zG- ... naDpb/view znaleziony na zagranicznym forum.
Po wgraniu breed
mtd -r write breed_SPI_ZM.03.bin uboot
Do breed wchodzimy przytrzymując przycisk reset podczas włączania routera. Możemy wgrać factory fw który będzie kopią partycji mtd3 oraz ustawienia adresów MAC w sekcji breed .Bo oczywiście adresy nie były trzymane w mtd3 .
ustawiamy RF1 Wlan MAC (adres +2)
LAN MAC (adres z etykiety)
oraz WAN MAC (adres +1)
budowa Openwrt zaczyna sie od przygotowania dts
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "mt7621.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
/ {
compatible = "mercusys,mr1800x", "mediatek,mt7621-soc";
model = "Mercusys MR1800X";
aliases {
led-boot = &led_sys_orange;
led-failsafe = &led_sys_orange;
led-running = &led_sys_green;
led-upgrade = &led_sys_orange;
label-mac-device = &gmac0;
};
chosen {
stdout-path = "serial0:115200n8";
bootargs = "console=ttyS0,115200n8";
};
leds {
compatible = "gpio-leds";
led_sys_orange: sys_orange {
label = "orange:sys";
gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
default-state = "off";
};
led_sys_green: sys_green {
label = "green:sys";
gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
default-state = "off";
};
};
keys {
compatible = "gpio-keys";
reset {
label = "reset";
gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
linux,code = <KEY_RESTART>;
};
};
};
&spi0 {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <50000000>;
m25p,fast-read;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x0 0x30000>;
read-only;
};
partition@30000 {
label = "u-boot-env";
reg = <0x30000 0x10000>;
read-only;
};
factory: partition@40000 {
label = "factory";
reg = <0x40000 0x10000>;
read-only;
};
partition@50000 {
compatible = "denx,uimage";
label = "firmware";
reg = <0x50000 0xfb0000>;
};
};
};
};
&pcie {
status = "okay";
};
&pcie1 {
wifi@0,0 {
compatible = "mediatek,mt76";
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&factory 0x0000>;
mediatek,disable-radar-background;
};
};
&gmac0 {
nvmem-cells = <&macaddr_factory_e000>;
nvmem-cell-names = "mac-address";
};
&switch0 {
ports {
port@1 {
status = "okay";
label = "lan1";
};
port@2 {
status = "okay";
label = "lan2";
};
port@3 {
status = "okay";
label = "lan3";
};
};
};
&gmac1 {
status = "okay";
label = "wan";
phy-handle = <ðphy0>;
nvmem-cells = <&macaddr_factory_e006>;
nvmem-cell-names = "mac-address";
};
&mdio {
ethphy0: ethernet-phy@0 {
reg = <0>;
};
};
&state_default {
gpio {
groups = "i2c", "wdt";
function = "gpio";
};
};
&factory {
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_factory_e000: macaddr@e000 {
reg = <0xe000 0x6>;
};
macaddr_factory_e006: macaddr@e006 {
reg = <0xe006 0x6>;
};
};
oraz dodatnie wpisu w image/mt7621.mk
define Device/mercusys_mr1800x
$(Device/dsa-migration)
IMAGE_SIZE := 16064k
UIMAGE_NAME := MR1800X
DEVICE_VENDOR := Mercusys
DEVICE_MODEL := MR1800X
DEVICE_PACKAGES := kmod-mt7915e
endef
TARGET_DEVICES += mercusys_mr1800x
Zbudowany obraz sysupgrade flashujemy z poziomu breed i cieszymy się jak dobre są sterowniki AX mt76 w porównaniu z MT7612 czy MT7603

ps.
Oczywiscie mozna by zbudowac obraz kompatybilny z safeloaderem ale to zostawie dla innych
edit : dodanie info o partycji z ustawieniami OEM
edit2 : Zbudowałem i przetestowałem padavan (github.com/hanwckf/rt-n56u) .Ale ta opcja przyda się dla kogoś kto potrzebuje maksymalnej wydajnosci np z internetem 300Mbit i szybszym . W tym firmware jest wsparcie dla sprzętowego NAT i Wireless offload .
link do konfiguracji umożliwiającej zbudowanie padavan z pełną obsługą routera
https://drive.google.com/file/d/11VfK0J8jfyb_FkJC_xLGaGmODohGRdtU/view?usp=sharingedit3: dodane "mux phy0/4 to gmac1" oraz "disable unsupported background radar detection"
edit4: zmieniona wersja breed z xunlei-timeplug na breed_SPI_ZM.03.bin gdzie Reset jest pod GPIO8 zgodnie z mr1800x.