1
1
openwrt/target/linux
David Yang 284668f151 econet: en751221: add support for Huawei HG2821T-U
This patch adds support for Huawei HG2821T-U, EPON ONU and home router,
often comes with ISP service.

Specifications
==============
* SoC: Econet EN7526GT
* RAM: 512MiB DDR3L (MT41K256M16TW-107)
* Flash: 256MiB SPI NAND (TC58CVG1S3HRAIG)
* WiFi 2.4GHz: MT7592N
* WiFi 5GHz: MT7612EN
* Ethernet: builtin switch
* LED: Power, Internet, WiFi, USB
* Buttons: Reset
* UART: Serial console (115200 8n1)
* USB: 1 x USB2
* Other: Phone jack, XPON fiber port

!!! BACKUP YOUR ROM !!!
=======================
Please always have your FULL flash image backup before flashing
anything. The vendor firmware varies a lot depending on your ISP and
location. You will have a hard time finding the right regional firmware
if you don't have a backup.

Notes
=====
* Due to the target `econet` being incomplete, WiFi, DSA switch, and
many other features are not supported yet. Do not flash the image unless
you know the consquences or `econet` is declared stable.
* This device, and apparently many other devices of this platform, use
a dual-image layout. OpenWRT (with `econet` target) only uses slot A.
Slot B is not used by OpenWRT, and is applicable for dual-booting to
vendor firmware.
* If you do not use vendor firmware anymore, you can erase and reuse
anything after `configuration_b`, which gives you ~110 MiB free space.
Again, backup your flash first.

Installation
============
Within shell
------------
Note that acquiring the shell access to the vendor firmware can be a bit
tricky depending on the firmware variation. If you can't play with the
vendor firmware, boot to OpenWrt using debricking method below.

0. (Optional) Back up your flash, and / or move the vendor firmware to
   slot B
1. Build and then locate the `kernel.bin` and `rootfs.bin` image files
2. Upload `kernel.bin` and `rootfs.bin` to the device (via HTTP or USB
   stick), then type:
   ```
   mtd write -f -e KernelA kernel.bin KernelA
   mtd erase RootfsA
   mtd write -f -r -e AppA rootfs.bin AppA
   ```

From bootloader
---------------
1. Build and then locate the `kernel.bin` and `rootfs.bin` image files
2. Switch device on and press a key within 3 seconds
3. Upload `kernel.bin` via TFTP as described below
4. Once the transfer has completed successfully, bootloader will give
   you the file length in "Total %d (0x%X) bytes received", then type
   `flash 200000 80020000 <file length hex>`
5. Upload `rootfs.bin` then flash with
   `flash 600000 80020000 <file length hex>`
6. Restart the device to boot into OpenWRT

> [!IMPORTANT]
> Do not try `httpd` in the bootloader. It writes to the wrong address
  and will corrupt the flash.

Debricking
==========
1. Build and then locate the `initramfs-kernel.bin` image files
2. Switch device on and press a key within 3 seconds
3. Connect to device via ethernet, set the IP address to `192.168.1.X`,
   then upload the image via TFTP
   `tftp 192.168.1.1 -m binary -v -c put initramfs-kernel.bin`

   The file name can be anything except `tcboot.bin` or `tclinux.bin`,
   they will corrupt the flash.
4. Type `jump 80020000` to boot the kernel from memory

Dual boot
=========
Use `en75_chboot` tool to switch between vendor firmware and OpenWrt. If
you are soft-locked, you can also switch the flag in the bootloader:
1. Switch device on and press a key within 3 seconds
2. Select the kernel that you wish to use:
   - `memwl 80020000 30ffffff` for `KernelA` (OpenWrt)
   - `memwl 80020000 31ffffff` for `KernelB` (Factory)
3. Select the rootfs, which should be the same as the kernel:
   - `memwl 80020004 30ffffff` for `RootfsA` (OpenWrt)
   - `memwl 80020004 31ffffff` for `RootfsB` (Factory)
3. Commit the data to flash: `flash 1e0000 80020000 8`
4. Restart the device to boot into the selected OS

MAC addresses
=============
`//configuration_a/factory.conf` contains MAC addresses, along with
other pre-configured settings. OpenWrt uses `brmac`, `internetmac`,
`APMAC`, and `APMAC_5G`, while `tr069mac`, `voipmac`, `priprotocolmac`,
and `PONMac` are not used for now.

