TP-WR902AC-V3 Flash upgrade to 16M

Hi,

Anyone tried (and succeeded) in upgrading the Flash from 8M to 16M on TP-Link TL-WR902AC v3?

Been trying for days following all the suggestions on the forum. The flash is recognized by original uboot (mtd0 dump), and it boots the 8M openwrt image fine. Didn't succeed in booting a custom image compiled from source or image-builder. It's either in boot loop or stuck at Starting Kernel...

Tried also compiling new -boot from source. It boots uboot and recognizes the flash (and labels it 16M). 8M openwrt image also boots fine. Also managed to restore original firmware with this new u-boot.

Does u-boot care that the firmware partition size changed in openwrt image?

Any help appreciated.

On the other hand, was working on Xiaomi AC1200 RC04 as well, switched flash by mistake, the TP-Link booted fine with the Xiaomi flash.

Thanks.
d*

You need to build a custom image. Soldering UART might provide more details regarding to bootloop.

Hi kukulo,

Built multiple custom images with modified DTS / DTSI files. It's either stuck on Kernel Starting or LZMA error 1 and reboots.

Since i have been trying compiling both, u-boot and custom openwrt images, not sure which one is causing the issue. When compiling a new uboot image for the 16M flash, do i need to "prepare it" for the resized firmware partition? If u-boot is the (first) problem, no point in chasing the custom owrt image till u-boot is sorted.

My router has no ART partition.Original partitions:


partitions {
                        compatible = "fixed-partitions";
                        #address-cells = <1>;
                        #size-cells = <1>;

                        partition@0 {
                                label = "boot";
                                reg = <0x0 0x20000>;
                                read-only;
                        };

                        partition@20000 {
                                compatible = "tplink,firmware";
                                label = "firmware";
                                reg = <0x20000 0x7a0000>;
                        };

                        partition@7c0000 {
                                label = "config";
                                reg = <0x7c0000 0x10000>;
                                read-only;
                        };

                        factory: partition@7d0000 {
                                label = "factory";
                                reg = <0x7d0000 0x30000>;
                                read-only;
                        };
                };

One of the non-working configurations, expanded firmware partition, moved config and factory:

partitions {
    compatible = "fixed-partitions";
    #address-cells = <1>;
    #size-cells = <1>;

    partition@0 {
        label = "boot";
        reg = <0x0 0x20000>;
        read-only;
    };

    partition@20000 {
        compatible = "tplink,firmware";
        label = "firmware";
        reg = <0x20000 0x3C3000>; /* Updated size: 15536 KB */
    };

    partition@7C3000 {
        label = "config";
        reg = <0x7C3000 0x10000>;
        read-only;
    };

    factory: partition@7D3000 {
        label = "factory";
        reg = <0x7D3000 0x30000>;
        read-only;
    };
};

One more, also not working:

partitions {
    compatible = "fixed-partitions";
    #address-cells = <1>;
    #size-cells = <1>;

    partition@0 {
        label = "boot";
        reg = <0x0 0x20000>;
        read-only;
    };

    partition@20000 {
        compatible = "tplink,firmware";
        label = "firmware";
        reg = <0x20000 0x5C0000>; 
    };

    partition@7C0000 {
        label = "config";
        reg = <0x7C0000 0x10000>;
        read-only;
    };

    factory: partition@7D0000 {
        label = "factory";
        reg = <0x7D0000 0x30000>;
        read-only;
    };
};

Thanks.

Increasing flash size without build my own firmware could be useful.

Thanks frollic,

Tried that as well. Most solutions on the forum.

Could not find pepe2k modded u-boot though, since his website is offline. As per his github, it is for V1, but would be worth to try.

Thanks.
d*

The full 16MB flash is from 0x000000 to 0xFFFFFF.

0x0 0x20000 boot
0x20000 0x7a0000 firmware
0x7c0000 0x10000 config
0x7d0000 0x30000 factory

new layout:

0x0 0x20000 boot
0x20000  0xfd0000 firmware
0xff0000 0x10000 config

I am not sure whether we need factory, just look on the original DTS file from openwrt for the 8MB version.
Usually we are making the firmware partition bigger and shift the latter partition of the same amount of bytes that we extended.

Haven't tried without the factory partition before, but have been shifting them after extending firmware keeping their size the same as before.

