ramips: add support for SIM SIMAX1800T and Haier HAR-20S2U1

SIM AX18T and Haier HAR-20S2U1 Wi-Fi6 AX1800 routers are designed based
on Tenbay WR1800K. They have the same hardware circuits and u-boot.
SIM AX18T has three carrier customized models: SIMAX1800M (China Mobile),
SIMAX1800T (China Telecom) and SIMAX1800U (China Unicom). All of these
models run the same firmware.

Specifications:
 SOC:      MT7621 + MT7905 + MT7975
 ROM:      128 MiB
 RAM:      256 MiB
 LED:      status *3 R/G/B
 Button:   reset *1 + wps/mesh *1
 Ethernet:      lan *3 + wan *1 (10/100/1000Mbps)
 TTL Baudrate:  115200
 TFTP Server:   192.168.1.254
 TFTP IP:       192.168.1.28 or 192.168.1.160 (when envs is broken)

MAC Address:
 use        address               source
 label      30:xx:xx:xx:xx:62     wan
 lan        30:xx:xx:xx:xx:65     factory.0x8004
 wan        30:xx:xx:xx:xx:62     factory.0x8004 -3
 wlan2g     30:xx:xx:xx:xx:64     factory.0x0004
 wlan5g     32:xx:xx:xx:xx:64     factory.0x0004 set 7th bit

TFTP Installation (initramfs image only & recommend):
1. Set local tftp server IP: 192.168.1.254 and NetMask: 255.255.255.0
2. Rename initramfs-kernel.bin to "factory.bin" and put it in the root
   directory of the tftp server. (tftpd64 is a good choice for Windows)
3. Start the TFTP server, plug in the power supply, and wait for the
   system to boot.
4. Backup "firmware" partition and rename it to "firmware.bin", we need
   it to back to stock firmware.
5. Use "fw_printenv" command to list envs.
   If "firmware_select=2" is observed then set u-boot enviroment:
   /# fw_setenv firmware_select 1
6. Apply sysupgrade.bin in OpenWrt LuCI.

Web UI Installation:
1. Apply update by uploading initramfs-factory.bin to the web UI.
2. Use "fw_printenv" command to list envs.
   If "firmware_select=2" is observed then set u-boot enviroment:
   /# fw_setenv firmware_select 1
3. Apply squashfs-sysupgrade.bin in OpenWrt LuCI.

Recovery to stock firmware:
a. Upload "firmware.bin" to OpenWrt /tmp, then execute:
   /# mtd -r write /tmp/firmware.bin firmware
b. We can also write factory image "UploadBrush-bin.img" to firmware
   partition to recovery. Upload image file to /tmp, then execute:
   /# mtd erase firmware
   /# mtd -r write /tmp/UploadBrush-bin.img firmware

How to extract stock firmware image:
  Download stock firmware, then use openssl:
  openssl aes-256-cbc -d -salt -in [Downloaded_Firmware] \
  -out "firmware.tar.tgz" -k QiLunSmartWL

Signed-off-by: Chen Minqiang <ptpt52@gmail.com>
Signed-off-by: Shiji Yang <yangshiji66@qq.com>
This commit is contained in:
Shiji Yang 2022-09-16 01:10:52 +08:00 committed by Hauke Mehrtens
parent 898b4104b3
commit f7f9203854
8 changed files with 259 additions and 4 deletions

View File

@ -56,6 +56,11 @@ linksys,e7350|\
netgear,wax202)
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000"
;;
haier,har-20s2u1|\
sim,simax1800t)
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000"
ubootenv_add_uci_sys_config "/dev/mtd1" "0x40000" "0x40000" "0x20000"
;;
hootoo,ht-tm05|\
ravpower,rp-wd03)
idx="$(find_mtd_index u-boot-env)"

View File

