Looking for support of TP-Link EAP225 v4

Hi there,

current iteration of TP-Links EAP225 is v4 which doesn't seem to be supported by OpenWrt.
Could I just try flashing a v3 version or how to find out what's needed to make OpenWrt compatible?

Regards,
Reah

Does this help?

The EAP225 v4 is likely to be very similar to the EAP225-Outdoor v3. You could try building your own image with the suggested changes for the Outdoor v3 (if you have serial console access for recovery).

A v3 firmware will most likely not be accepted by the device. Even if it was, it would brick your device, so I strongly advise against doing so.

Hi,

I got an TP-Link EAP225 v4 yesterday.
It seems, the main difference between v3 and v4 is the Ethernet Phy now from Realtek (RealTek 8211FS-CG)
(Probably same change as for TP-Link EAP225 Outdoor v3 )
For internal pictures, see FCC .
When connecting via SSH, the /etc/ folder suggests, that the vendor firmware is the same for EAP225 v3/v3.20/v4/outdoor-v1/outdoor-v3 .

I tried to write an adapted dts file, but the build failed the same as in the other thread regarding EAP225 Outdoor v3 with:

WARNING: Image file /home/xxx/openwrt/build_dir/target-mips_24kc_musl/linux-ath79_generic/tmp/openwrt-ath79-generic-tplink_eap225-v4-squashfs-sysupgrade.bin is too big:  > 15466496
Serial Dump / Bootlog
U-Boot 1.1.4--LSDK-10.2-00082-4-gfc48af86 (Nov 14 2021 - 12:06:52)

board956x - Dragonfly 1.0DRAM:  
sri
ath_ddr_initial_config(287): (ddr2 init)
ath_ddr_initial_config: DDR_EMR2_ADDRESS=0x180000bc, EMR2 value=0x80
ath_sys_frequency: ref_clk 25000000
ath_sys_frequency: cpu 775 ddr 650 ahb 258
Tap values = (0x10, 0x10, 0x10, 0x10)
128 MB
Top of RAM usable for U-Boot at: 88000000
Reserving 165k for U-Boot at: 87fd4000
Reserving 192k for malloc() at: 87fa4000
Reserving 44 Bytes for Board Info at: 87fa3fd4
Reserving 36 Bytes for Global Data at: 87fa3fb0
Reserving 128k for boot params() at: 87f83fb0
Stack Pointer at: 87f83f98
Now running in RAM - U-Boot at: 87fd4000
Flash Manuf Id 0x1c, DeviceId0 0x70, DeviceId1 0x18
flash size 16MB, sector count = 256
Flash: 16 MB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Setting 0x181162c0 to 0x40802100
Hit Ctrl+B to stop autoboot:  2  1  0 
Loading .text @ 0x80306880 (12496 bytes)
Loading .rodata.str1.4 @ 0x80309950 (676 bytes)
Loading .data @ 0x80309c00 (1287273 bytes)
Clearing .bss @ 0x80444070 (4202512 bytes)
## Starting application at 0x80306880 ...
BOOT CONFIG:     80208482

zimage at:     80309C00 80444069

Uncompressing Linux at load address 80060000

Now, booting the kernel...

[    0.000000] Linux version 3.3.8 (jenkins@sohoiapbuild) (gcc version 4.3.3 (GCC) ) #1 Mon Nov 15 16:32:45 CST 2021
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU revision is: 00019750 (MIPS 74Kc)
[    0.000000] SoC: Qualcomm Atheros QCA956X rev 0
[    0.000000] Clocks: CPU:775.000MHz, DDR:650.000MHz, AHB:258.333MHz, Ref:25.000MHz
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 08000000 @ 00000000 (usable)
[    0.000000] User-defined physical RAM map:
[    0.000000]  memory: 08000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Zone PFN ranges:
[    0.000000]   Normal   0x00000000 -> 0x00008000
[    0.000000] Movable zone start PFN for each node
[    0.000000] Early memory PFN ranges
[    0.000000]     0: 0x00000000 -> 0x00008000
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
[    0.000000] Kernel command line:  0x9f040000 console=ttyS0,115200 root=31:04 rootfstype=squashfs init=/init mtdparts=spi0.0:128k(u-boot),64k(pation-table),64k(product-info),1536k(kernel),13568k(rootfs),192k(config),512k(mutil-log),256k(oops),64k(ART) mem=128M board=AP152
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
[    0.000000] Writing ErrCtl register=00000000
[    0.000000] Readback ErrCtl register=00000000
[    0.000000] Memory: 126596k/131072k available (2034k kernel code, 4476k reserved, 500k data, 180k init, 0k highmem)
[    0.000000] SLUB: Genslabs=9, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:83
[    0.000000] Calibrating delay loop... 385.84 BogoMIPS (lpj=1929216)
[    0.060000] pid_max: default: 32768 minimum: 301
[    0.060000] Mount-cache hash table entries: 512
[    0.070000] NET: Registered protocol family 16
[    0.070000] gpiochip_add: registered GPIOs 0 to 22 on device: ath79
[    0.080000] MIPS: machine is Qualcomm Atheros AP152 reference board
[    0.600000] Max resets limit reached exiting...
[    0.610000] 
[    0.610000] WLAN firmware dump buffer allocation of 2097152 bytes @ address 0x87a00000- SUCCESS !!!
[    0.620000] registering PCI controller with io_map_base unset
[    0.830000] bio: create slab <bio-0> at 0
[    0.830000] PCI host bridge to bus 0000:00
[    0.830000] pci_bus 0000:00: root bus resource [mem 0x12000000-0x13ffffff]
[    0.840000] pci_bus 0000:00: root bus resource [io  0x0001]
[    0.840000] pci 0000:00:00.0: BAR 0: assigned [mem 0x12000000-0x121fffff 64bit]
[    0.850000] pci 0000:00:00.0: using irq 40 for pin 1
[    0.850000] Switching to clocksource MIPS
[    0.860000] NET: Registered protocol family 2
[    0.860000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.860000] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[    0.870000] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[    0.870000] TCP: Hash tables configured (established 4096 bind 4096)
[    0.880000] TCP reno registered
[    0.880000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.890000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.890000] NET: Registered protocol family 1
[    0.910000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.910000] msgmni has been set to 247
[    0.920000] io scheduler noop registered
[    0.920000] io scheduler deadline registered (default)
[    0.930000] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
[    0.950000] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11) is a 16550A
[    0.960000] console [ttyS0] enabled, bootconsole disabled
[    0.960000] console [ttyS0] enabled, bootconsole disabled
[    0.970000] m25p80 spi0.0: found en25q128a, expected m25p80
[    0.980000] m25p80 spi0.0: en25q128a (16384 Kbytes)
[    0.980000] 9 cmdlinepart partitions found on MTD device spi0.0
[    0.990000] Creating 9 MTD partitions on "spi0.0":
[    0.990000] 0x000000000000-0x000000020000 : "u-boot"
[    1.000000] 0x000000020000-0x000000030000 : "pation-table"
[    1.010000] 0x000000030000-0x000000040000 : "product-info"
[    1.010000] 0x000000040000-0x0000001c0000 : "kernel"
[    1.020000] 0x0000001c0000-0x000000f00000 : "rootfs"
[    1.030000] mtd: partition "rootfs" set to be root filesystem
[    1.030000] 0x000000f00000-0x000000f30000 : "config"
[    1.040000] 0x000000f30000-0x000000fb0000 : "mutil-log"
[    1.050000] 0x000000fb0000-0x000000ff0000 : "oops"
[    1.050000] 0x000000ff0000-0x000001000000 : "ART"
[    1.060000] ag71xx_mdio: probed
[    1.070000] eth0: Atheros AG71xx at 0xb9000000, irq 4
[    1.620000] ag71xx ag71xx.0: eth0: connected to PHY at ag71xx-mdio.0:06 [uid=001cc916, driver=RealTek 8211FS-CG PHY]
[    1.640000] TCP cubic registered
[    1.640000] NET: Registered protocol family 17
[    1.640000] 8021q: 802.1Q VLAN Support v1.8
[    1.650000] ### of_selftest(): No testcase data in device tree; not running tests
[    1.660000] tty_open: Opening ttyS0 and default set O_NONBLOCK...
[    1.670000] VFS: Mounted root (squashfs filesystem) readonly on device 31:4.
[    1.680000] Freeing unused kernel memory: 180k freed

