Adding support for Allied Telesis AT-AR3050S

Hello all,

I'm trying to add OpenWrt support for Allied Telesis AT-AR3050S router.

Product page:

https://www.allied-telesis.co.jp/products/list/router/ar3050s_ar4050s/catalog.html

Official Firmware:

https://www.allied-telesis.co.jp/support/list/router/ar3050s_ar4050s/download.html

( Download>>> ---> [同意する] ---> put 000194G to シリアル番号 and Login

Specification:

  • SoC: Cavium Octeon CN7xxx (CN7020?)
  • RAM: DDR3 1 GiB (2x Samsung K4B4G1646D-BCK0)
  • Flash: eMMC 4 GiB (TOSHIBA THGBMDG5D1LBAIL)
  • SRAM: 512 KiB (Cypress CY62148EV30LL-45ZSXI)
  • Ethernet: 12x 10/100/1000 Mbps
    • WAN
      • eth1, 2: 2x BCM5482S
        • RJ45 / SFP combo
      • Bypass 1, 2
    • LAN
      • lan1-8: (unknown Broadcom switch)
  • UART: "CONSOLE" port (RJ-45 jack, RS-232C)
    • settings: 9600bps (default), data 8 bits, no parity, stop 1 bit, flow none
  • SD Card: 1x slot on front panel
  • USB: USB 2.0 Type-A on front panel
  • Power: 100-240 VAC, 50/60 Hz, 0.9 A (avg: 18 W, max: 23W)
decompiled dts of stock FW:
/dts-v1/;

/ {
	#address-cells = <0x02>;
	#size-cells = <0x02>;
	interrupt-parent = <0x01>;
	model = "arc";
	compatible = "alliedtelesis,arc";
	bcm-tagged-port = <0x18>;

	memory {
		reg = <0x00 0x00 0x00 0x10000000 0x00 0x20000000 0x00 0x30000000>;
		device_type = "memory";
	};

	soc@0 {
		compatible = "simple-bus";
		#address-cells = <0x02>;
		#size-cells = <0x02>;
		ranges;

		interrupt-controller@1070000000000 {
			compatible = "cavium,octeon-3860-ciu";
			interrupt-controller;
			#interrupt-cells = <0x02>;
			reg = <0x10700 0x00 0x00 0x7000>;
			phandle = <0x01>;
		};

		interrupt-controller@107000000e000 {
			compatible = "cavium,octeon-7130-cib";
			reg = <0x10700 0xe000 0x00 0x08 0x10700 0xe100 0x00 0x08>;
			cavium,max-bits = <0x17>;
			interrupt-controller;
			interrupt-parent = <0x01>;
			interrupts = <0x01 0x18>;
			#interrupt-cells = <0x02>;
		};

		interrupt-controller@107000000e200 {
			compatible = "cavium,octeon-7130-cib";
			reg = <0x10700 0xe200 0x00 0x08 0x10700 0xe300 0x00 0x08>;
			cavium,max-bits = <0x0c>;
			interrupt-controller;
			interrupt-parent = <0x01>;
			interrupts = <0x01 0x34>;
			#interrupt-cells = <0x02>;
		};

		interrupt-controller@107000000e400 {
			compatible = "cavium,octeon-7130-cib";
			reg = <0x10700 0xe400 0x00 0x08 0x10700 0xe500 0x00 0x08>;
			cavium,max-bits = <0x06>;
			interrupt-controller;
			interrupt-parent = <0x01>;
			interrupts = <0x01 0x3f>;
			#interrupt-cells = <0x02>;
		};

		interrupt-controller@107000000ec00 {
			compatible = "cavium,octeon-7130-cib";
			reg = <0x10700 0xec00 0x00 0x08 0x10700 0xee00 0x00 0x08>;
			cavium,max-bits = <0x0f>;
			interrupt-controller;
			interrupt-parent = <0x01>;
			interrupts = <0x02 0x11>;
			#interrupt-cells = <0x02>;
		};

		interrupt-controller@107000000e600 {
			compatible = "cavium,octeon-7130-cib";
			reg = <0x10700 0xe600 0x00 0x08 0x10700 0xe700 0x00 0x08>;
			cavium,max-bits = <0x04>;
			interrupt-controller;
			interrupt-parent = <0x01>;
			interrupts = <0x02 0x10>;
			#interrupt-cells = <0x02>;
			linux,phandle = <0x0d>;
			phandle = <0x0d>;
		};

		interrupt-controller@107000000e800 {
			compatible = "cavium,octeon-7130-cib";
			reg = <0x10700 0xe800 0x00 0x08 0x10700 0xea00 0x00 0x08>;
			cavium,max-bits = <0x0b>;
			interrupt-controller;
			interrupt-parent = <0x01>;
			interrupts = <0x01 0x21>;
			#interrupt-cells = <0x02>;
			linux,phandle = <0x0e>;
			phandle = <0x0e>;
		};

		interrupt-controller@107000000e900 {
			compatible = "cavium,octeon-7130-cib";
			reg = <0x10700 0xe900 0x00 0x08 0x10700 0xeb00 0x00 0x08>;
			cavium,max-bits = <0x0b>;
			interrupt-controller;
			interrupt-parent = <0x01>;
			interrupts = <0x01 0x11>;
			#interrupt-cells = <0x02>;
			linux,phandle = <0x0f>;
			phandle = <0x0f>;
		};

		gpio-controller@1070000000800 {
			#gpio-cells = <0x02>;
			compatible = "cavium,octeon-3860-gpio";
			reg = <0x10700 0x800 0x00 0x100>;
			gpio-controller;
			interrupt-controller;
			#interrupt-cells = <0x02>;
			interrupts = <0x00 0x10>;
			phandle = <0x07>;

			factory-boot {
				gpio-hog;
				gpios = <0x01 0x01>;
				input;
			};
		};

		serial@1180000000800 {
			compatible = "cavium,octeon-3860-uart\0ns16550";
			reg = <0x11800 0x800 0x00 0x400>;
			clock-frequency = <0x00>;
			current-speed = <0x1c200>;
			reg-shift = <0x03>;
			interrupts = <0x00 0x22>;
			status = "okay";
		};

		mdio@1180000001800 {
			compatible = "cavium,octeon-3860-mdio";
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			reg = <0x11800 0x1800 0x00 0x40>;
			status = "okay";
			reset-delay-us = <0x0a>;
			reset-gpio = <0x02 0x00 0x01>;

			eth2-phy@1 {
				compatible = "brcm,bcm5482s\0ethernet-phy-ieee802.3-c22\0ethernet-phy-id0143.bcb2";
				reg = <0x01>;
				la-green-handle = <0x03>;
				la-yellow-handle = <0x04>;
				dc-green-handle = <0x05>;
				dc-yellow-handle = <0x06>;
				interrupt-parent = <0x07>;
				interrupts = <0x0e 0x08>;
				sfp-green-handle = <0x08>;
				sfp-yellow-handle = <0x09>;
				sfpcage = <0x0a>;
				phandle = <0x16>;
			};

			eth1-phy@2 {
				compatible = "brcm,bcm5482s\0ethernet-phy-ieee802.3-c22\0ethernet-phy-id0143.bcb2";
				reg = <0x02>;
				la-green-handle = <0x0b>;
				la-yellow-handle = <0x0c>;
				dc-green-handle = <0x10>;
				dc-yellow-handle = <0x11>;
				interrupt-parent = <0x07>;
				interrupts = <0x0f 0x08>;
				sfp-green-handle = <0x12>;
				sfp-yellow-handle = <0x13>;
				sfpcage = <0x14>;
				phandle = <0x15>;
			};
		};

		pip@11800a0000000 {
			compatible = "cavium,octeon-3860-pip";
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			reg = <0x11800 0xa0000000 0x00 0x2000>;
			status = "okay";

			interface@0 {
				compatible = "cavium,octeon-3860-pip-interface";
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				reg = <0x01>;
				status = "okay";

				ethernet@0 {
					compatible = "cavium,octeon-3860-pip-port";
					reg = <0x00>;
					status = "okay";
					label = "eth1";
					local-mac-address = [00 0f b7 10 e4 5c];
					phy-handle = <0x15>;
				};
			};

			interface@1 {
				compatible = "cavium,octeon-3860-pip-interface";
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				reg = <0x00>;
				status = "okay";

				ethernet@0 {
					compatible = "cavium,octeon-3860-pip-port";
					reg = <0x00>;
					status = "okay";
					label = "eth2";
					local-mac-address = [00 0f b7 10 e4 5d];
					phy-handle = <0x16>;
				};
			};

			interface@4 {
				compatible = "cavium,octeon-3860-pip-interface";
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				reg = <0x04>;
				status = "okay";

				ethernet@0 {
					compatible = "cavium,octeon-3860-pip-port";
					reg = <0x00>;
					status = "okay";
					label = "imp0";
					local-mac-address = [00 0f b7 10 e4 5e];
					phandle = <0x17>;
				};
			};
		};

		i2c@1180000001000 {
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			compatible = "cavium,octeon-3860-twsi";
			reg = <0x11800 0x1000 0x00 0x200>;
			interrupts = <0x00 0x2d>;
			clock-frequency = <0x186a0>;
			status = "okay";

			rtc@68 {
				compatible = "dallas,ds1340";
				reg = <0x68>;
			};

			lm81@2c {
				compatible = "lm81";
				reg = <0x2c>;
			};

			gpio@21 {
				compatible = "nxp,pca9555";
				gpio-controller;
				#gpio-cells = <0x02>;
				reg = <0x21>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				interrupt-parent = <0x07>;
				interrupts = <0x0b 0x08>;
				phandle = <0x18>;
			};

			gpio@22 {
				compatible = "nxp,pca9555";
				gpio-controller;
				#gpio-cells = <0x02>;
				reg = <0x22>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				phandle = <0x02>;
			};

			gpio@23 {
				compatible = "nxp,pca9555";
				gpio-controller;
				#gpio-cells = <0x02>;
				reg = <0x23>;
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				phandle = <0x1b>;
			};
		};

		i2c@1180000001200 {
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			compatible = "cavium,octeon-3860-twsi";
			reg = <0x11800 0x1200 0x00 0x200>;
			interrupts = <0x00 0x3b>;
			clock-frequency = <0x186a0>;
			status = "okay";

			mux1@70 {
				#address-cells = <0x01>;
				#size-cells = <0x00>;
				compatible = "nxp,pca9546";
				reg = <0x70>;
				i2c-mux-idle-disconnect;

				i2c@0 {
					#address-cells = <0x01>;
					#size-cells = <0x00>;
					reg = <0x00>;
					phandle = <0x1a>;
				};

				i2c@1 {
					#address-cells = <0x01>;
					#size-cells = <0x00>;
					reg = <0x01>;
					phandle = <0x19>;
				};

				i2c@2 {
					#address-cells = <0x01>;
					#size-cells = <0x00>;
					reg = <0x02>;
				};

				i2c@3 {
					#address-cells = <0x01>;
					#size-cells = <0x00>;
					reg = <0x03>;
				};
			};
		};

		spi@1070000001000 {
			compatible = "cavium,octeon-3010-spi";
			reg = <0x10700 0x1000 0x00 0x100>;
			interrupts = <0x00 0x3a>;
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			spi-max-frequency = <0x1312d00>;
			status = "okay";

			spidev@1 {
				compatible = "brcm,robo-switch";
				reg = <0x01>;
				spi-max-frequency = <0x1312d00>;
				#address-cells = <0x01>;
				#size-cells = <0x01>;
				reset-gpio = <0x02 0x01 0x01>;
				b53,ethernet = <0x17>;
				interrupt-parent = <0x07>;
				interrupts = <0x0d 0x08>;
			};
		};

		mmc@1180000002000 {
			compatible = "cavium,octeon-6130-mmc";
			reg = <0x11800 0x2000 0x00 0x100 0x11800 0x168 0x00 0x20>;
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			interrupts = <0x01 0x13 0x00 0x3f>;
			status = "okay";

			mmc-slot@0 {
				compatible = "mmc-slot";
				reg = <0x00>;
				max-frequency = <0x18cba80>;
				bus-width = <0x08>;
				non-removable;
			};

			mmc-slot@1 {
				compatible = "mmc-slot";
				reg = <0x01>;
				max-frequency = <0x1312d00>;
				bus-width = <0x04>;
				cd-gpios = <0x18 0x0f 0x01>;
				wp-gpios = <0x02 0x09 0x00>;
			};
		};

		cavium_nand@1070001000000 {
			compatible = "cavium,octeon-5230-nand";
			reg = <0x10700 0x1000000 0x00 0x40 0x11800 0x00 0x00 0x180>;
			#address-cells = <0x01>;
			#size-cells = <0x00>;
			status = "disabled";
		};

		dma-engine@1180000000100 {
			compatible = "cavium,octeon-5750-bootbus-dma";
			reg = <0x11800 0x100 0x00 0x08>;
			interrupts = <0x00 0x3f>;
		};

		dma-engine@1180000000108 {
			compatible = "cavium,octeon-5750-bootbus-dma";
			reg = <0x11800 0x108 0x00 0x08>;
			interrupts = <0x00 0x3f>;
		};

		uctl@1180068000000 {
			compatible = "cavium,octeon-7130-usb-uctl";
			reg = <0x11800 0x68000000 0x00 0x100>;
			ranges;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			refclk-frequency = <0x5f5e100>;
			refclk-type-ss = "dlmc_ref_clk1";
			refclk-type-hs = "dlmc_ref_clk1";
			status = "okay";
			needs-usb3-workaround;

			xhci@1680000000000 {
				compatible = "cavium,octeon-7130-xhci\0snps,dwc3";
				reg = <0x16800 0x00 0x10 0x00>;
				interrupt-parent = <0x0e>;
				interrupts = <0x09 0x04>;
				dr_mode = "host";
			};
		};

		uctl@1180069000000 {
			compatible = "cavium,octeon-7130-usb-uctl";
			reg = <0x11800 0x69000000 0x00 0x100>;
			ranges;
			#address-cells = <0x02>;
			#size-cells = <0x02>;
			refclk-frequency = <0x5f5e100>;
			refclk-type-ss = "dlmc_ref_clk1";
			refclk-type-hs = "dlmc_ref_clk1";
			status = "disabled";

			xhci@1690000000000 {
				compatible = "cavium,octeon-7130-xhci\0synopsys,dwc3";
				reg = <0x16900 0x00 0x10 0x00>;
				interrupt-parent = <0x0f>;
				interrupts = <0x09 0x04>;
				dr_mode = "host";
			};
		};

		bootbus@1180000000000 {
			compatible = "cavium,octeon-3860-bootbus";
			reg = <0x11800 0x00 0x00 0x200>;
			#address-cells = <0x02>;
			#size-cells = <0x01>;
			ranges = <0x00 0x00 0x00 0x80000000 0xffffffff 0x01 0x00 0x00 0x20000000 0x00 0x02 0x00 0x00 0x40000000 0x00 0x03 0x00 0x00 0x10000000 0x80000 0x04 0x00 0x00 0x60000000 0x00 0x05 0x00 0x00 0x70000000 0x00 0x06 0x00 0x00 0x00 0x00 0x07 0x00 0x00 0x90000000 0x00>;
			status = "okay";

			cavium,cs-config@3 {
				compatible = "cavium,octeon-3860-bootbus-config";
				cavium,cs-index = <0x03>;
				cavium,t-adr = <0x10>;
				cavium,t-ce = <0x10>;
				cavium,t-oe = <0x3f>;
				cavium,t-we = <0x3f>;
				cavium,t-rd-hld = <0x20>;
				cavium,t-wr-hld = <0x20>;
				cavium,t-pause = <0x10>;
				cavium,t-wait = <0x00>;
				cavium,t-page = <0x00>;
				cavium,t-rd-dly = <0x00>;
				cavium,pages = <0x00>;
				cavium,bus-width = <0x08>;
			};

			nvs@3,0 {
				#address-cells = <0x01>;
				#size-cells = <0x01>;
				compatible = "mtd-ram";
				reg = <0x03 0x00 0x80000>;
				bank-width = <0x01>;
				label = "nvs";

				partition@nvs {
					reg = <0x00 0x70000>;
					label = "nvs";
				};

				partition@errlog {
					reg = <0x70000 0x10000>;
					label = "errlog";
				};
			};
		};

		rgmii-tuning {
			compatible = "atl,rgmii-tuning";
			rgmii-tx-set = <0x24>;
			rgmii-rx-set = <0x24>;
			rgmii-rxclk-set = <0x02>;
			rgmii-broadcom = <0x00>;
		};

		gpio-restart {
			compatible = "gpio-restart";
			gpios = <0x07 0x02 0x01>;
		};

		bypass@1 {
			compatible = "atl,bypass";
			label = "eth1-bypass";
			bypass-gpio = <0x07 0x13 0x00>;
		};

		bypass@2 {
			compatible = "atl,bypass";
			label = "eth2-bypass";
			bypass-gpio = <0x07 0x10 0x00>;
		};

		sfpcage@1 {
			compatible = "atl,sfpcage";
			label = "eth1";
			board_index = <0x00>;
			port = <0x01>;
			combo-port = <0x01>;
			detect-gpio = <0x18 0x0e 0x01>;
			txdis-gpio = <0x18 0x05 0x00>;
			rxlos-gpio = <0x18 0x0c 0x00>;
			phy-handle = <0x15>;
			i2c-bus = <0x19>;
			phandle = <0x14>;
		};

		sfpcage@2 {
			compatible = "atl,sfpcage";
			label = "eth2";
			board_index = <0x00>;
			port = <0x02>;
			combo-port = <0x01>;
			detect-gpio = <0x18 0x0b 0x01>;
			txdis-gpio = <0x18 0x04 0x00>;
			rxlos-gpio = <0x18 0x09 0x00>;
			phy-handle = <0x16>;
			i2c-bus = <0x1a>;
			phandle = <0x0a>;
		};
	};

	aliases {
		pip = "/soc@0/pip@11800a0000000";
		smi0 = "/soc@0/mdio@1180000001800";
		uart0 = "/soc@0/serial@1180000000800";
		twsi0 = "/soc@0/i2c@1180000001000";
		twsi1 = "/soc@0/i2c@1180000001200";
		spi = "/soc@0/spi@1070000001000";
		mmc = "/soc@0/mmc@1180000002000";
		usbn = "/soc@0/uctl@1180068000000";
		rgmii = "/soc@0/rgmii-tuning";
	};

	usb-power-gpios {
		compatible = "atl,system-gpios";
		gpios = <0x18 0x07 0x02>;
		gpio-names = "usb_power_enable";
	};

	leds {
		compatible = "gpio-leds";

		usb_yellow_led {
			label = "usb:yellow";
			gpios = <0x07 0x03 0x00>;
		};

		usb_green_led {
			label = "usb:green";
			gpios = <0x07 0x04 0x00>;
		};

		fault_led {
			label = "fault:red";
			gpios = <0x07 0x07 0x00>;
			linux,default-trigger = "atlfault";
		};

		eth2_dup_green_led {
			label = "eth2_DC:green";
			gpios = <0x1b 0x00 0x01>;
			linux,default-trigger = "eth2_DC:green";
			phandle = <0x05>;
		};

		eth1_dup_green_led {
			label = "eth1_DC:green";
			gpios = <0x1b 0x02 0x01>;
			linux,default-trigger = "eth1_DC:green";
			phandle = <0x10>;
		};

		func1_green_led {
			label = "func1:green";
			gpios = <0x18 0x02 0x01>;
		};

		func2_green_led {
			label = "func2:green";
			gpios = <0x18 0x03 0x01>;
		};

		eth2_yellow_dup_led {
			label = "eth2_DC:yellow";
			gpios = <0x07 0x11 0x01>;
			linux,default-trigger = "eth2_DC:yellow";
			phandle = <0x06>;
		};

		eth1_yellow_dup_led {
			label = "eth1_DC:yellow";
			gpios = <0x07 0x12 0x01>;
			linux,default-trigger = "eth1_DC:yellow";
			phandle = <0x11>;
		};

		eth2_rj45_link_yellow_led {
			label = "eth2_LA:yellow";
			gpios = <0x1b 0x0a 0x00>;
			linux,default-trigger = "eth2_LA:yellow";
			phandle = <0x04>;
		};

		eth2_rj45_link_green_led {
			label = "eth2_LA:green";
			gpios = <0x1b 0x04 0x00>;
			linux,default-trigger = "eth2_LA:green";
			phandle = <0x03>;
		};

		eth1_rj45_link_yellow_led {
			label = "eth1_LA:yellow";
			gpios = <0x1b 0x05 0x01>;
			linux,default-trigger = "eth1_LA:yellow";
			phandle = <0x0c>;
		};

		eth1_rj45_link_green_led {
			label = "eth1_LA:green";
			gpios = <0x1b 0x0b 0x01>;
			linux,default-trigger = "eth1_LA:green";
			phandle = <0x0b>;
		};

		sd_green_led {
			label = "sd:green";
			gpios = <0x07 0x05 0x01>;
			linux,default-trigger = "mmc-state";
		};

		sd_yellow_led {
			label = "sd:yellow";
			gpios = <0x07 0x06 0x01>;
			linux,default-trigger = "mmc-act";
		};

		wlan1_green_led {
			label = "wlan1:green";
			gpios = <0x07 0x09 0x01>;
		};

		wlan2_green_led {
			label = "wlan2:green";
			gpios = <0x07 0x0a 0x01>;
		};

		ha_yellow_led {
			label = "ha:yellow";
			gpios = <0x18 0x00 0x00>;
		};

		ha_green_led {
			label = "ha:green";
			gpios = <0x18 0x01 0x00>;
		};

		eth2_sfp_link_yellow_led {
			label = "eth2_sfp:yellow";
			gpios = <0x1b 0x0c 0x00>;
			linux,default-trigger = "eth2_sfp:yellow";
			phandle = <0x09>;
		};

		eth2_sfp_link_green_led {
			label = "eth2_sfp:green";
			gpios = <0x1b 0x06 0x00>;
			linux,default-trigger = "eth2_sfp:green";
			phandle = <0x08>;
		};

		eth1_sfp_link_yellow_led {
			label = "eth1_sfp:yellow";
			gpios = <0x1b 0x07 0x01>;
			linux,default-trigger = "eth1_sfp:yellow";
			phandle = <0x13>;
		};

		eth1_sfp_link_green_led {
			label = "eth1_sfp:green";
			gpios = <0x1b 0x0d 0x01>;
			linux,default-trigger = "eth1_sfp:green";
			phandle = <0x12>;
		};

		spare_yellow_led {
			label = "spare:yellow";
			gpios = <0x1b 0x08 0x00>;
		};

		spare_green_led {
			label = "spare:green";
			gpios = <0x1b 0x09 0x00>;
		};
	};
};

Additional Informations on stock FW:

https://memo205.hatenablog.jp/entry/2023/12/17/173248

repository:

I added a dts and image definition and compiled firmware, but doesn't boot on AT-AR3050S.

log (trying OpenWrt)
Bootloader 5.1.6 loaded
Press <Ctrl+B> for the Boot Menu

Boot Menu:

  WARNING: The bootloader is not currently password protected. 
  ------------------------------------------------------
  S. Security Level
  ------------------------------------------------------
  0. Restart
  1. Perform one-off boot from alternate source
  2. Change the default boot source (for advanced users)
  3. Update Bootloader
  4. Adjust the console baud rate
  5. Special boot options
  6. System information
  7. Restore Bootloader factory settings
  ------------------------------------------------------
  9. Quit and continue booting

Enter selection ==> 1

Select device:

  0. Return to previous menu
  ------------------------------------------------------
  1. Flash   (flash:)
  2. SD Card (card:)
  3. TFTP    (tftp://)
  4. YMODEM  (ymodem:)
  6. USB     (usb:)

Enter selection ==> 3

  Enter physical download port (1-8)... []: 1
  Enter IP version [4|6]................ [4]: 
  Enter IP address for this device ..... [0.0.0.0]: 192.168.0.1
  Enter subnet mask .................... [0.0.0.0]: 255.255.255.0
  Enter gateway IP ..................... [0.0.0.0]: 
  Enter TFTP server IP ................. [0.0.0.0]: 192.168.0.10
  Enter filename ....................... []: ar3050s-initramfs.bin
Loading tftp://192.168.0.10/ar3050s-initramfs.bin...
Downloading from port 1

Verifying release... OK
Booting...                           <----- (hang up, will be reset)

Bootloader 5.1.6 loaded
Press <Ctrl+B> for the Boot Menu

Boot Menu:

  WARNING: The bootloader is not currently password protected. 
  ------------------------------------------------------
  S. Security Level
  ------------------------------------------------------
  0. Restart
  1. Perform one-off boot from alternate source
  2. Change the default boot source (for advanced users)
  3. Update Bootloader
  4. Adjust the console baud rate
  5. Special boot options
  6. System information
  7. Restore Bootloader factory settings
  ------------------------------------------------------
  9. Quit and continue booting

Enter selection ==>

Please help...

It wasn’t much for a bootlog this log?

Maybe the USB start of initramfs method used for Edgerouter 4 works since the SoC seems to be the same family?

https://forum.openwrt.org/t/support-for-ubiquiti-edgerouter-4/45617/19?u=flygarn12
Just skip the copy systemupgrade part and only run the initramfs part.

Thank you for your reply.

But unfortunately, interrupt of booting by any keys will be ignored and U-Boot CLI is unavailable on this device.

With console also?

I tried on serial console and cannot interrupt booting on U-Boot.

1 Like

I guess you then need to start from very basic minimum with the dts and only make the SoC and memory boot to begin with.

probably need to figure out how to initiate a boot 1st )

1 Like

I tried, but not successful...

dts:

// SPDX-License-Identifier: GPL-2.0-or-later OR MIT

#include "cn71xx.dtsi"

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

/ {
	compatible = "alliedtelesis,at-ar3050s", "cavium,cn7020";
	model = "Allied Telesis AT-AR3050S";

	memory@0 {
		device_type = "memory";
		reg = <0x0 0x00000000>,
		      <0x0 0x10000000>,
		      <0x0 0x20000000>,
		      <0x0 0x30000000>;
	};
};

&uart0 {
	status = "okay";
};