@ -0,0 +1,186 @@
// 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 <dt-bindings/leds/common.h>
/ {
aliases {
label-mac-device = &gmac1;
led-boot = &led_status_red;
led-failsafe = &led_status_blue;
led-running = &led_status_green;
led-upgrade = &led_status_blue;
};
chosen {
bootargs-override = "console=ttyS0,115200";
};
keys {
compatible = "gpio-keys";
reset {
label = "reset";
gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
};
wps {
label = "wps";
gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
linux,code = <KEY_WPS_BUTTON>;
};
};
leds {
compatible = "gpio-leds";
led_status_blue: led-0 {
label = "blue:status";
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_STATUS;
gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
};
led_status_green: led-1 {
label = "green:status";
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_STATUS;
gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
};
led_status_red: led-2 {
label = "red:status";
color = <LED_COLOR_ID_RED>;
function = LED_FUNCTION_STATUS;
gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
};
};
};
&gmac0 {
nvmem-cells = <&macaddr_factory_8004>;
nvmem-cell-names = "mac-address";
};
&gmac1 {
status = "okay";
label = "wan";
phy-handle = <&ethphy4>;
nvmem-cells = <&macaddr_factory_8004>;
nvmem-cell-names = "mac-address";
mac-address-increment = <(-3)>;
};
&mdio {
ethphy4: ethernet-phy@4 {
reg = <4>;
};
};
&nand {
status = "okay";
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x0000000 0x0080000>;
read-only;
};
partition@80000 {
label = "u-boot-env";
reg = <0x0080000 0x0080000>;
};
factory: partition@100000 {
label = "factory";
reg = <0x0100000 0x0080000>;
read-only;
compatible = "nvmem-cells";
#address-cells = <1>;
#size-cells = <1>;
macaddr_factory_8004: macaddr@8004 {
reg = <0x8004 0x6>;
};
};
partition@180000 {
label = "firmware";
reg = <0x0180000 0x7a80000>;
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "kernel";
reg = <0x0000000 0x0400000>;
};
partition@400000 {
label = "ubi";
reg = <0x0400000 0x7680000>;
};
};
/* last 128KiB *32 is reserved for bad blocks management */
};
};
&pcie {
status = "okay";
};
&pcie1 {
wifi@0,0 {
compatible = "mediatek,mt76";
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&factory 0x0>;
mediatek,disable-radar-background;
};
};
&pcie2 {
status = "disabled";
};
&state_default {
gpio {
groups = "i2c", "uart3", "wdt";
function = "gpio";
};
};
&switch0 {
ports {
port@1 {
status = "okay";
label = "lan3";
};
port@2 {
status = "okay";
label = "lan2";
};
port@3 {
status = "okay";
label = "lan1";
};
};
};
&xhci {
status = "disabled";
};

View File

@ -0,0 +1,8 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "mt7621_haier-sim_wr1800k.dtsi"
/ {
compatible = "haier,har-20s2u1", "mediatek,mt7621-soc";
model = "Haier HAR-20S2U1";
};

View File

@ -0,0 +1,8 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "mt7621_haier-sim_wr1800k.dtsi"
/ {
compatible = "sim,simax1800t", "mediatek,mt7621-soc";
model = "SIM SIMAX1800T";
};

View File