Signed-off-by: David Yang <mmyangfl@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/23131
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2026-05-14 20:52:09 +02:00
..
airoha airoha: w1700k: drop RTL8261N phy interrupt 2026-05-14 19:30:56 +02:00
apm821xx kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
armsr kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
at91 kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
ath79 ath79: tp-link: tl-wr902ac-v1: move to tiny 2026-05-11 14:46:17 +02:00
bcm27xx kernel: bump 6.12 to 6.12.86 2026-05-09 11:01:27 +02:00
bcm47xx kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
bcm53xx bcm53xx: add ramdisk to FEATURES 2026-04-29 09:56:37 +02:00
bcm4908 kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
bmips treewide: use _scoped for loop 2026-04-16 21:17:43 +02:00
d1 d1: drop support for 6.12 2026-04-21 16:13:37 +02:00
econet econet: en751221: add support for Huawei HG2821T-U 2026-05-14 20:52:09 +02:00
gemini gemini/kernel: drop v6.12 and default to v6.18 2026-04-17 18:01:06 +02:00
generic kernel: modules: netdevices: rtl8365mb: fix mode mask calculation 2026-05-14 18:57:28 +02:00
imx imx: cortexa9: ventana, fix profiles names in profiles.json 2026-04-23 01:13:36 +02:00
ipq40xx ipq40xx: add support for Cisco Meraki Z3C 2026-05-13 11:33:17 +02:00
ipq806x kernel: bump 6.12 to 6.12.86 2026-05-09 11:01:27 +02:00
ixp4xx ixp4xx/kernel: drop v6.12 and default to v6.18 2026-04-16 08:35:38 +02:00
kirkwood kirkwood: switch to 6.18 kernel 2026-04-27 09:39:21 +02:00
lantiq lantiq: vr200: switch to nvmem eeprom 2026-05-09 14:08:12 +02:00
layerscape generic: 6.12: backport PCS standalone feature 2026-05-13 00:19:29 +02:00
loongarch64 kernel: sync target configs after JUMP_LABEL changes 2026-05-11 10:33:46 +02:00
malta malta: drop 6.12 support 2026-05-07 18:15:54 +02:00
mediatek mediatek: fix patch to enable an8855 eFuse 2026-05-11 15:45:59 +02:00
microchipsw kernel: sync target configs after JUMP_LABEL changes 2026-05-11 10:33:46 +02:00
mpc85xx mpc85xx: unify wrapper address of simple image devices 2026-05-05 14:09:38 +02:00
mvebu mvebu: disable WRT1900AC v1 builds by default 2026-05-12 21:01:06 +02:00
mxs mxs: drop support for 6.12 2026-04-16 14:55:36 +02:00
octeon octeon: enable 6.18 testing kernel 2026-04-26 10:03:37 +02:00
omap kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
pistachio pistachio: drop support for 6.12 2026-04-18 12:02:48 +02:00
qoriq kernel: sync target configs after JUMP_LABEL changes 2026-05-11 10:33:46 +02:00
qualcommax ipq50xx: add label-mac-device to Linksys MX5500 2026-04-29 10:07:09 +02:00
qualcommbe kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
ramips ramips: mt76x8: add support for MovingComm C120EV 2026-05-14 16:39:35 +02:00
realtek realtek: rtl930x: psx8: specify RTL8224 reset GPIO 2026-05-13 11:34:34 +02:00
rockchip rockchip: add support for FriendlyELEC NanoPi M5 2026-05-14 17:52:56 +02:00
sifiveu sifiveu: drop support for 6.12 2026-04-19 13:21:21 +02:00
siflower kernel: sync target configs after JUMP_LABEL changes 2026-05-11 10:33:46 +02:00
starfive kernel: sync target configs after JUMP_LABEL changes 2026-05-11 10:33:46 +02:00
stm32 kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
sunxi sunxi: add T113-S3 support 2026-05-09 11:19:22 +02:00
tegra kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
uml kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
x86 x86/base-files: add support for CloudGenix ION 2000 2026-05-11 01:11:25 +02:00
zynq kernel: 6.12: move CONFIG_CRYPTO_LIB_SHA1 to generic 2026-04-06 01:38:41 +02:00
Makefile linux: fix missing default packages in profiles.json 2024-11-17 19:29:06 +01:00