init started: BusyBox v1.20.2 (2021-11-15 16:39:09 CST)

starting pid 220, tty '': '/etc/rc.d/rcS >/dev/[    2.260000] tty_open: Opening ttyS0 and default set O_NONBLOCK...
console 2>&1'
[NM_Debug](main) 01042: getopt_long: c=C 


[NM_Debug](main) 01042: getopt_long: c=ΓΏ 


[NM_Debug](main) 01125: excute the command: start=====>


[NM_Debug](nm_lock_init) 00149: create semaphore...

[NM_Debug](nm_lib_getProductInfoFromNvram) 00928: productinfo from NVRAM is (EAP225(TP-Link|UN|AC1350-D):4.0

key=BgIAAAAkAABSU0ExAAQAAAEAAQDZtUNzD6KsxO4Tfx/Sp8S7w8TwPWwoppXy77wSPNs5WoV+Wr4kh09nu70vHVmSPji5KFUG+hmRjapsJsIJj+M0Zmd4EycKY8r0Ea3D4XO/uvloX4VHVPsDZkm8Krian5iNy6BgApVlebx0zQxto0GkgvPBq1nhoZxJNapLghGO7w==

rsaKey=BgIAAACkAABSU0ExAAQAAAEAAQDZaGCNzHjzrgNoCjyHKa0TIkgmqE5kheNhZHs23TmAbHXN0dFwdNOqqDOTmTdoN1+zW6KY3YkkwNypoZbDTR3sKdSdIDTNnftfHhRAlR9l4lNnnvfbUWRDqaGD2nAkdasXXfD5c23COMvAEjLJXzwqZjNmj27ZgrrTlH9SoDPerg==

HWID=DFFBBEEBD86353E89FB87262F6678D5D

)