@ -37,6 +37,18 @@ define Build/h3c-blank-header
mv $@.blank $@
endef
define Build/haier-sim_wr1800k-factory
-[ -e $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE) ] && \
mkdir -p "$(1).tmp" && \
$(CP) $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE) "$(1).tmp/UploadBrush-bin.img" && \
$(MKHASH) md5 "$(1).tmp/UploadBrush-bin.img" | head -c32 > "$(1).tmp/check_MD5.txt" && \
$(TAR) -czf $(1).tmp.tgz -C "$(1).tmp" UploadBrush-bin.img check_MD5.txt && \
$(STAGING_DIR_HOST)/bin/openssl aes-256-cbc -e -salt -in $(1).tmp.tgz -out "$(1)" -k QiLunSmartWL && \
printf %32s "$(DEVICE_MODEL)" >> "$(1)" && \
rm -rf "$(1).tmp" $(1).tmp.tgz && \
$(CP) $(1) $(BIN_DIR)/
endef
define Build/iodata-factory
$(eval fw_size=$(word 1,$(1)))
$(eval fw_type=$(word 2,$(1)))
@ -869,6 +881,29 @@ define Device/h3c_tx1806
endef
TARGET_DEVICES += h3c_tx1806
define Device/haier-sim_wr1800k
$(Device/dsa-migration)
BLOCKSIZE := 128k
PAGESIZE := 2048
KERNEL_SIZE := 4096k
IMAGE_SIZE := 125440k
UBINIZE_OPTS := -E 5
KERNEL_LOADADDR := 0x82000000
KERNEL := kernel-bin | relocate-kernel 0x80001000 | lzma | \
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
KERNEL_INITRAMFS := $$(KERNEL) | \
haier-sim_wr1800k-factory $(KDIR)/tmp/$$(KERNEL_INITRAMFS_PREFIX)-factory.bin
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
DEVICE_PACKAGES := kmod-mt7915e uboot-envtools
endef
define Device/haier_har-20s2u1
$(Device/haier-sim_wr1800k)
DEVICE_VENDOR := Haier
DEVICE_MODEL := HAR-20S2U1
endef
TARGET_DEVICES += haier_har-20s2u1
define Device/hilink_hlk-7621a-evb
$(Device/dsa-migration)
$(Device/uimage-lzma-loader)
@ -1729,6 +1764,13 @@ define Device/sercomm_na502s
endef
TARGET_DEVICES += sercomm_na502s
define Device/sim_simax1800t
$(Device/haier-sim_wr1800k)
DEVICE_VENDOR := SIM
DEVICE_MODEL := SIMAX1800T
endef
TARGET_DEVICES += sim_simax1800t
define Device/snr_snr-cpe-me2-lite
$(Device/dsa-migration)
$(Device/uimage-lzma-loader)

View File

@ -35,8 +35,10 @@ ramips_setup_interfaces()
h3c,tx1800-plus|\
h3c,tx1801-plus|\
h3c,tx1806|\
haier,har-20s2u1|\
hiwifi,hc5962|\
netgear,wax202|\
sim,simax1800t|\
xiaomi,mi-router-3-pro|\
xiaomi,mi-router-ac2100|\
xiaomi,mi-router-cr6606|\

View File

@ -45,6 +45,12 @@ case "$board" in
[ "$PHYNBR" = "0" ] && echo -n ${addr:0:9}'1'${addr:10:7} > /sys${DEVPATH}/macaddress
[ "$PHYNBR" = "1" ] && echo -n ${addr:0:9}'7'${addr:10:7} > /sys${DEVPATH}/macaddress
;;
haier,har-20s2u1|\
jcg,y2|\
sim,simax1800t)
[ "$PHYNBR" = "1" ] && \
macaddr_setbit_la "$(mtd_get_mac_binary factory 0x4)" > /sys${DEVPATH}/macaddress
;;
hiwifi,hc5962)
label_mac=$(mtd_get_mac_ascii bdinfo "Vfac_mac ")
[ "$PHYNBR" = "0" ] && [ -n "$label_mac" ] && \
@ -69,10 +75,6 @@ case "$board" in
[ "$PHYNBR" = "1" ] && \
macaddr_setbit_la "$(mtd_get_mac_binary Factory 0x4)" > /sys${DEVPATH}/macaddress
;;
jcg,y2)
[ "$PHYNBR" = "1" ] && \
macaddr_setbit_la "$(mtd_get_mac_binary factory 0x4)" > /sys${DEVPATH}/macaddress
;;
linksys,e5600|\
linksys,ea6350-v4|\
linksys,ea7300-v1|\

View File

@ -65,6 +65,7 @@ platform_do_upgrade() {
h3c,tx1800-plus|\
h3c,tx1801-plus|\
h3c,tx1806|\
haier,har-20s2u1|\
hiwifi,hc5962|\
iptime,a3004t|\
iptime,ax2004m|\
@ -95,6 +96,7 @@ platform_do_upgrade() {
raisecom,msg1500-x-00|\
sercomm,na502|\
sercomm,na502s|\
sim,simax1800t|\
xiaomi,mi-router-3g|\
xiaomi,mi-router-3-pro|\
xiaomi,mi-router-4|\