Will try your suggestion once i get home.

Thanks,
d*

factory partition is used in the 8M image.

target/linux/ramips/dts/mt7628an_tplink_tl-wr902ac-v3.dts:


#include "mt7628an_tplink_8m.dtsi"

/ {
	compatible = "tplink,tl-wr902ac-v3", "mediatek,mt7628an-soc";
	model = "TP-Link TL-WR902AC v3";

	aliases {
		led-boot = &led_power;
		led-failsafe = &led_power;
		led-running = &led_power;
		led-upgrade = &led_power;
	};

	keys {
		compatible = "gpio-keys";

		reset {
			label = "reset";
			gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_RESTART>;
		};

		sw1 {
			label = "sw1";
			gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
			linux,code = <BTN_0>;
		};

		sw2 {
			label = "sw2";
			gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
			linux,code = <BTN_1>;
		};

		wps {
			label = "wps";
			gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_WPS_BUTTON>;
		};
	};

	leds {
		compatible = "gpio-leds";

		lan {
			label = "green:lan";
			gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
		};

		led_power: power {
			label = "green:power";
			gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
		};

		usb {
			label = "green:usb";
			gpios = <&gpio 43 GPIO_ACTIVE_LOW>;
			trigger-sources = <&ohci_port1>, <&ehci_port1>;
			linux,default-trigger = "usbport";
		};

		wan {
			label = "green:wan";
			gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
		};

		wlan {
			label = "green:wlan";
			gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
		};

		wps {
			label = "green:wps";
			gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
		};
	};
};

&state_default {
	gpio {
		groups = "i2c", "i2s", "p0led_an", "p2led_an", "p4led_an", "uart1", "wdt", "wled_an";
		function = "gpio";
	};
};

&pcie {
	status = "okay";
};

&pcie0 {
	mt76@0,0 {
		reg = <0x0000 0 0 0 0>;
		mediatek,mtd-eeprom = <&factory 0x28000>;
		ieee80211-freq-limit = <5000000 6000000>;
		nvmem-cells = <&macaddr_factory_f100>;
		nvmem-cell-names = "mac-address";
		mac-address-increment = <(-1)>;
	};
};

target/linux/ramips/dts/mt7628an_tplink_8m.dtsi:

#include "mt7628an.dtsi"

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

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

	aliases {
		label-mac-device = &ethernet;
	};
};

&spi0 {
	status = "okay";

	flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <10000000>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "boot";
				reg = <0x0 0x20000>;
				read-only;
			};

			partition@20000 {
				compatible = "tplink,firmware";
				label = "firmware";
				reg = <0x20000 0x7a0000>;
			};

			partition@7c0000 {
				label = "config";
				reg = <0x7c0000 0x10000>;
				read-only;
			};

			factory: partition@7d0000 {
				label = "factory";
				reg = <0x7d0000 0x30000>;
				read-only;
			};
		};
	};
};

&wmac {
	status = "okay";

	mediatek,mtd-eeprom = <&factory 0x20000>;

	nvmem-cells = <&macaddr_factory_f100>;
	nvmem-cell-names = "mac-address";
};

&ethernet {
	nvmem-cells = <&macaddr_factory_f100>;
	nvmem-cell-names = "mac-address";
};

&factory {
	compatible = "nvmem-cells";
	#address-cells = <1>;
	#size-cells = <1>;

	macaddr_factory_f100: macaddr@f100 {
		reg = <0xf100 0x6>;
	};
};

target/linux/ramips/dts/mt7628an.dtsi:

/dts-v1/;