This board use 3.3.8
[    2.700000] mtdoops: Attached to MTD device 7
insmod: can't insert '/lib/modules/3.3.8/kernel/xt_iprange.ko': No such file or directory
[    3.000000] xt_time: kernel timezone is -0000
[    3.010000] nf_conntrack version 0.5.0 (1980 buckets, 15840 max)
[    3.160000] ip_tables: (C) 2000-2006 Netfilter Core Team
[    3.280000] Ebtables v2.0 registered
insmod: can't insert '/lib/modules/3.3.8/kernel/ts_kmp.ko': No such file or directory
insmod: can't insert '/lib/modules/3.3.8/kernel/br_filter.ko': No such file or directory
[    3.350000] ---portal module open ok
[    3.360000] Register vlan_manage hooks success.
insmod: can't insert '/lib/modules/3.3.8/kernel/statistics.ko': No such file or directory
[    3.410000] [Debug gpio_parse_conf:271] Open File /etc/EAP225_4.0/gpio.conf SUCCESS!!
[    3.430000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 14, readCount 256
[    3.440000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 44, readCount 256
[    3.440000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 6 , readCount 256
[    3.450000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 7 , readCount 256
[    3.460000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 2 , readCount 256
[    3.470000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 7 , readCount 256
[    3.470000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 44, readCount 256
[    3.480000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 6 , readCount 256
[    3.490000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 7 , readCount 256
[    3.500000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 2 , readCount 256
[    3.510000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 7 , readCount 256
[    3.510000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 44, readCount 256
[    3.520000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 7 , readCount 247
[    3.530000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 6 , readCount 240
[    3.540000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 6 , readCount 234
[    3.550000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 6 , readCount 228
[    3.550000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 2 , readCount 222
[    3.560000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 51, readCount 220
[    3.570000] [Debug gpio_parse_conf:360] Ignore line (0), skipLen 44, readCount 169
[    3.580000] [Debug gpio_parse_conf:388] GPIO Parse OK:  led_green   led(1) high(1) high(1) 7
[    3.590000] [Debug gpio_parse_conf:388] GPIO Parse OK:  led_yellow  led(1) high(1) low (0) 9
[    3.590000] [Debug gpio_parse_conf:388] GPIO Parse OK:  btn_reset   btn(2) low (0) high(1) 2
[    3.600000] [Debug btn_netlink_init:179] btn: create netlink socket SUCCESS.
[    3.610000] [Debug wdt_module_init:249] Create watchdog proc dir SUCCESS.
[    3.620000] [Debug led_entry_handler:771] Create led_green   proc dir SUCCESS.
[    3.620000] [Debug led_entry_handler:771] Create led_yellow  proc dir SUCCESS.
[    3.630000] [Debug btn_entry_handler:913] Init button: btn_reset 2 2 0 success.
[    3.700000] rate_limit: module license 'BSD' taints kernel.
[    3.700000] Disabling lock debugging due to kernel taint
wlanmonitor is not supported.
ap_watchdog is not supported.
Japan disaster mod[    3.820000] tty_open: Opening ttyS0 and default set O_NONBLOCK...
e is not supported

starting pid 347, tty '': '/sbin/getty ttyS0 115200'


 (none) mips #1 Mon Nov 15 16:32:45 CST 2021 (none)

(none) login: Into util_dbg_setMod, pModName(all), enable(1)
[    4.500000] [Debug btn_netlink_receive:72] BTN netlink with user space daemon 334 SUCCESS.
[Debug checkLedParamValid:343] Param: mode off  , delayon 0  , delayoff 0  , blinkCount 0.
[Debug checkLedParamValid:343] Param: mode off  , delayon 0  , delayoff 0  , blinkCount 0.
[Debug checkLedParamValid:343] Param: mode repeat, delayon 200, delayoff 200, blinkCount 0.
[Debug checkLedParamValid:343] Param: mode repeat, delayon 200, delayoff 200, blinkCount 0.
[Debug checkLedParamValid:343] Param: mode off  , delayon 0  , delayoff 0  , blinkCount 0.
[Debug ch[    4.630000] [Debug led_proc_write:639] Write led_yellow.
eckLedParamValid[    4.630000] [Debug led_common_write_proc:478] Execute LED action: :343] Param: mod	{ 1   0   0   0   0 }
e off  , delayon 0  , delayoff 0  , blinkCount 0.
[Debug checkLedParamValid:343] Param: mode repeat, delayon 500, delayoff 500, blinkCount 0.
[Debug checkLedParamValid:343] Param: mode repeat, delayon 500, delayoff 500, blinkCount 0.
[Debug checkLedParamValid:343] Param: mode off  , delayon 0  , delayoff 0  , blinkCount 0.
[Debug checkLedParamValid:343] Param: mode off  , delayon 0  , delayoff 0  , blinkCount 0.
[Debug checkLedParamValid:343] Param: mode off  , delayon 0  , delayoff 0  [    4.690000] [Debug led_proc_write:639] Write led_green.
, blinkCount 0.
[    4.700000] [Debug led_common_write_proc:478] Execute LED action: 
[Debug checkLed	{ 2   0   0   0   0 }
ParamValid:343] Param: mode repeat, delayon 200, delayoff 200, blinkCount 0.
[Debug checkLedParamValid:343] Param: mode off  , delayon 0  , delayoff 0  , blinkCount 0.
[Debug checkLedParamValid:343] Param: mode on   , delayon 0  , delayoff 0  , blinkCount 0.
[Debug checkLedParamValid:343] Param: mode off  , delayon 0  , delayoff 0  , blinkCount 0.
[Debug checkLedParamValid:343] Param: mode blink, delayon 500, delayoff 500, blinkCount 4.
[Debug checkLedParamValid:343] Param: mode disable, delayon 0  , delayoff 0  , blinkCount 0.
[Debug checkLedParamValid:343] Param: mode enable, delayon 0  , delayoff 0  , blinkCount 0.
[Debug checkLedParamValid:343] Param: mode blink, delayon 200, delayoff 200, blinkCount 3000.
[Debug checkLedParamValid:343] Param: mode stop , delayon 0  , delayoff 0  , blinkCount 0.
[Debug checkLedParamValid:343] Param: mode off  , delayon 0  , delayoff 0  , blinkCount 0.
[Debug checkLedParamValid:343] Param: mode repeat, delayon 4200, delayoff 800, blinkCount 0.
[Debug checkLedParamValid:343] Param: mode stop , delayon 0  , delayoff 0  , blinkCount 0.
LED_RESET
	{ led_green     off      1   0   0   0 }
	{ led_yellow    off      1   0   0   0 }
	{ led_yellow    repeat   1   200 200 0 }
	{ led_green     repeat   1   200 200 0 }
LED_UPDATE_START
	{ led_green     off      1   0   0   0 }
	{ led_yellow    off      1   0   0   0 }
	{ led_yellow    repeat   1   500 500 0 }
	{ led_green     repeat   1   500 500 0 }
LED_UPDATE_FINISH
	{ led_yellow    off      1   0   0   0 }
	{ led_green     off      1   0   0   0 }
LED_DUT_NO_CALDATA
	{ led_green     off      0   0   0   0 }
	{ led_yellow    repeat   4   200 200 0 }
LED_SYS_INIT_PROCESS
	{ led_yellow    off      0   0   0   0 }
	{ led_green     on       0   0   0   0 }
LED_SYS_INIT_OK
	{ led_yellow    off      0   0   0   0 }
	{ led_green     blink    0   500 500 4 }
LED_DISABLE_ALL
	{ led_green     disable  2   0   0   0 }
LED_ENABLE_ALL
	{ led_green     enable   0   0   0   0 }
LED_LOCATE
	{ led_green     blink    3   200 200 3000 }
LED_LOCATE_STOP
	{ led_green     stop     1   0   0   0 }
LED_ISOLATED_START
	{ led_yellow    off      0   0   0   0 }
	{ led_green     repeat   2   4200 800 0 }
LED_ISOLATED_FINISH
	{ led_green     stop     0   0   0   0 }
[Debug ledListenEventHandler:148] Accept a new client.
[Debug ledClientEventHandler:110] GPIOD received led rule: LED_SYS_INIT_PROCESS.

==============radio config============
radioType: 0x11
EIRP: 1
0.	radioID:0
	band:2
	mimo:3
	mimogain:5
	anttgain:4
	mode:7
	blockAcsBand:0
1.	radioID:1
	band:5
	mimo:2
	mimogain:3
	anttgain:5
	mode:14
	blockAcsBand:0
chanlimit:0
dfsImproveSupp:0
thermalSupp:0
	level[0] 0 0 0
	level[1] 0 0 0
	level[2] 0 0 0
	level[3] 0 0 0
QCA HAL BB reg: 
	CCA: 1
	 0x035f9c 
	AGC: 0
	 00000000 
	 00000000 
	PSD 1
	 00000000 
	 0x71733d01 
	 0xd0ad5c12 

==============radio config============
<debug>_radio_region_init(): 233  @ read next region flag, parse finish
<debug>_radio_region_init(): 262  @ region:276, parse channel num:13
<debug>_radio_region_init(): 233  @ read next region flag, parse finish
<debug>_radio_region_init(): 262  @ region:276, parse channel num:19
GBK essid(test)
UTF8 essid(test)
[Debug ledListenEventHandler:148] Accep[    5.920000] [Debug led_proc_write:639] Write led_green.
t a new client.
[    5.920000] [Debug led_common_write_proc:478] Execute LED action: 
[Debug ledClien	{ 5   0   0   0   0 }
tEventHandler:11[    5.940000] [NOTICE led_common_write_proc:515] pledconf->backup.mode 0 1
0] GPIOD received led rule: LED_ENABLE_ALL.
[    6.010000] 
[    6.010000] Disable VlanManage, data.enable(0), data.vid(1)
[    6.020000] mspi_read_id get id=0x1c
uid = 0x36 0x27 0x16 0x15 0x13 0x10 0xffffff8f 0x0 0x1 0x31 0x2d 0x50 0x0 0x0 0x0 0x0 

[NM_Debug](readFlashPublicKey) 00175: rsaKey=: BgIAAACkAABSU0ExAAQAAAEAAQDZaGCNzHjzrgNoCjyHKa0TIkgmqE5kheNhZHs23TmAbHXN0dFwdNOqqDOTmTdoN1+zW6KY3YkkwNypoZbDTR3sKdSdIDTNnftfHhRAlR9l4lNnnvfbUWRDqaGD2nAkdasXXfD5c23COMvAEjLJXzwqZjNmj27ZgrrTlH9SoDPerg==!


Rsa verify success
[    6.110000] 
[    6.110000] manage vlan set port: ssh (22), http (80), https (443)
[    6.120000] 
[    6.120000] manage vlan set port: ssh (22), http (80), https (443)
[    6.140000] mspi_read_id get id=0x1c
uid = 0x36 0x27 0x16 0x15 0x13 0x10 0xffffff8f 0x0 0x1 0x31 0x2d 0x50 0x0 0x0 0x0 0x0 

[NM_Debug](readFlashPublicKey) 00175: rsaKey=: BgIAAACkAABSU0ExAAQAAAEAAQDZaGCNzHjzrgNoCjyHKa0TIkgmqE5kheNhZHs23TmAbHXN0dFwdNOqqDOTmTdoN1+zW6KY3YkkwNypoZbDTR3sKdSdIDTNnftfHhRAlR9l4lNnnvfbUWRDqaGD2nAkdasXXfD5c23COMvAEjLJXzwqZjNmj27ZgrrTlH9SoDPerg==!


Rsa verify success
[    6.480000] tty_open: Opening ttyS0 and default set O_NONBLOCK...
***** EU276: copy /lib/firmware/EAP225_4.0/boarddata.bin *****
Generating 1024 bit rsa key, this may take a while...
[    7.100000] ath_tx99: Version 2.0
[    7.100000] Copyright (c) 2010 Atheros Communications, Inc, All Rights Reserved
Public key portion is:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCDgkkzjh2OhAwMIRji7OcOfvQm02D+vh8fdPqS2nXHS3HtioZNOmLxeP8CPmirHcvrXb1B7zTZSa0uTal1fkcb5FObKHyzLYDmA9jiUiCk2v813kFs53lYJzXqu+NseulUIXeZqUQ8s/EZSIe9WT2CXF/DdCDrYniCw+msatkQ4w== root@EAP225
Fingerprint: sha1!! 03:6d:72:95:e6:3f:d3:58:05:84:29:ac:1b:bb:6e:68:05:d5:27:50
Generating 1024 bit dss key, this may take a while...
[    9.000000] __ath_attach: Set global_scn[0]
[    9.000000] *** All the minfree values should be <= ATH_TXBUF-32, otherwise default value will be used instead ***
[    9.010000] ACBKMinfree = 48
[    9.010000] ACBEMinfree = 32
[    9.020000] ACVIMinfree = 16
[    9.020000] ACVOMinfree = 0
[    9.020000] CABMinfree = 48
[    9.030000] UAPSDMinfree = 0
[    9.030000] ATH_TXBUF=2700
[    9.070000] 
[    9.070000] ART Version : -48.0.0
[    9.070000] SW Image Version : -48.0.0.0.0
[    9.070000] Board Revision :  
[    9.080000] ar9300_attach: nf_2_nom -110 nf_2_max -60 nf_2_min -125 
[    9.090000] spectral_init_netlink 78 NULL SKB
[    9.090000] SPECTRAL : No ADVANCED SPECTRAL SUPPORT
[    9.100000] SPECTRAL :----- module attached
[    9.100000] ath_get_caps[6421] rx chainmask mismatch actual 7 sc_chainmak 0
[    9.110000] ath_get_caps[6396] tx chainmask mismatch actual 7 sc_chainmak 0
[    9.120000] band steering initialized for direct attach hardware 
[    9.130000] ath_attach_dfs[13193] dfsdomain 1
[    9.140000] dfs_attach: event log enabled by default
[    9.150000] SPECTRAL : module already attached
[    9.160000] ath_tx_paprd_init sc 86448000 PAPRD disabled in HAL
[    9.270000] PCI: Enabling device 0000:00:00.0 (0000 -> 0002)
[    9.270000] 
[    9.270000] __ol_ath_attach() Allocated scn 85a40380
[    9.290000] ol_ath_attach interface_id 1
[    9.300000] Chip id: 0xc, chip version: 0x1000000
[    9.300000] 
[    9.300000]  Target Version is 1000000
[    9.310000] 
[    9.310000]  Flash Download Address  c0000 
[    9.310000] ol_transfer_bin_file: flash data file defined
[    9.320000] Cal location [0]: 00004000
[    9.320000] 
[    9.320000]  wifi1 NAND FLASH Select OFFSET 0x5000
[    9.360000] qc98xx_verify_checksum: flash checksum passed: 0x 4a2
[    9.370000] ol_transfer_bin_file 3590: Download Flash data len 12064
[    9.400000] 
[    9.400000]  Board data initialized
[    9.730000] ol_ath_download_firmware :First OTP download and Execute is good address:0x6000 return param 4660
[    9.740000] ol_ath_download_firmware:##Board Id 24 , CHIP Id 0
[    9.770000] 
[    9.770000]  wifi1: Selecting board data file name boardData_2_0_QCA9888_5G_YA105.bin
[    9.770000] ol_transfer_bin_file: Board Data File download to address=0xc0000 file name=QCA9888/hw.2/boardData_2_0_QCA9888_5G_YA105.bin
[    9.870000] 
[    9.870000]  [Flash] : Ignore Module param
[   10.130000] ol_ath_download_firmware : Second OTP download and Execute is good, param=0x0 
[   10.280000] ol_transfer_bin_file: Downloading firmware file: QCA9888/hw.2/athwlan.bin
Public key portion is:
ssh-dss AAAAB3NzaC1kc3MAAACBANarLgZ5GFRxycTXdNk+ZMcB9DPwAyAFTqJpiXrNd0QAChcAy6iMTKBNzd+MnrO/C8Q4E/0enpmogsOiY96FBktEWMuI9XqESbNvH+hkRqw569ArK/UfAbJjIcaWv0ofaIvA0S2rhvwErpy1kvDR1Wt5djQqrLTt1NHVLpytKqvFAAAAFQDgNW6eNXpfF20CVBjmWem7Q9LaIwAAAIEAqZmdhQRo7s0x9SEYXKkYlZLmxhxDcGhr7krZX+LsU+XFIj8a0DEubxLp56pLlK8qk1NKi1Vq3JvPy4fQSieBKl+OJ24xXQY+FMFXbaKqFKhlaSkANdZU0i5cHhsm+YGDdPGjcIn5Lv2ThYi3eKXbuJZzan73jupXOQpQ6A1hC90AAACBANBhiWbsHu2Et9L4xqz1s3ytd/Lfdi7iuF0eeStZgz/XRzm+2EJzUVfVAaVQXuxyOsTTaCecztMeqLKpvSnJfs6L4pgDHqWcxyug1fCB3z2viCPoGEFT1lokqpbIbexVrjzoX4k1bzyzmLYWQFBbaKJqJRf1uPqQIJhSXCs/oVwi root@EAP225
Fingerprint: sha1!! 36:a3:13:54:46:70:72:b1:dd:b0:a3:0e:23:cd:e3:8b:23:1a:6c:47
[   12.160000] Startup Mode-0 set
[   12.160000] HTC Service:0x0300 ep:1 TX flow control disabled
[   12.170000] htt_peer_map_timer_init Enter pdev 85660000 hrtimer 85664800
[   12.180000] 
[   12.180000]  htt_alloc_peer_map_mem : Alloc Success : host q vaddr 856a0000 paddr 56a0000
[   12.190000] 
[   12.190000]  htt_alloc_peer_map_mem : Flush Interval Configured to 256 pkts
[   12.200000] HTC Service:0x0100 ep:2 TX flow control disabled
[   12.210000] Firmware_Build_Number:99 
[   12.210000] num_rf_chain:0x00000002  ht_cap_info:0x0000085b  vht_cap_info:0x339979f2  vht_supp_mcs:0x0000fffa
[   12.220000] 
[   12.220000]  RES CFG Support wmi_service_bitmap 9778 
[   12.230000] 
[   12.230000]  Sending Ext resource cfg: HOST PLATFORM as 1 and fw_feature_bitmap as 50 to TGT 
[   12.240000] ol_ath_alloc_host_mem_chunk req_id 2 idx 0 num_units 53 unit_len 256,
[   12.250000] ol_ath_alloc_host_mem_chunk req_id 3 idx 1 num_units 53 unit_len 1024,
[   12.260000] ol_ath_alloc_host_mem_chunk req_id 4 idx 2 num_units 53 unit_len 4096,
[   12.260000] ol_ath_alloc_host_mem_chunk req_id 1 idx 3 num_units 265 unit_len 872,
[   12.270000] ol_ath_alloc_host_mem_chunk req_id 1 idx 4 num_units 266 unit_len 872,
[   12.280000] ol_ath_alloc_host_mem_chunk req_id 5 idx 5 num_units 132 unit_len 1892,
[   12.290000] ol_ath_alloc_host_mem_chunk req_id 5 idx 6 num_units 133 unit_len 1892,
[   12.300000] ol_ath_alloc_host_mem_chunk req_id 5 idx 7 num_units 133 unit_len 1892,
[   12.310000] ol_ath_alloc_host_mem_chunk req_id 5 idx 8 num_units 133 unit_len 1892,
[   12.360000] wmi_ready_event_rx:  WMI UNIFIED READY event 
[   12.370000] spectral_init_netlink 78 NULL SKB
[   12.380000] dfs_attach: event log enabled by default
[   12.390000] 

[   12.390000] ****************************************************

[   12.400000]                   tp mesh init                   

[   12.400000] ****************************************************

[   12.410000] ol_ath_thermal_mitigation_attach: --
[   12.670000] ath_attach_dfs[13193] dfsdomain 1
[   12.670000] dfs_attach: event log enabled by default
Interface doesn't accept private ioctl...
HALDbg (8BE0): Operation not permitted
[   12.890000] wlan_vap_create : enter. devhandle=0x872f0380, opmode=IEEE80211_M_HOSTAP, flags=0x1
[   12.890000] 
[   12.900000] ieee80211_mbo_vattach:MBO Initialized 
[   12.900000] wlan_vap_create : exit. devhandle=0x872f0380, opmode=IEEE80211_M_HOSTAP, flags=0x1.
[   12.900000] 
[   12.910000] VAP device ath0 created osifp: (84dc8380) os_if: (872c4000)
ath0
[   12.930000] ath_attach_dfs[13193] dfsdomain 2
[   12.940000] dfs_attach: event log enabled by default
Interface doesn't accept private ioctl...
vhtsubfee (8BE0): Invalid argument
[   13.100000] siwfreq
[   13.100000] Set freq vap 0 stop send + 872c4000
[   13.100000] Set freq vap 0 stop send -872c4000
[   13.140000] Set wait done --872c4000
[   13.150000]  
[   13.150000]  DES SSID SET=test 
[   13.190000] Set beacon rate: 1000 
[   13.200000] wlan_set_param : This rate is not allowed. Please try a valid rate.
Interface doesn't accept private ioctl...
set_bcn_rate (8BE0): Invalid argument
[   13.210000] Set bcast rate: 1000 
[   13.220000] Rate is not allowed in current mode:
Interface doesn't accept private ioctl...
bcast_rate (8BE0): Invalid argument
[   13.230000] Set mcast rate: 1000 
[   13.230000] Rate is not allowed in current mode:
Interface doesn't accept private ioctl...
mcast_rate (8BE0): Invalid argument
[   13.240000] Set mgmt rate: 1000 
[   13.250000] Set data minrate: 0 
[   13.270000] Set sta minrate: 1000 
[   13.280000] Set disable CCK rate: 0 
Removing interface ath0 failed
FAIL
Configuration file: /tmp/ath0.ap_bss (phy ath0) --> new PHY
Line 6: DEPRECATED: 'dump_file' configuration variable is not used anymore
[   13.470000]  ieee80211_ioctl_siwmode: imr.ifm_active=131712, new mode=3, valid=1 
[   13.470000]  DEVICE IS DOWN ifname=ath0
ath0: [   13.480000]  DEVICE IS DOWN ifname=ath0
Could not connect to kernel driver
Using interface ath0 with hwaddr 14:eb:b6:bd:ca:62 and ssid "test"
[   13.620000] Warning: node not in table 0x872cc000
ath0: interface state UNINITIALIZED->ENABLED
ath0: AP-ENABLED 
OK
[   13.710000] ar9300_override_ini: reset PSD for ETSI
[   13.750000] isCountryCodeValid: EEPROM regdomain 0x0
Invalid command : HALDbg
Invalid command : chainmasksel
Interface doesn't accept private ioctl...
AMPDU (8BE0): Operation not permitted
Interface doesn't accept private ioctl...
AMPDUFrames (8BE0): Operation not permitted
Interface doesn't accept private ioctl...
AMPDULim (8BE0): Operation not permitted
[   13.810000] set improve dfs switch = 0
<error>radio_region_get[   13.860000] 
[   13.860000] manage vlan set ssid vlan: idx (0), intfName (ath0), vlan (0)
ChanCommonFlag(): 983  @ invalid chanIndex:0, current channelNum = 19
[   13.930000] tp mesh events being sent to PID:681
[Debug ledListenEventHandler:148] Accept a new client.
[   13.940000] [Debug led_proc_write:639] Write led_yellow.

[Debug ledClien[   13.940000] [Debug led_common_write_proc:478] Execute LED action: tEventHandler:11	{ 1   0   0   0   0 }
0] GPIOD received led rule: LED_SYS_INIT_OK.
[   13.960000] [Debug led_proc_write:639] Write led_green.
[   13.960000] [Debug led_common_write_proc:478] Execute LED action: 	{ 3   0   500 500 4 }
[   15.360000] Switching to Tx Mode-0
[   15.940000] mspi_read_id get id=0x1c
uid = 0x36 0x27 0x16 0x15 0x13 0x10 0xffffff8f 0x0 0x1 0x31 0x2d 0x50 0x0 0x0 0x0 0x0 

[NM_Debug](readFlashPublicKey) 00175: rsaKey=: BgIAAACkAABSU0ExAAQAAAEAAQDZaGCNzHjzrgNoCjyHKa0TIkgmqE5kheNhZHs23TmAbHXN0dFwdNOqqDOTmTdoN1+zW6KY3YkkwNypoZbDTR3sKdSdIDTNnftfHhRAlR9l4lNnnvfbUWRDqaGD2nAkdasXXfD5c23COMvAEjLJXzwqZjNmj27ZgrrTlH9SoDPerg==!


Rsa verify success
[   16.460000] ar9300_override_ini: reset PSD for ETSI
[   16.480000] mlme_create_infra_bss : Overriding HT40 channel with HT20 channel
[   16.500000] ar9300_override_ini: reset PSD for ETSI
[   16.520000] ar9300_override_ini: reset PSD for ETSI
[Debug ledListenEventHandler:148] Accept a new client.
[   16.930000] [Debug led_proc_write:639] Write led_green.

[Debug ledClien[   16.930000] [Debug led_common_write_proc:478] Execute LED action: tEventHandler:11	{ 7   0   0   0   0 }
0] GPIOD received led rule: LED_ISOLATED_FINISH.
now ok to start tddp---------------------
uclite init ok, now startup eap-cs ---------------------
[TDDP_DEBUG]<debug>[main:1290] tddp init---

httpMudCreate: MUD 0x4e0fd0 was created
httpMudCreate: MUD 0x4e0fd0 was created
[utilities_debug: httpSystemFirmwareInit:271]register rpm

httpServerCreate------------------

[utilities_debug: httpSystemFirmwareInit:271]register rpm

httpServerCreate------------------

httpServerCreate: try to add port 80

httpServerCreate: try to add port 22080

[   24.570000] tp dfs events being sent to PID:362
route: SIOCDELRT: No such process
[UNIX_SOCK][unix_sock_connSrv:301]connect to file(/var/run/srv/22) failed after retry(0), errno(2):No such file or directory
Into util_dbg_setMod, pModName(all), enable(1)
[NM_Debug](nm_region_getRegionName) 00192: Flash region info, code: 276, name: EU.

The standard builds for 22.03 are smaller than 6.5MB, well below the device limit of 13.5MB. Are you including a lot of custom packages to end up with an image that exceeds that limit?

The firmware-utils tool has been updated, and changes pulled into OpenWrt. This allows building EAP225v4 (and EAP225-Outdoor v3) images using the EAP225-V3 board ID.

This board still lacks a working DTS and makefile entry, right? I naively tried building the EAP225v3 target, and looking for a v4 compatible image, which of course wasn't there. I'll fiddle a bit with making a working image, based on the notes above.

Edit: I have a working image, using a bunch of what @yksflip did for the Outdoor v3. The secret to fix the error he ran into was to use "TPLINK_BOARD_ID := EAP225-V3" in generic-tp-link.mk.

It would be great to get support for these devices upstreamed. Should I go ahead and make a PR for what I have tested to be working, just noting that yksflip did most of the work? (Code is at https://github.com/jp-bennett/openwrt/commit/f1c2470db63dae3abccbd1186d392b134516e9e1)

I have a working patch for EAP225 v4, but @svanheule and I are investigating some driver issues with the relatek phy driver. My current patch:

diff --git a/target/linux/ath79/dts/qca9563_tplink_eap225-v4.dts b/target/linux/ath79/dts/qca9563_tplink_eap225-v4.dts
new file mode 100644
index 0000000000..73de898016
--- /dev/null
+++ b/target/linux/ath79/dts/qca9563_tplink_eap225-v4.dts
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qca9563_tplink_eap2x5-1port.dtsi"
+
+/ {
+	compatible = "tplink,eap225-v4", "qca,qca9563";
+	model = "TP-Link EAP225 v4";
+
+	aliases {
+		led-boot = &led_status_green;
+		led-failsafe = &led_status_amber;
+		led-running = &led_status_green;
+		led-upgrade = &led_status_amber;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_status_green: status_green {
+			label = "green:status";
+			gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
+			default-state = "on";
+		};
+
+		led_status_amber: status_amber {
+			label = "amber:status";
+			gpios = <&gpio 9 GPIO_ACTIVE_HIGH>;
+		};
+	};
+};
+
+&eth0 {
+	phy-handle = <&phy6>;
+};
+
+
diff --git a/target/linux/ath79/dts/qca9563_tplink_eap2x5-1port.dtsi b/target/linux/ath79/dts/qca9563_tplink_eap2x5-1port.dtsi
index e10c5dbb73..127741f644 100644
--- a/target/linux/ath79/dts/qca9563_tplink_eap2x5-1port.dtsi
+++ b/target/linux/ath79/dts/qca9563_tplink_eap2x5-1port.dtsi
@@ -105,6 +105,11 @@
 		reg = <4>;
 		reset-gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
 	};
+
+	phy6: ethernet-phy@6 {
+		reg = <6>;
+		reset-gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+	};
 };
 
 &eth0 {
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
index 2300480695..9364c363cf 100644
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -78,6 +78,7 @@ ath79_setup_interfaces()
 	tplink,eap225-outdoor-v1|\
 	tplink,eap225-v1|\
 	tplink,eap225-v3|\
+	tplink,eap225-v4|\
 	tplink,eap245-v1|\
 	tplink,re350k-v1|\
 	tplink,re355-v1|\
diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 668fd76af3..37147ecbee 100644
--- a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -254,6 +254,7 @@ case "$FIRMWARE" in
 		;;
 	tplink,eap225-outdoor-v1|\
 	tplink,eap225-v3|\
+	tplink,eap225-v4|\
 	tplink,eap225-wall-v2)
 		caldata_extract "art" 0x5000 0x2f20
 		ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary info 0x8) 1)
diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk
index fed572c884..da27df411b 100644
--- a/target/linux/ath79/image/generic-tp-link.mk
+++ b/target/linux/ath79/image/generic-tp-link.mk
@@ -423,6 +423,17 @@ define Device/tplink_eap225-v3
 endef
 TARGET_DEVICES += tplink_eap225-v3
 
+define Device/tplink_eap225-v4
+  $(Device/tplink-eap2x5)
+  SOC := qca9563
+  IMAGE_SIZE := 13824k
+  DEVICE_MODEL := EAP225
+  DEVICE_VARIANT := v4
+  DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9888-ct kmod-phy-realtek
+  TPLINK_BOARD_ID := EAP225-V3
+endef
+TARGET_DEVICES += tplink_eap225-v4
+
 define Device/tplink_eap225-wall-v2
   $(Device/tplink-eap2x5)
   SOC := qca9561

I am currently unsure, where CONFIG_REALTEK_PHY=y has to go.
Even when not using the driver, the EAP225 v4 works. But I think the correct driver should be used. See:

[    1.707475] ag71xx 19000000.eth: connected to PHY at mdio.0:06 [uid=001cc916, driver=Generic PHY]

vs.

[    1.737940] ag71xx 19000000.eth: connected to PHY at mdio.0:06 [uid=001cc916, driver=RTL8211F Gigabit Ethernet]

Looks almost exactly like my patchset.

I added the REALTEK_PHY line to target/linux/ath79/config-5.10 (see https://github.com/openwrt/openwrt/compare/master...jp-bennett:master), and that results in:

target/linux/ath79/config-5.10

What issues are you seeing with the driver?

Yes, the patches are pretty the same. My baseline was the patches for EAP225 Outdoor v3 as well.

Is the dts file qca9563_tplink_eap225-v4.dts missing your patch?

Adding the CONFIG_REALTEK_PHY=y to target/linux/ath79/config-5.10 didn't worked for me: results in using the Generic PHY driver.
Current issue is: I have to enable the driver via make kernel_menuconfig.
Next issue is probably the reset-line. When rebooting from openwrt into u-boot, the phy cannot be activated till a power cycle happens.

Yes, I missed adding the dts file to the commit. Added now, and squashed. Thanks for the catch.

Odd that the config line didn't work for you. Maybe try a distclean and then reapply the patch and build?

Did the factory firmware correctly reset the phy on reboot? If so, it's probably a different GPIO mapped to it. Either way, not the worst issue.

After setting up the openwrt git repo again and applying the patches, it indeed worked. So I messed up my repo before.

Reset Pin:
When reseting with the factory image, the u-boot can use tftp afterwards.
I tried to figure out where the reset pin of the PHY goes, but it seems, the reset pin only goes to a pull-up R779. I could not find a connection to the SoC using the continuity function of my multimeter and very small tips.

Hi,

I have tested the flashing procedure as described in this commit.
It worked as expected.

The PHY worked after a power cycle.
What's disappointing is that the PHY refused to work after a reboot.
What I have noted was the following line before connecting to the phy via MDIO.

[    6.767593] ag71xx: max retries for SGMII fixup exceeded

[    7.493274] mdio_bus mdio.0: MDIO device at address 4 is missing.
[    7.532477] ag71xx 19000000.eth: connected to PHY at mdio.0:06 [uid=001cc916, driver=RTL8211F Gigabit Ethernet]

The SGMII fixup retry takes nearly 6.5s instead of 1s. As I learned from the corresponding code, this fixup tries to reset the PHY, which does not work.

What I have tried so far

  • Removing reset-gpios from PHY@6.
  • Removing qca956x-serdes-fixup;
  • Combination of both
  • I tried with a 1 GBit Connection

In the datasheet of the PHY (RTL8211FS) there is a software reset possibility shown in Register 0.15 .
But I don't know if the soft reset would work in this state.

I looked a little more into the PHY's reset hardware.
When comparing the PCB between EAP225 v3 and v4, there is clearly visible, that GPIO 11 is missing in v4.

Pinout of the SoC

Picture of the SoC in EAP225 v4. GPIO11 is the pad in the centerline of the 3 at the white silkscreen marking C370.
There is no outgoing trace visible.

Picture of the SoC in EAP225 v3 from FCC (Page 7). GPIO 11 has an outgoing trace.

============

What I think would be possible:

Using the Supervisor Circuit to reset the PHY as well on a reboot.

The PHY's Reset Pullup is connected to the RESET output of the Supervisor Circuit PT7A7514W. The reset will be pulled down for 200ms in case, the voltage drops below an threshold, or the Watchdog input is triggered. This Input can be triggered by the SoC using GPIO 3 & 4 which are probably connected to a tri-state buffer in front of the Watchdog input. The GPIO 3 & 4 are described in target/linux/ath79/dts/qca956x.dtsi.

Connections:
GPIO3 - R293 - tri-state buffer - PT7A7514W
GPIO4 - R292 - (tri-state buffer) - R288 - VCC (pullup)

My knowledge on the device tree is somewhat limited, so I don't know if this reset behavior is already happening or possible.

1 Like

Interesting! I haven't seen such a supervisor chip on my EAP245v1v/3 devices, maybe I should give those another look. What pin on the PT7A7514 does GPIO3 connect to? Is the WDI pin of that supervisor also connected to something, or is it left floating?

Edit: assuming GPIO3 is connected to /MR on the supervisor, you should be able to use reset-gpios = <&gpio 3 GPIO_ACTIVE_LOW> on the phy.

This is neat; when I set gpio4 low, the EAP245 v1 reboots! As I traced out, gpio4 connects to /OE of an SN74LVC1G125 tri-state buffer (U28). gpio3 connects to the A input of the buffer, while the Y output connects to the /WDI signal of the PT7A7514 (U29). So I guess that's part of the design that hasn't changed yet.

The SN74LVC1G125 seems to match for U28. I couldn't find the chip marking before at the Internet.
When pulling the /OE low, the GPIO3 gets passed through the buffer to WDI Input. If GPIO3 does not output a rect wave signal, the PT7A7514 will reset after 1,6s.

For me it sounds like the Watchdog circuit in the SoC is not enabled, but described in the device tree.

I will try pulling GPIO4 low to check if the PHY will work after a reboot. But have to wait till beginning of next week for the test.
Is there a possibility to reset the SoC using the GPIO4 (+ disabled Watchdog) instead of the regular software reboot?

GPIO3 and GPIO4 are not currently described in the devicetree for the EAP devices. The SoC does have a WDT built in already, so OpenWrt currently uses that one.

GPIO3 could be used for a linux,wdt-gpio node, while providing a gpio-hog for GPIO4 to always enable the buffer. The design is a bit annoying, since the gpio_wdt driver would actually change the assigned line to a (high impedance) input to disable the WDT. With the buffer this is split over two separate lines, which the driver can't use without any modifications.

The gpio_wdt driver also does not provide a restart handler, so it cannot be used to reboot the system.

When GPIO3&4 are not used for the watchdog, GPIO4 could be used for rebooting the system.

I have tested GPIO4 to trigger PT7A7514 for getting the PHY to work again. In my tests, this worked reliably(*).

echo "4" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio4/direction
echo "0" > /sys/class/gpio/gpio4/value
 - waiting for 1.6s.

My thoughts:

  • Could the GPIO4 be pulled low while rebooting?
  • When the (SoC-) internal watchdog reboots the controller, the PHY will not work and needs an additional reboot. I guess this is not an expected behavior.

* Tested it 10 times.

You could use gpio-restart with a timeout of 1600 ms (or a bit more, might require a kernel module or extra CONFIG_ option). If you set the priority high enough, this would be used as the default reboot method.

Although I agree that it is not nice that the phy doesn't work after a warm boot, it's a bit of a hack though. :confused:

Do you have any idea of how stock FW can reboot properly? I saw TP-Link has uploaded a GPL archive for this device, perhaps that can give us some clues.