123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503 |
- From 5dd566ff99d17b2c7e459001b4750bc911ee0d4c Mon Sep 17 00:00:00 2001
- From: Dmitry Sokolov <[email protected]>
- Date: Mon, 16 Jan 2023 02:52:27 +0500
- Subject: [PATCH] ramips: mt7621: add support for Xiaomi Mi Router 4A Gigabit
- v2
- Device is the same as Xiaomi Mi Router 4A Gigabit, except of:
- - 5G WiFi is MT7663
- - addresses of leds, wifi and eth ports are slightly changed
- Specs:
- SoC: MT7621
- CPU: 2 x 880 MHz
- ROM: 16 MB
- RAM: 128 MB
- WLAN: MT7603, MT7663
- MAC addresses:
- WAN **** factory 0xe006 (label)
- LAN *:f7 factory 0xe000
- 2.4 GHz *:f8 factory 0x0000+0x4 (mtd-eeprom+0x4)
- 5 GHz *:f9 factory 0x8000+0x4 (mtd-eeprom+0x4)
- Installation:
- Factory firmware is based on a custom OpenWrt 17.x.
- Installation is the same as for Xiaomi Mi Router 4A Gigabit.
- Probably the easiest way to install is to use the script from
- this repository: https://github.com/acecilia/OpenWRTInvasion/pull/155
- In a more advanced case, you can do everything yourself:
- - gain access to the device through one of the exploits described
- in the link above
- - upload sysupgrade image to /tmp
- - overwrite stock firmware:
- # mtd -e OS1 -r write /tmp/sysupgrade.bin OS1
- Recovery:
- Recovery procedure is the same as for Xiaomi Mi Router 4A Gigabit.
- Possible options can be found here:
- https://openwrt.org/inbox/toh/xiaomi/xiaomi_mi_router_4a_gigabit_edition
- One of the ways is to use another router with OpenWrt:
- - connect both routers by their LAN ports
- - download stock firmware from [1]
- - place it inside /tmp/test.bin on the main router
- - configure PXE/TFTP on the main router
- - power off 4Av2, hold Reset button, power on
- - as soon as image download via TFTP starts, Reset can be released
- - blinking blue wan LED will indicate the end of the flashing process,
- now router can be rebooted
- [1] http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/r4av2/miwifi_r4av2_firmware_release_2.30.28.bin
- Signed-off-by: Dmitry Sokolov <[email protected]>
- ---
- .../dts/mt7621_xiaomi_mi-router-4a-3g-v2.dtsi | 138 +-----------------
- .../mt7621_xiaomi_mi-router-4a-common.dtsi | 138 ++++++++++++++++++
- .../mt7621_xiaomi_mi-router-4a-gigabit-v2.dts | 80 ++++++++++
- target/linux/ramips/image/mt7621.mk | 11 ++
- .../mt7621/base-files/etc/board.d/01_leds | 3 +
- .../mt7621/base-files/etc/board.d/02_network | 3 +-
- 6 files changed, 241 insertions(+), 132 deletions(-)
- create mode 100644 target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-common.dtsi
- create mode 100644 target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-gigabit-v2.dts
- diff --git a/target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-3g-v2.dtsi b/target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-3g-v2.dtsi
- index a0ee79ae23ce4..d05872337be26 100644
- --- a/target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-3g-v2.dtsi
- +++ b/target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-3g-v2.dtsi
- @@ -1,23 +1,12 @@
- // 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>
- +#include "mt7621_xiaomi_mi-router-4a-common.dtsi"
-
- / {
- aliases {
- - led-boot = &led_status_yellow;
- - led-failsafe = &led_status_yellow;
- - led-running = &led_status_blue;
- - led-upgrade = &led_status_yellow;
- label-mac-device = &wan;
- };
-
- - chosen {
- - bootargs = "console=ttyS0,115200n8";
- - };
- -
- leds {
- compatible = "gpio-leds";
-
- @@ -31,108 +20,16 @@
- gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
- };
- };
- -
- - keys {
- - compatible = "gpio-keys";
- -
- - reset {
- - label = "reset";
- - gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
- - 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;
- - };
- -
- - partition@40000 {
- - label = "Bdata";
- - reg = <0x40000 0x10000>;
- - read-only;
- - };
- -
- - factory: partition@50000 {
- - label = "factory";
- - reg = <0x50000 0x10000>;
- - read-only;
- - };
- -
- - partition@60000 {
- - label = "crash";
- - reg = <0x60000 0x10000>;
- - read-only;
- - };
- -
- - partition@70000 {
- - label = "cfg_bak";
- - reg = <0x70000 0x10000>;
- - read-only;
- - };
- -
- - partition@80000 {
- - label = "overlay";
- - reg = <0x80000 0x100000>;
- - read-only;
- - };
- -
- - firmware: partition@180000 {
- - compatible = "denx,uimage";
- - label = "firmware";
- - reg = <0x180000 0xe80000>;
- - };
- - };
- - };
- +&wifi0 {
- + mediatek,mtd-eeprom = <&factory 0x8000>;
- + ieee80211-freq-limit = <5000000 6000000>;
- };
-
- -&pcie {
- - status = "okay";
- -};
- -
- -&pcie0 {
- - wifi@0,0 {
- - compatible = "pci14c3,7662";
- - reg = <0x0000 0 0 0 0>;
- - mediatek,mtd-eeprom = <&factory 0x8000>;
- - ieee80211-freq-limit = <5000000 6000000>;
- - };
- -};
- -
- -&pcie1 {
- - wifi@0,0 {
- - compatible = "pci14c3,7603";
- - reg = <0x0000 0 0 0 0>;
- - mediatek,mtd-eeprom = <&factory 0x0000>;
- - ieee80211-freq-limit = <2400000 2500000>;
- - };
- -};
- -
- -&gmac0 {
- - nvmem-cells = <&macaddr_factory_e000>;
- - nvmem-cell-names = "mac-address";
- +&wifi1 {
- + mediatek,mtd-eeprom = <&factory 0x0000>;
- + ieee80211-freq-limit = <2400000 2500000>;
- };
-
- &switch0 {
- @@ -163,24 +60,3 @@
- };
- };
- };
- -
- -&state_default {
- - gpio {
- - groups = "jtag", "uart2", "uart3", "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>;
- - };
- -};
- diff --git a/target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-common.dtsi b/target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-common.dtsi
- new file mode 100644
- index 0000000000000..efc32733e9bc1
- --- /dev/null
- +++ b/target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-common.dtsi
- @@ -0,0 +1,138 @@
- +// 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>
- +
- +/ {
- + aliases {
- + led-boot = &led_status_yellow;
- + led-failsafe = &led_status_yellow;
- + led-running = &led_status_blue;
- + led-upgrade = &led_status_yellow;
- + };
- +
- + chosen {
- + bootargs = "console=ttyS0,115200n8";
- + };
- +
- + keys {
- + compatible = "gpio-keys";
- +
- + reset {
- + label = "reset";
- + gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
- + linux,code = <KEY_RESTART>;
- + };
- + };
- +};
- +
- +&spi0 {
- + status = "okay";
- +
- + flash@0 {
- + compatible = "jedec,spi-nor";
- + reg = <0>;
- + spi-max-frequency = <50000000>;
- + m25p,fast-read;
- +
- + partitions: 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;
- + };
- +
- + partition@40000 {
- + label = "Bdata";
- + reg = <0x40000 0x10000>;
- + read-only;
- + };
- +
- + factory: partition@50000 {
- + label = "factory";
- + reg = <0x50000 0x10000>;
- + read-only;
- + };
- +
- + partition@60000 {
- + label = "crash";
- + reg = <0x60000 0x10000>;
- + read-only;
- + };
- +
- + partition@70000 {
- + label = "cfg_bak";
- + reg = <0x70000 0x10000>;
- + read-only;
- + };
- +
- + partition@80000 {
- + label = "overlay";
- + reg = <0x80000 0x100000>;
- + read-only;
- + };
- +
- + firmware: partition@180000 {
- + compatible = "denx,uimage";
- + label = "firmware";
- + reg = <0x180000 0xe80000>;
- + };
- + };
- + };
- +};
- +
- +&pcie {
- + status = "okay";
- +};
- +
- +&pcie0 {
- + wifi0: wifi@0,0 {
- + compatible = "mediatek,mt76";
- + reg = <0x0000 0 0 0 0>;
- + };
- +};
- +
- +&pcie1 {
- + wifi1: wifi@0,0 {
- + compatible = "mediatek,mt76";
- + reg = <0x0000 0 0 0 0>;
- + };
- +};
- +
- +&gmac0 {
- + nvmem-cells = <&macaddr_factory_e000>;
- + nvmem-cell-names = "mac-address";
- +};
- +
- +&state_default {
- + gpio {
- + groups = "jtag", "uart2", "uart3", "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>;
- + };
- +};
- diff --git a/target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-gigabit-v2.dts b/target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-gigabit-v2.dts
- new file mode 100644
- index 0000000000000..67ff6ea11e161
- --- /dev/null
- +++ b/target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-gigabit-v2.dts
- @@ -0,0 +1,67 @@
- +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
- +
- +#include "mt7621_xiaomi_mi-router-4a-common.dtsi"
- +
- +/ {
- + compatible = "xiaomi,mi-router-4a-gigabit-v2", "mediatek,mt7621-soc";
- + model = "Xiaomi Mi Router 4A Gigabit Edition v2";
- +
- + aliases {
- + label-mac-device = &wan;
- + };
- +
- + leds {
- + compatible = "gpio-leds";
- +
- + led_status_blue: status_blue {
- + label = "blue:status";
- + gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
- + };
- +
- + led_status_yellow: status_yellow {
- + label = "yellow:status";
- + gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
- + };
- +
- + wan_blue {
- + label = "blue:wan";
- + gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
- + };
- +
- + wan_yellow {
- + label = "yellow:wan";
- + gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
- + };
- + };
- +};
- +
- +&wifi0 {
- + mediatek,mtd-eeprom = <&factory 0x0000>;
- + ieee80211-freq-limit = <2400000 2500000>;
- +};
- +
- +&wifi1 {
- + mediatek,mtd-eeprom = <&factory 0x8000>;
- + ieee80211-freq-limit = <5000000 6000000>;
- +};
- +
- +&switch0 {
- + ports {
- + port@1 {
- + status = "okay";
- + label = "lan1";
- + };
- +
- + port@2 {
- + status = "okay";
- + label = "lan2";
- + };
- +
- + wan: port@3 {
- + status = "okay";
- + label = "wan";
- + nvmem-cells = <&macaddr_factory_e006>;
- + nvmem-cell-names = "mac-address";
- + };
- + };
- +};
- diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
- index 9d01399c5cc3c..6871243a5f6c6 100644
- --- a/target/linux/ramips/image/mt7621.mk
- +++ b/target/linux/ramips/image/mt7621.mk
- @@ -2427,6 +2427,17 @@ define Device/xiaomi_mi-router-4a-gigabit
- endef
- TARGET_DEVICES += xiaomi_mi-router-4a-gigabit
-
- +define Device/xiaomi_mi-router-4a-gigabit-v2
- + $(Device/dsa-migration)
- + $(Device/uimage-lzma-loader)
- + IMAGE_SIZE := 16064k
- + DEVICE_VENDOR := Xiaomi
- + DEVICE_MODEL := Mi Router 4A
- + DEVICE_VARIANT := Gigabit Edition v2
- + DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e kmod-mt7663-firmware-ap wpad-mini -wpad-basic-wolfssl -coremark -htop -bash -openssh-sftp-server
- +endef
- +TARGET_DEVICES += xiaomi_mi-router-4a-gigabit-v2
- +
- define Device/xiaomi_mi-router-ac2100
- $(Device/xiaomi_nand_separate)
- DEVICE_MODEL := Mi Router AC2100
- diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
- index 91f3fe6e93c13..597d7302ac88e 100644
- --- a/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
- +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds
- @@ -179,6 +179,9 @@ tplink,re650-v2)
- tplink,tl-wpa8631p-v3)
- ucidef_set_led_netdev "lan" "LAN" "green:lan" "br-lan"
- ;;
- +xiaomi,mi-router-4a-gigabit-v2)
- + ucidef_set_led_netdev "wan" "wan" "blue:wan" "wan" "link"
- + ;;
- xiaomi,mi-router-ac2100)
- ucidef_set_led_netdev "wan-blue" "WAN (blue)" "blue:wan" "wan"
- ;;
- diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
- index ddbbf9891d63a..67f58b10b2715 100644
- --- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
- +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network
- @@ -72,7 +72,8 @@ ramips_setup_interfaces()
- xiaomi,mi-router-3g|\
- xiaomi,mi-router-3g-v2|\
- xiaomi,mi-router-4|\
- - xiaomi,mi-router-4a-gigabit)
- + xiaomi,mi-router-4a-gigabit|\
- + xiaomi,mi-router-4a-gigabit-v2)
- ucidef_set_interfaces_lan_wan "lan1 lan2" "wan"
- ;;
- bolt,arion)
|