/ {
	#address-cells = <1>;
	#size-cells = <1>;
	compatible = "mediatek,mt7628an-soc";

	aliases {
		serial0 = &uartlite;
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		cpu@0 {
			compatible = "mips,mips24KEc";
			reg = <0>;
		};
	};

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

	cpuintc: cpuintc {
		#address-cells = <0>;
		#interrupt-cells = <1>;
		interrupt-controller;
		compatible = "mti,cpu-interrupt-controller";
	};

	palmbus: palmbus@10000000 {
		compatible = "palmbus";
		reg = <0x10000000 0x200000>;
		ranges = <0x0 0x10000000 0x1FFFFF>;

		#address-cells = <1>;
		#size-cells = <1>;

		sysc: syscon@0 {
			compatible = "ralink,mt7628-sysc", "syscon";
			reg = <0x0 0x100>;
			#clock-cells = <1>;
			#reset-cells = <1>;
		};

		watchdog: watchdog@100 {
			compatible = "mediatek,mt7621-wdt";
			reg = <0x100 0x100>;
			mediatek,sysctl = <&sysc>;
		};

		intc: intc@200 {
			compatible = "ralink,mt7628an-intc", "ralink,rt2880-intc";
			reg = <0x200 0x100>;

			resets = <&sysc 9>;
			reset-names = "intc";

			interrupt-controller;
			#interrupt-cells = <1>;

			interrupt-parent = <&cpuintc>;
			interrupts = <2>;

			ralink,intc-registers = <0x9c 0xa0
						 0x6c 0xa4
						 0x80 0x78>;
		};

		memc: memc@300 {
			compatible = "ralink,mt7620a-memc", "ralink,rt3050-memc";
			reg = <0x300 0x100>;

			resets = <&sysc 10>;
			reset-names = "mc";

			interrupt-parent = <&intc>;
			interrupts = <3>;
		};

		gpio: gpio@600 {
			compatible = "mediatek,mt7621-gpio";
			reg = <0x600 0x100>;

			interrupt-parent = <&intc>;
			interrupts = <6>;

			#interrupt-cells = <2>;
			interrupt-controller;

			gpio-controller;
			#gpio-cells = <2>;
		};

		i2c: i2c@900 {
			compatible = "mediatek,mt7621-i2c";
			reg = <0x900 0x100>;

			clocks = <&sysc 7>;
			clock-names = "i2c";

			resets = <&sysc 16>;
			reset-names = "i2c";

			#address-cells = <1>;
			#size-cells = <0>;

			status = "disabled";

			pinctrl-names = "default";
			pinctrl-0 = <&i2c_pins>;
		};

		i2s: i2s@a00 {
			compatible = "mediatek,mt7628-i2s";
			reg = <0xa00 0x100>;

			clocks = <&sysc 8>;

			resets = <&sysc 17>;
			reset-names = "i2s";

			interrupt-parent = <&intc>;
			interrupts = <10>;

			txdma-req = <2>;
			rxdma-req = <3>;

			dmas = <&gdma 4>,
				<&gdma 6>;
			dma-names = "tx", "rx";

			status = "disabled";
		};

		spi0: spi@b00 {
			compatible = "ralink,mt7621-spi";
			reg = <0xb00 0x100>;

			clocks = <&sysc 9>;
			clock-names = "spi";

			resets = <&sysc 18>;
			reset-names = "spi";

			#address-cells = <1>;
			#size-cells = <0>;

			pinctrl-names = "default";
			pinctrl-0 = <&spi_pins>;

			status = "disabled";
		};

		uartlite: uart0@c00 {
			compatible = "ns16550a";
			reg = <0xc00 0x100>;

			reg-shift = <2>;
			reg-io-width = <4>;
			no-loopback-test;

			clocks = <&sysc 11>;

			resets = <&sysc 12>;

			interrupt-parent = <&intc>;
			interrupts = <20>;

			pinctrl-names = "default";
			pinctrl-0 = <&uart0_pins>;
		};

		uart1: uart1@d00 {
			compatible = "ns16550a";
			reg = <0xd00 0x100>;

			reg-shift = <2>;
			reg-io-width = <4>;
			no-loopback-test;

			clocks = <&sysc 12>;

			resets = <&sysc 19>;

			interrupt-parent = <&intc>;
			interrupts = <21>;

			pinctrl-names = "default";
			pinctrl-0 = <&uart1_pins>;

			status = "disabled";
		};

		uart2: uart2@e00 {
			compatible = "ns16550a";
			reg = <0xe00 0x100>;

			reg-shift = <2>;
			reg-io-width = <4>;
			no-loopback-test;

			clocks = <&sysc 13>;

			resets = <&sysc 20>;

			interrupt-parent = <&intc>;
			interrupts = <22>;

			pinctrl-names = "default";
			pinctrl-0 = <&uart2_pins>;

			status = "disabled";
		};

		pwm: pwm@5000 {
			compatible = "mediatek,mt7628-pwm";
			reg = <0x5000 0x1000>;
			#pwm-cells = <2>;

			resets = <&sysc 31>;
			reset-names = "pwm";

			pinctrl-names = "default";
			pinctrl-0 = <&pwm0_pins>, <&pwm1_pins>;

			status = "disabled";
		};

		pcm: pcm@2000 {
			compatible = "ralink,mt7620a-pcm";
			reg = <0x2000 0x800>;

			resets = <&sysc 11>;
			reset-names = "pcm";

			interrupt-parent = <&intc>;
			interrupts = <4>;

			status = "disabled";
		};

		gdma: gdma@2800 {
			compatible = "ralink,rt3883-gdma";
			reg = <0x2800 0x800>;

			resets = <&sysc 14>;
			reset-names = "dma";

			interrupt-parent = <&intc>;
			interrupts = <7>;

			#dma-cells = <1>;
			#dma-channels = <16>;
			#dma-requests = <16>;

			status = "disabled";
		};
	};

	pinctrl: pinctrl {
		compatible = "ralink,rt2880-pinmux";
		pinctrl-names = "default";
		pinctrl-0 = <&state_default>;

		state_default: pinctrl0 {
		};

		spi_pins: spi_pins {
			spi_pins {
				groups = "spi";
				function = "spi";
			};
		};

		spi_cs1_pins: spi_cs1 {
			spi_cs1 {
				groups = "spi cs1";
				function = "spi cs1";
			};
		};

		i2c_pins: i2c_pins {
			i2c_pins {
				groups = "i2c";
				function = "i2c";
			};
		};

		i2s_pins: i2s {
			i2s {
				groups = "i2s";
				function = "i2s";
			};
		};

		uart0_pins: uartlite {
			uartlite {
				groups = "uart0";
				function = "uart0";
			};
		};

		uart1_pins: uart1 {
			uart1 {
				groups = "uart1";
				function = "uart1";
			};
		};

		uart2_pins: uart2 {
			uart2 {
				groups = "uart2";
				function = "uart2";
			};
		};

		sdxc_pins: sdxc {
			sdxc {
				groups = "sdmode";
				function = "sdxc";
			};
		};

		pwm0_pins: pwm0 {
			pwm0 {
				groups = "pwm0";
				function = "pwm0";
			};
		};

		pwm1_pins: pwm1 {
			pwm1 {
				groups = "pwm1";
				function = "pwm1";
			};
		};

		pcm_i2s_pins: pcm_i2s {
			pcm_i2s {
				groups = "i2s";
				function = "pcm";
			};
		};

		refclk_pins: refclk {
			refclk {
				groups = "refclk";
				function = "refclk";
			};
		};
	};

	usbphy: usbphy@10120000 {
		compatible = "mediatek,mt7628-usbphy", "mediatek,mt7620-usbphy";
		reg = <0x10120000 0x1000>;
		#phy-cells = <0>;

		ralink,sysctl = <&sysc>;
		/* usb phy reset is only controled by RSTCTRL bit 22 */
		resets = <&sysc 22>, <&sysc 25>;
		reset-names = "host", "device";
	};

	sdhci: sdhci@10130000 {
		compatible = "ralink,mt7620-sdhci";
		reg = <0x10130000 0x4000>;

		interrupt-parent = <&intc>;
		interrupts = <14>;

		pinctrl-names = "default";
		pinctrl-0 = <&sdxc_pins>;

		status = "disabled";
	};

	ehci: ehci@101c0000 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "generic-ehci";
		reg = <0x101c0000 0x1000>;

		phys = <&usbphy>;
		phy-names = "usb";

		interrupt-parent = <&intc>;
		interrupts = <18>;

		ehci_port1: port@1 {
			reg = <1>;
			#trigger-source-cells = <0>;
		};
	};

	ohci: ohci@101c1000 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "generic-ohci";
		reg = <0x101c1000 0x1000>;

		phys = <&usbphy>;
		phy-names = "usb";

		interrupt-parent = <&intc>;
		interrupts = <18>;

		ohci_port1: port@1 {
			reg = <1>;
			#trigger-source-cells = <0>;
		};
	};

	ethernet: ethernet@10100000 {
		compatible = "ralink,rt5350-eth";
		reg = <0x10100000 0x10000>;

		interrupt-parent = <&cpuintc>;
		interrupts = <5>;

		resets = <&sysc 21>;
		reset-names = "fe";

		mediatek,switch = <&esw>;
	};

	esw: esw@10110000 {
		compatible = "mediatek,mt7628-esw", "ralink,rt3050-esw";
		reg = <0x10110000 0x8000>;

		resets = <&sysc 23>, <&sysc 24>;
		reset-names = "esw", "ephy";

		interrupt-parent = <&intc>;
		interrupts = <17>;
	};

	pcie: pcie@10140000 {
		compatible = "mediatek,mt7620-pci";
		reg = <0x10140000 0x100
			0x10142000 0x100>;

		#address-cells = <3>;
		#size-cells = <2>;

		interrupt-parent = <&cpuintc>;
		interrupts = <4>;

		resets = <&sysc 26>;
		reset-names = "pcie0";

		status = "disabled";

		device_type = "pci";

		bus-range = <0 255>;
		ranges = <
			0x02000000 0 0x00000000 0x20000000 0 0x10000000 /* pci memory */
			0x01000000 0 0x00000000 0x10160000 0 0x00010000 /* io space */
		>;

		pcie0: pcie@0,0 {
			reg = <0x0000 0 0 0 0>;

			#address-cells = <3>;
			#size-cells = <2>;

			device_type = "pci";

			ranges;
		};
	};

	wmac: wmac@10300000 {
		compatible = "mediatek,mt7628-wmac";
		reg = <0x10300000 0x100000>;

		clocks = <&sysc 14>;

		interrupt-parent = <&cpuintc>;
		interrupts = <6>;

		status = "disabled";
	};
};

