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>
50 lines
1.4 KiB
Makefile
50 lines
1.4 KiB
Makefile
include $(TOPDIR)/rules.mk
|
|
include $(INCLUDE_DIR)/image.mk
|
|
|
|
define Target/Description
|
|
Build firmware images for EcoNet MIPS based boards.
|
|
endef
|
|
|
|
# tclinux-trx is the default format used in the SDK
|
|
define Build/tclinux-trx
|
|
./tclinux-trx.sh --kernel $@ --rootfs $(IMAGE_ROOTFS) \
|
|
--version $(VERSION_DIST)-$(REVISION) --endian $(TRX_ENDIAN) \
|
|
$(if $(TRX_MODEL),--model $(TRX_MODEL)) > $@.new
|
|
mv $@.new $@
|
|
endef
|
|
|
|
# If TCSUPPORT_FREE_BOOTBASE is enabled, bootloader will decompress the kernel
|
|
# at 0x80002000 instead of 0x80020000.
|
|
#
|
|
# You can tell it by looking at the bootloader version string
|
|
# " at %s version %s free bootbase".
|
|
define Build/tclinux-free-bootbase-jump
|
|
@[ "$(KERNEL_LOADADDR)" = 0x80020000 ] || { \
|
|
$(call ERROR_MESSAGE,WARNING: KERNEL_LOADADDR changed); \
|
|
rm -f $@; \
|
|
}
|
|
printf '\010\000\200\000' > $@.new
|
|
dd if=/dev/zero bs=122876 count=1 >> $@.new
|
|
cat $@ >> $@.new
|
|
mv $@.new $@
|
|
endef
|
|
|
|
# tclinux bootloader requires LZMA, BUT only provides 7.5MB of space
|
|
# to decompress into. So we use vmlinuz and decompress twice.
|
|
define Device/Default
|
|
DEVICE_DTS_DIR := ../dts
|
|
BLOCKSIZE := 128k
|
|
PAGESIZE := 2048
|
|
# decompression buffer limit, the size of LZMA-compressed data is read from
|
|
# the trx header
|
|
KERNEL_SIZE := 7480k
|
|
KERNEL_NAME := vmlinuz.bin
|
|
KERNEL_LOADADDR := 0x80020000
|
|
KERNEL := kernel-bin | append-dtb
|
|
UBINIZE_OPTS := -E 5
|
|
endef
|
|
|
|
include $(SUBTARGET).mk
|
|
|
|
$(eval $(call BuildImage))
|