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 <e323w@proton.me>
This commit is contained in:
		 Dmitry Sokolov
					Dmitry Sokolov
				
			
				
					committed by
					
						 Hauke Mehrtens
						Hauke Mehrtens
					
				
			
			
				
	
			
			
			 Hauke Mehrtens
						Hauke Mehrtens
					
				
			
						parent
						
							3690c4a092
						
					
				
				
					commit
					39e4f03fd3
				
			| @@ -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 = &gmac1; | ||||
| 	}; | ||||
|  | ||||
| 	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>; | ||||
| }; | ||||
|  | ||||
| &gmac1 { | ||||
| @@ -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>; | ||||
| 	}; | ||||
| }; | ||||
|   | ||||
							
								
								
									
										138
									
								
								target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-common.dtsi
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								target/linux/ramips/dts/mt7621_xiaomi_mi-router-4a-common.dtsi
									
									
									
									
									
										Normal file
									
								
							| @@ -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>; | ||||
| 	}; | ||||
| }; | ||||
| @@ -0,0 +1,80 @@ | ||||
| // 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>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &partitions { | ||||
| 	partition@180000 { | ||||
| 		// size changed against to the common dtsi | ||||
| 		reg = <0x180000 0xe70000>; | ||||
| 	}; | ||||
|  | ||||
| 	partition@ff0000 { | ||||
| 		label = "Config"; | ||||
| 		reg = <0xff0000 0x10000>; | ||||
| 		read-only; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &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"; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| @@ -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 := 14784k | ||||
|   DEVICE_VENDOR := Xiaomi | ||||
|   DEVICE_MODEL := Mi Router 4A | ||||
|   DEVICE_VARIANT := Gigabit Edition v2 | ||||
|   DEVICE_PACKAGES := kmod-mt7603 kmod-mt7615e kmod-mt7663-firmware-ap | ||||
| endef | ||||
| TARGET_DEVICES += xiaomi_mi-router-4a-gigabit-v2 | ||||
|  | ||||
| define Device/xiaomi_mi-router-ac2100 | ||||
|   $(Device/xiaomi_nand_separate) | ||||
|   DEVICE_MODEL := Mi Router AC2100 | ||||
|   | ||||
| @@ -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" | ||||
| 	;; | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user