Thanks.
d*

0x0 0x20000 boot
0x20000 0xf00000 firmware
0xfb0000 0x10000 config
0xfc0000 0x30000 factory

I hope I did the hex calculations from my head correctly🙂

1 Like

With original mtd0 and custom squashfs-tftp-recovery.bin via tftpboot:

U-Boot 1.1.3 (Mar 29 2022 - 17:00:19)

Board: Ralink APSoC DRAM:  64 MB
relocate_code Pointer at: 83fb4000
******************************
Software System Reset Occurred
******************************
gpiomode1 55154444.
gpiomode2 05540555.
flash manufacture id: ef, device id 40 18
find flash: W25Q128BV
============================================
Ralink UBoot Version: 4.3.0.0
--------------------------------------------
ASIC 7628_MP (Port5<->None)
DRAM component: 512 Mbits DDR, width 16
DRAM bus: 16 bit
Total memory: 64 MBytes
Flash component: SPI Flash
Date:Mar 29 2022  Time:17:00:19
============================================
icache: sets:512, ways:4, linesz:32 ,total:65536
dcache: sets:256, ways:4, linesz:32 ,total:32768

 ##### The CPU freq = 580 MHZ ####
 estimate memory size =64 Mbytes
RESET MT7628 PHY!!!!!!..................................................
starting recovery...
TODO, Read MAC Address from Flash


 netboot_common, argc= 3

 NetTxPacket = 0x83FE3A80

 KSEG1ADDR(NetTxPacket) = 0xA3FE3A80

 NetLoop,call eth_halt !

 NetLoop,call eth_init !
