Device zbt-we1226 not supported by this device. Supported devices zbt-we2806, image check failed

Hello all, i have got a new device zbt-we2806. openwrt seems to have no pre-built image for it as currently support for the router is not there. I have been recommended to use zbt-we1226 firmware image on it. I found out that both of these routers use the same soc (mt7628an). I also have a device tree for ZBT-WE2806 and built the openwrt-18 firmware for it as an attempt to add support for the device. So for testing purposes, i have tried both zbt-we1226 prebuilt image as well as the image i built with ZBT-WE2806 device tree but while flashing i am getting the following error and i attached the screenshot for it. Please have a look and let me know. Even force upgrade and forced sysupgrade don't work for the same. I get the error seen in the screenshot.

The same SOC does not imply that the firmware would be compatible, flash partitioning (and -size), RAM size, GPIO/ LED assignments, hardware IDs and much more might be different. There are no generic firmware images for embedded devices like routers, every device needs its own bespoke DTS/ image, so you will have to start from scratch and port it over.

2 Likes

@slh i have ported the firmware on several boards before. Its not a new thing for me. I think you didnt get my question. Like i said i have the original Device tree(ZBT-WE2806.dts) for the hardware(ZBT-WE2806). I have build the firmware for it too successfully. When i try to flash i get the error as seen in the image i uploaded. What could be the reason for that error or what can you suggest i might be misleading? I am trying ZBT-WE1226 firmware because its device tree and firmware partitions closely matches with 2806, and with this i mean almost all of the nodes in device trees of both of these are a match except led which can be fixed easily.

Without seeing the actual source code you're working from, it's impossible to say what goes wrong. But my first thing to check would be in the DTS file itself - specifically, check what values you assign to the compatible field. An example:

// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;
  
#include "mt7628an.dtsi"
  
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
   
/ {
           compatible = "ravpower,rp-wd009", "mediatek,mt7628an-soc";
           model = "RAVPower RP-WD009";
  [...]

It's possible you copie the WE1226 DTS, and while everything else matches, the first value of the compatible field (in the above example it's the "ravpower,rp-wd009" bit) is set to the WE1226 instead of hte WE2806.

@fonix232

/dts-v1/;

#include "mt7628an.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

/ {
	compatible = "zbtlink,zbt-we2806", "mediatek,mt7628an-soc";
	model = "ZBT-WE2806";

	chosen {
		bootargs = "console=ttyS0,115200";
	};

Hmm, that's interesting. Does your build refer to the WE1226 in any other places? A link to the full source would be nice, especially seeing all the changes needed to build the WE2806 image (e.g. U-boot, kernel).

Build does not refer to WE1226 in any other places. I have confirmed it by grepping. As far as i know you need the correct device tree for the device to create a firmware for unsupported device. Let's kick out the we1226 from this equation. I have the correct device tree for the new router, all i did was add it to the existing device trees and then in the path target/linux/ramips/image/mt76x8.mk, add the following code-

  DTS := ZBT-WE2806
  IMAGE_SIZE := $(ralink_default_fw_size_8M)
  DEVICE_TITLE := ZBTlink ZBT-WE2806
endef
TARGET_DEVICES += zbtlink_zbt-we2806

Making sure that the build is compiling the correct device tree and putting the same dtb in the final firmware image. u-boot and kernel are out of this scope as they are common for all other devices. The only thing that is different among different boards is the device tree which we have. The other changes i made were in 'target/linux/ramips/base-files/etc/board.d/02_network', 'target/linux/ramips/base-files/etc/board.d/01-leds', 'target/linux/ramips/base-files/lib/upgrade/platform.sh', 'staging_dir/target-mipsel_24kc_musl/root-ramips/etc/diag.sh'. And i know this for sure that flashing any image through luci gui can is possible and succeeds if the router soc and firmware image are based on same soc. No doubt it will brick the router in some cases but at least it flashes without any errors unlike the error i am getting in the image above.

Oh damn, my mistake. It looks like you flashed a build that was referring to the WE1226, and now trying to sysupgrade with a build that is only compatible with the WE2806.

Have you tried TFTP recovery, if that's available? Or, worst case scenario, you can make an interim build that defines both the WE2806 and WE1226 as compatible.

Hello,

I have the same router zbt-we2806, I wonder if it is possible for me to share the firmware that I modify and compile for this router?

Thank you...

FYI - There's more progress on building OpenWrt for WE2806 in this topic:

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.