Adding support for TP-Link Archer AX80 EU version, I actually installed it but needs some small work

Also some additional info here. This is what happens on the logs when you plug in the ports. As said on the labels on the device, lan1-2-3 and 1GBPS WAN/LAN port:

PHYSICAL LAN 2 PLUGGED:
[  479.526607] br-lan: port 4(lan3) entered blocking state
[  479.539713] br-lan: port 4(lan3) entered forwarding state

PHYSICAL LAN 1 PLUGGED:
[  499.679190] br-lan: port 3(lan2) entered blocking state
[  499.692299] br-lan: port 3(lan2) entered forwarding state

1 GBPS WAN/LAN PORT PLUGGED:
[  536.903863] br-lan: port 2(lan1) entered blocking state
[  536.916964] br-lan: port 2(lan1) entered forwarding state


this is what happens when you plug in port PHYSICALLY TAGGED as LAN3(but it's the last port actually so). At first, nothing happens in the logs, I plugged that and unplugged the LAN3 port and nothing happened. It's just that it doesn't really work. But, the moment I unplug that and plug it onto working ports of the router, it immediately gives this message in the logs and reboots. And this is that logs:

root@OpenWrt:~# [  127.856313] Unable to handle kernel read from unreadable memory at virtual address 00000000000000ac
[  127.862123] mt7530-mdio mdio-bus:1f lan3: Link is Up - 1Gbps/Full - flow control rx/tx
[  127.862149] br-lan: port 4(lan3) entered blocking state
[  127.862157] br-lan: port 4(lan3) entered forwarding state
[  127.865350] Mem abort info:
[  127.865354]   ESR = 0x0000000096000005
[  127.865356]   EC = 0x25: DABT (current EL), IL = 32 bits
[  127.865360]   SET = 0, FnV = 0
[  127.865363]   EA = 0, S1PTW = 0
[  127.901789]   FSC = 0x05: level 1 translation fault
[  127.906648] Data abort info:
[  127.909513]   ISV = 0, ISS = 0x00000005, ISS2 = 0x00000000
[  127.914979]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
[  127.920012]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
[  127.925305] user pgtable: 4k pages, 39-bit VAs, pgdp=00000000438b1000
[  127.931726] [00000000000000ac] pgd=0800000044cad003, p4d=0800000044cad003, pud=0800000044cad003, pmd=0000000000000000
[  127.942316] Internal error: Oops: 0000000096000005 [#1] SMP
[  127.947871] Modules linked in: pppoe ppp_async nft_fib_inet nf_flow_table_inet pppox ppp_generic nft_reject_ipv6 nft_reject_ipv4 nft_reject_inet nft_reject nft_redir nft_quota nft_numgen nft_nat nft_masq nft_
log nft_limit nft_hash nft_flow_offload nft_fib_ipv6 nft_fib_ipv4 nft_fib nft_ct nft_chain_nat nf_tables nf_nat nf_flow_table nf_conntrack mt7915e(O) mt76_connac_lib(O) mt76(O) mac80211(O) cfg80211(O) slhc nfnet
link nf_reject_ipv6 nf_reject_ipv4 nf_log_syslog nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c compat(O) crypto_safexcel sha512_arm64 sha1_ce sha1_generic seqiv md5 geniv des_generic libdes authencesn authenc leds_lp5
523 leds_lp55xx_common leds_gpio xhci_plat_hcd xhci_pci xhci_mtk_hcd xhci_hcd gpio_button_hotplug(O) usbcore usb_common
[  128.013370] CPU: 3 UID: 0 PID: 563 Comm: irq/81-mt7530 Tainted: G           O       6.12.55 #0
[  128.021962] Tainted: [O]=OOT_MODULE
[  128.025434] Hardware name: TP-Link Archer AX80V1-EU (DT)
[  128.030727] pstate: 804000c5 (Nzcv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[  128.037669] pc : handle_nested_irq+0x28/0x144
[  128.042017] lr : handle_nested_irq+0x10/0x144
[  128.046360] sp : ffffffc0821b3d50
[  128.049658] x29: ffffffc0821b3d50 x28: ffffffc08009a720 x27: ffffff800007c8e0
[  128.056778] x26: ffffffc080099d0c x25: ffffff8001873d80 x24: ffffff800179e200
[  128.063898] x23: 0000000000000000 x22: 0000000000000001 x21: ffffff8000826080
[  128.071017] x20: 0000000000000000 x19: 0000000000000004 x18: ffffff801feca140
[  128.078137] x17: 0000000000000000 x16: 0000000000000000 x15: ffffff801feca940
[  128.085256] x14: 0000000000000000 x13: 0000000000000000 x12: ffffffc080cceed0
[  128.092375] x11: ffffffc0809e17b0 x10: 1ffffff000040d41 x9 : 0000000000000001
[  128.099494] x8 : ffffff8000206a00 x7 : 000000000000000f x6 : ffffff8000206a08
[  128.106613] x5 : 0000000000000000 x4 : ffffff8000206a08 x3 : 0000000000000001
[  128.113732] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 00000000000000ac
[  128.120851] Call trace:
[  128.123284]  handle_nested_irq+0x28/0x144
[  128.127279]  mt7530_irq_thread_fn+0xa4/0xc0
[  128.131450]  irq_thread_fn+0x28/0x94
[  128.135011]  irq_thread+0x170/0x260
[  128.138484]  kthread+0xd8/0xdc
[  128.141529]  ret_from_fork+0x10/0x20
[  128.145094] Code: d2800002 9102b000 52800023 f9800011 (885ffc01) 
[  128.151168] ---[ end trace 0000000000000000 ]---
[  128.159444] pstore: backend (ramoops) writing error (-28)
[  128.164827] Kernel panic - not syncing: Oops: Fatal exception
[  128.170554] SMP: stopping secondary CPUs
[  128.174464] Kernel Offset: disabled
[  128.177936] CPU features: 0x00,00000000,00000000,4200400b
[  128.183316] Memory Limit: none
[  128.189969] Rebooting in 3 seconds..

F0: 102B 0000
FA: 1040 0000
FA: 1040 0000 [0200]
F9: 0000 0000
V0: 0000 0000 [0001]
00: 0000 0000
BP: 2400 0041 [0000]
G0: 1190 0000
EC: 0000 0000 [1000]
T0: 0000 0141 [010F]
Jump to BL

NOTICE:  BL2: v2.6(release):8fc5fdf2f-dirty
NOTICE:  BL2: Built : 18:38:03, Jan 28 2024
NOTICE:  WDT: disabled
NOTICE:  EMI: Using DDR3 settings
NOTICE:  EMI: Detected DRAM size: 512MB
NOTICE:  EMI: complex R/W mem test passed
NOTICE:  SPI_NAND parses attributes from 

I also mounted the tp_data again, it doesn't auto mount it. I think I am gonna need some recompiling for wifi. Btw can I compile for 24.10.4?

I think the 1gbps lan/wan port needs to be lan only, the 2,5gb port acts as wan. And looks like the ports are wrongly assigned.

Edit: I think the last port is also assigned as a port 4(lan3), that’s why maybe it’s rebooting.

I thinks it’s also better to stay on snapshot for now, because it’s not stable yet.

Ok when I plug the each ports individually, this is more understandable:

So looking at it, 2.5gb wan is eth0, 1gb wan/lan will be lan0 and lan only, and then you have lan1,2,3.

You need to change port assingment in dts, and see what works.

Sadly I don't know how to change port assignment in dts, but I'll try.

You need to edit this portion:

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

                                port@0 {
                                        reg = <0>;
                                        label = "lan0";
                                };

                                port@1 {
                                        reg = <1>;
                                        label = "lan1";
                                };

                                port@2 {
                                        reg = <2>;
                                        label = "lan2";
                                };

                                port@3 {
                                        reg = <3>;
                                        label = "lan3";
                                };

                                port@6 {
                                        reg = <6>;
                                        label = "cpu";
                                        ethernet = <&gmac0>;
                                        phy-mode = "2500base-x";

                                        fixed-link {
                                                speed = <2500>;
                                                full-duplex;
                                                pause;

Ok I changed the DTS like this, but now guess what? LAN3 works this time, but LAN2 doesn't:

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

		/* 1G WAN/LAN olarak etiketli fiziksel jack */
		port@0 {
			reg = <0>;
			label = "lan0";     /* istersen "wan_lan" da diyebilirsin */
		};

		/* Fiziksel LAN1 */
		port@1 {
			reg = <1>;
			label = "lan1";
		};

		/* Fiziksel LAN2 */
		port@2 {
			reg = <2>;
			label = "lan2";
		};

		/* Bazı AX80 revizyonlarında port3 kullanılmıyor olabilir.
		   Eğer gerçekten bağlı ise label ver; değilse disable et. */
		port@3 {
			reg = <3>;
			status = "disabled";   /* ihtiyaca göre kaldıralım/aktif edelim */
			/* label = "lanX";  // eğer bağlıysa bunu açıp doğru etiketi ver */
		};

		/* Fiziksel LAN3 — sende şu an hiç log vermeyen port büyük ihtimalle bu */
		port@4 {
			reg = <4>;
			label = "lan3";
		};

		/* CPU uplink — 2.5G */
		port@6 {
			reg = <6>;
			label = "cpu";
			ethernet = <&gmac0>;
			phy-mode = "2500base-x";
			fixed-link {
				speed = <2500>;
				full-duplex;
			};
		};
	};

I only added initial support to git now. Nothing unstable. Just tp_data auto mount, then wifi eeprom
file symlinking. Other than that the file is very similiar to US version.

1 Like

Things are going good. work, MAC addresses are right this time. Thanks for @HateTM work in github.
What's working:
ALL LAN'S and 2.5G WAN work and 1G WAN/LAN too.
LEDS are kinda wrong, Wifi led is on even though it's actually off
Mac addresses are right, tp_data is mounted rightfully

Now you could give some installation instructions ?

Tbh one of my friends succeeded with this method without opening: https://github.com/aaronsvk/CVE-2022-30075/tree/main
But I couldn't do it. But he said he logged into TP-Link Tether app, maybe it triggered something. But, this scipt injects into DDNS on the ax80 stock interface. Maybe, if you can instead inject it to some wifi led buttons code or something, then pressing the button, it could of work. If you can, go ahead.
I used UART, UART is above the CPU there is 4 slots. From left to right: VCC(don't plug this); GND;RX;TX or might be GND;TX;RX try both.
Installation (UART)
Place OpenWrt initramfs image on tftp server with IP 192.168.1.2

Attach UART, switch on the router and interrupt the boot process by pressing 'Ctrl-C'

Load and run OpenWrt initramfs image:


      tftpboot initramfs-kernel.bin
      bootm

!!Attention!! is very important! After entering OpenWrt, please set / update the environment variables. But, this might not be that important, check with fw_printenv on ssh, if you have same records as these lines, then you don't need to apply these. Device doesn't have secure boot so.


fw_setenv bootargs "ubi.mtd=ubi0 console=ttyS0,115200n1 loglevel=8 earlycon=uart8250,mmio32,0x11002000 init=/etc/preinit"
fw_setenv mtdids "spi-nand0=spi-nand0"
fw_setenv mtdparts "spi-nand0:2M(boot),1M(u-boot-env),50M(ubi0),50M(ubi1),8M(userconfig),4M(tp_data),8M(mali_data)"
fw_setenv tp_boot_idx 0

Then scp the squashfs image, then run 'sysupgrade -n' with the sysupgrade OpenWrt image from console or Luci WebUI.

When will be the device accepted? Actually its been working for 3 days straight, no problems. Dont mind the uptime, electrical outage happened. Also most checks have passed. Even re-compiled the firmware to use zapret too. Even the USB works fine.

Anywhere from soon to never.

Did you read https://openwrt.org/submitting-patches ?

1 Like

Everything seems to be in order. No problems.

Hi. Thanks for adding support for this device, I would very much like to see it merged soon.

I am not a developer, nor have a github A/C, but I think there are some issues in your commit message:

  1. "mediatek: filogic: add TP-Link Archer AX80 v1 (EU) support" should appear in your PR title, not just in content head.

  2. about the hardware specification, from what I've gathered from the web, I think it's more like the Mercusys MR90X v1 than the Tp-link Archer AX80 v1 (US/RU): RAM is integrated inside SoC MT7986B, Wlan chip is MT7975, power supply is 12V 2A. But I could be wrong, UART boot log should reveal those.
    https://github.com/openwrt/openwrt/pull/12604
    https://www.tp-link.com/baltic/home-networking/wifi-router/archer-ax80/#specifications