Trying Eth0 (10/100-M)

 Waitting for RX_DMA_BUSY status Start... done


 ETH_STATE_ACTIVE!!
TFTP from server 192.168.0.66; our IP address is 192.168.0.2
Filename 'tp_recovery.bin'.

 TIMEOUT_COUNT=10,Load address: 0x80060000
Loading: checksum bad
checksum bad
Got ARP REPLY, set server/gtwy eth addr (58:ef:68:7e:f7:dd)
Got it
###########################################################checksum bad
######
#################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
 <cut>        
         
done
Bytes transferred = 16449536 (fb0000 hex)
NetBootFileXferSize= 00fb0000

 Erase flash !!
From 0x20000 length 0x7A0000
..........................................................................................................................

 Copy 0x80080000 to 0x00020000, count 0x7A0000....
..........................................................................................................................
[04050C0B][04050C0E]
DDR Calibration DQS reg = 00008988


U-Boot 1.1.3 (Mar 29 2022 - 17:00:19)

Board: Ralink APSoC DRAM:  64 MB
relocate_code Pointer at: 83fb4000
******************************
Software System Reset Occurred
******************************
gpiomode1 55154444.
gpiomode2 05540555.
flash manufacture id: ef, device id 40 18
find flash: W25Q128BV
============================================
Ralink UBoot Version: 4.3.0.0
--------------------------------------------
ASIC 7628_MP (Port5<->None)
DRAM component: 512 Mbits DDR, width 16
DRAM bus: 16 bit
Total memory: 64 MBytes
Flash component: SPI Flash
Date:Mar 29 2022  Time:17:00:19
============================================
icache: sets:512, ways:4, linesz:32 ,total:65536
dcache: sets:256, ways:4, linesz:32 ,total:32768

 ##### The CPU freq = 580 MHZ ####
 estimate memory size =64 Mbytes
RESET MT7628 PHY!!!!!!
continue to starting system.                                                                                                                                                              0
disable switch phyport...

3: System Boot system code via Flash.(0xbc020000)
do_bootm:argc=2, addr=0xbc020000
## Booting image at bc020000 ...
   Uncompressing Kernel Image ... OK
No initrd
## Transferring control to Linux (at address 800061b0) ...
## Giving linux memsize in MB, 64

Starting kernel ...

Will try with the custom u-boot built from source

with custom u-boot (from source) and custom squashfs-tftp-recovery.bin via tftpboot:

Flash is recognized as 16M

Ralink UBoot Version: 4.3.0.0
--------------------------------------------
ASIC 7628_MP (Port5<->None)
DRAM component: 512 Mbits DDR, width 16
DRAM bus: 16 bit
Total memory: 64 MBytes
Flash component: 16 MBytes NOR Flash
Date:Aug 24 2023  Time:22:41:40

Still stuck at starting kernel:

U-Boot 1.1.3 (Aug 24 2023 - 22:41:40)

Board: Ralink APSoC DRAM:  64 MB
relocate_code Pointer at: 83fb4000
******************************
Software System Reset Occurred
******************************
gpiomode1 55154444.
gpiomode2 05540555.
flash manufacture id: ef, device id 40 18
find flash: W25Q128BV
============================================
Ralink UBoot Version: 4.3.0.0
--------------------------------------------
ASIC 7628_MP (Port5<->None)
DRAM component: 512 Mbits DDR, width 16
DRAM bus: 16 bit
Total memory: 64 MBytes
Flash component: 16 MBytes NOR Flash
Date:Aug 24 2023  Time:22:41:40
============================================
icache: sets:512, ways:4, linesz:32 ,total:65536
dcache: sets:256, ways:4, linesz:32 ,total:32768

 ##### The CPU freq = 580 MHZ ####
 estimate memory size =64 Mbytes
RESET MT7628 PHY!!!!!!..................................................
starting recovery...
TODO, Read MAC Address from Flash


 netboot_common, argc= 3

 NetTxPacket = 0x83FE38C0

 KSEG1ADDR(NetTxPacket) = 0xA3FE38C0

 NetLoop,call eth_halt !

 NetLoop,call eth_init !
Trying Eth0 (10/100-M)

 Waitting for RX_DMA_BUSY status Start... done


 ETH_STATE_ACTIVE!!
TFTP from server 192.168.0.66; our IP address is 192.168.0.2
Filename 'tp_recovery.bin'.

 TIMEOUT_COUNT=10,Load address: 0x80060000
Loading: checksum bad
checksum bad
Got ARP REPLY, set server/gtwy eth addr (58:ef:68:7e:f7:dd)
Got it
##########################checksum bad
#######################################
         #####################checksum bad
############################################
         #################################################################
         #################################################################
         #############checksum bad
#checksum bad
###################################################
         #########checksum bad
########################################################
         #################################################################
         #################################################################
         #############################################################Got ARP REQUEST, return our IP
####
         #################################################################
         #################################################################
         #################################################################
         <cut>
####
         ############################
done
Bytes transferred = 16449536 (fb0000 hex)
NetBootFileXferSize= 00fb0000

 Erase flash !!
From 0x20000 length 0x7A0000
..........................................................................................................................

 Copy 0x80080000 to 0x00020000, count 0x7A0000....
..........................................................................................................................
[04050C0C][04050C0E]
DDR Calibration DQS reg = 00008988


U-Boot 1.1.3 (Aug 24 2023 - 22:41:40)

Board: Ralink APSoC DRAM:  64 MB
relocate_code Pointer at: 83fb4000
******************************
Software System Reset Occurred
******************************
gpiomode1 55154444.
gpiomode2 05540555.
flash manufacture id: ef, device id 40 18
find flash: W25Q128BV
============================================
Ralink UBoot Version: 4.3.0.0
--------------------------------------------
ASIC 7628_MP (Port5<->None)
DRAM component: 512 Mbits DDR, width 16
DRAM bus: 16 bit
Total memory: 64 MBytes
Flash component: 16 MBytes NOR Flash
Date:Aug 24 2023  Time:22:41:40
============================================
icache: sets:512, ways:4, linesz:32 ,total:65536
dcache: sets:256, ways:4, linesz:32 ,total:32768

 ##### The CPU freq = 580 MHZ ####
 estimate memory size =64 Mbytes
RESET MT7628 PHY!!!!!!
continue to starting system.                                                                                                                                                              0
disable switch phyport...

3: System Boot system code via Flash.(0xbc020000)
do_bootm:argc=2, addr=0xbc020000
## Booting image at bc020000 ...
   Uncompressing Kernel Image ... OK
No initrd
## Transferring control to Linux (at address 800061b0) ...
## Giving linux memsize in MB, 64

Starting kernel ...

Check the size of the firmware:

Erase flash !!
From 0x20000 length 0x7A0000

Did you build the image with the new layout?

Yes, as you suggested.

This means image-builder is not using target/linux/ramips/dts/mt7628an_tplink_8m.dtsi where the new partition layout is defined.

Give it a try and build manually on a local computer.
Besides dts file you need to enlarge the LZMA image as well - different file.
If you define a new target, be sure to select it in the menuconfig.

You mean compile openwrt image from source? I've done that as well (with selecting 16M in menuconfig). Didn't touch the LZMA image i think.

Let's see. I'll give that a try.
Thanks
d*

This was the push in the right direction. I'm somewhat successful.

First i had to recompile the u-boot.bin from source, after defining TP_MODEL_W902ACV3 in lib_mips/board.c with the correct commands:

#elif defined(TP_MODEL_WR902ACV3)
                                run_command("tftp 0x80060000 tp_recovery.bin;erase tplink 0x20000 0xf00000;cp.b 0x80080000 0x20000 0xf00000", 0);

#else
                                run_command("tftp 0x80060000 tp_recovery.bin;erase tplink 0x20000 0x7a0000;cp.b 0x80080000 0x20000 0x7a0000", 0);
#endif
                                udelay(1000);
                                run_command("reset", 0);

Before that it always defaulted to "else" when recompiling.

Realized that the DTB is not being recompiled when using the image-builder. Edited the files and made a new image (from source) just to get the dtb. This worked in image-builder.

Restored one of the previous images and it booted and showed 9,7M /overlay.

That image didn't have luci, and the sysupgrade image would not boot. Unfortunately I'm not sure they are from the same build since i compiled and recompiled multiple images in the last couple of days.

Deleting everything I've done so far and starting with a clean git clone.

Will post once i figure it out.

Thanks.
d*

In the menuconfig you can include the packages that needs to be built into the image (Luci is not on by default). Note: Build all your needed kernel modules at least as a module, so you can install them when needed.

Getting there :slight_smile:

Slight issue tho, no 5G

[   17.797163] mt76x0e 0000:01:00.0: card - bus=0x1, slot = 0x0 irq=4
[   17.803711] mt76x0e 0000:01:00.0: ASIC revision: 76100002
[   17.811714] mt76x0e 0000:01:00.0: Firmware Version: 0.1.00
[   18.205162] mt76x0e 0000:01:00.0: EEPROM data check failed: ffff
[   18.301090] mt76x0e 0000:01:00.0: driver does not support default EEPROM
[   18.308175] mt76x0e: probe of 0000:01:00.0 failed with error -22

Found this:

MT7628 is the 802.11bgn SoC (CPU + WLAN) so it does not support 5 GHz. MT7610E is the 5 GHz WLAN card. The onboard EEPROM has 64Kbytes, the first 32K (0-32767) are for MT7628, the second 32K are for MT7610E.

Lets see...

1 Like
EEPROM data check failed: ffff

I would look for this error.

kmod-mt76x0e is already installed and up to date.