]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
qualcommax: ipq60xx: add support for TP-Link EAP620HD v3 21467/head
authorJohn Christoforidis <github@yanny.dev>
Thu, 8 Jan 2026 20:13:27 +0000 (22:13 +0200)
committerRobert Marko <robimarko@gmail.com>
Sun, 25 Jan 2026 15:17:08 +0000 (16:17 +0100)
Specifications:
  * SoC: Qualcomm IPQ6018/AP-CP03-C1 (64-bit Quad-core Arm Cortex-A53 @ 1.2 GHz)
  * RAM: 2x Zentel A3T4GF40BBF-HP (1 GiB DDR3-1866 (13-13-13))
  * Serial Port: 1v8 TTL 115200n8
  * Wi-Fi: Qualcomm QCN5022 (802.11ax/b/g/n)
  * Wi-Fi: Qualcomm QCN5052 (802.11ac/ax/n)
  * Ethernet: RTL8211FS (10/100/1000BASE-T)
  * Flash: GigaDevice PSR1GA30DT (128 MiB)
  * LEDs: 1x Blue Status (GPIO 35 Active High)
  * Buttons: 1x Reset (GPIO 9 Active Low)
  * FCCID: 2AXJ4EAP620HDV3
  * UART: 4-pin unpopulated header by the J1 footprint

Installation Instructions (Serial+TFTP):
  1. Locate the J1 footprint which contains 4 unpopulated pins
  where starting from the arrow, the pins are TX, RX, VCC and GND
  respectively.
  2. Connect a 1v8 TTL port to the 4 pins. Ensure RX and TX are crossed
     over.
  3. Copy openwrt-qualcommax-ipq60xx-tplink_eap620-hd-v3-initramfs-uImage.itb
  to your TFTP server.
  4. Power up the AP and hold Ctrl+B in the serial console (115200n8) until autoboot is halted.
  5. Run the following commands in the U-boot prompt:
     IPQ6018# setenv serverip <TFTP server addr>
     IPQ6018# setenv ipaddr <addr of the AP>
     IPQ6018# tftpboot 0x44000000 openwrt-qualcommax-ipq60xx-tplink_eap620-hd-v3-initramfs-uImage.itb
     IPQ6018# bootm 0x44000000
     You may need to type Ctrl+C and Enter before running these commands
     to clear invisible characters from the buffer.
  6. Run the following command in a terminal to copy the sysupgrade image
     to be installed (check IP address):
     $ scp -O openwrt-qualcommax-ipq60xx-tplink_eap620-hd-v3-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/
  7. Activate the OpenWrt serial console and run the following commands:
     # cd /tmp
     # sysupgrade -n openwrt-qualcommax-ipq60xx-tplink_eap620-hd-v3-squashfs-sysupgrade.bin
  8. The AP will reboot and OpenWrt will be successfully installed.

Installation Instructions (Web UI method):
  1. Set up the device using the vendor's web UI. Navigate to
     Management->SSH and enable the "SSH Login" checkbox. Select "Save".

  2. Connect to the machine via SSH:
     $ ssh -o hostkeyalgorithms=ssh-rsa <ip_of_device>

  3. Disable signature verification:
     $ cliclientd stopcs
  4. Rename the "-web-ui-factory" image to something less than 63
     characters, maintaining the ".bin" suffix.

  5. Go to System -> Firmware Update.
     Under "New Firmware File", click "Browse" and select the image.
     Select "Update" and confirm by clicking "OK".

  6. If the update fails, the web UI should show an error message.
     Otherwise, the device should reboot into OpenWrt.

Device support followed from EAP620HD v2 and eap6xx-outdoor for DTS.
Links: openwrt/openwrt#18227

Signed-off-by: John Christoforidis <github@yanny.dev>
Link: https://github.com/openwrt/openwrt/pull/21467
Signed-off-by: Robert Marko <robimarko@gmail.com>
package/boot/uboot-tools/uboot-envtools/files/qualcommax_ipq60xx
package/firmware/ipq-wifi/Makefile
target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-eap620-hd-v3.dts [new file with mode: 0644]
target/linux/qualcommax/image/ipq60xx.mk
target/linux/qualcommax/ipq60xx/base-files/etc/board.d/02_network
target/linux/qualcommax/ipq60xx/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
target/linux/qualcommax/ipq60xx/base-files/lib/preinit/09_mount_factory_data
target/linux/qualcommax/ipq60xx/base-files/lib/upgrade/platform.sh

index a06ffc1f36c5054977560d3687d13491ed583698..f56c75b0f1657b93f65a0aa09df7bd7df6f37105 100644 (file)
@@ -24,6 +24,7 @@ netgear,wax610|\
 netgear,wax610y|\
 tplink,eap610-outdoor|\
 tplink,eap623od-hd-v1|\
+tplink,eap620-hd-v3|\
 tplink,eap625-outdoor-hd-v1)
        ubootenv_add_mtd "0:appsblenv" "0x0" "0x40000" "0x20000"
        ;;
index 845909535dd6ddc4e1225f286ef6b40c4be16d33..6995b6bea4a812327dc3aa309aff8b493522a5b4 100644 (file)
@@ -84,6 +84,7 @@ ALLWIFIBOARDS:= \
        tplink_deco-x80-5g \
        tplink_eap610-outdoor \
        tplink_eap620hd-v1 \
+       tplink_eap620-hd-v3 \
        tplink_eap623-outdoor-hd-v1 \
        tplink_eap625-outdoor-hd-v1 \
        tplink_eap660hd-v1 \
@@ -269,6 +270,7 @@ $(eval $(call generate-ipq-wifi-package,spectrum_sax1v1k,Spectrum SAX1V1K))
 $(eval $(call generate-ipq-wifi-package,tplink_deco-x80-5g,TP-Link Deco X80-5G))
 $(eval $(call generate-ipq-wifi-package,tplink_eap610-outdoor,TPLink EAP610-Outdoor))
 $(eval $(call generate-ipq-wifi-package,tplink_eap620hd-v1,TP-Link EAP620 HD v1))
+$(eval $(call generate-ipq-wifi-package,tplink_eap620-hd-v3,TP-Link EAP620 HD v3))
 $(eval $(call generate-ipq-wifi-package,tplink_eap623-outdoor-hd-v1,TP-Link EAP623-Outdoor HD v1))
 $(eval $(call generate-ipq-wifi-package,tplink_eap625-outdoor-hd-v1,TP-Link EAP625-Outdoor HD v1))
 $(eval $(call generate-ipq-wifi-package,tplink_eap660hd-v1,TP-Link EAP660 HD v1))
diff --git a/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-eap620-hd-v3.dts b/target/linux/qualcommax/files/arch/arm64/boot/dts/qcom/ipq6018-eap620-hd-v3.dts
new file mode 100644 (file)
index 0000000..fd7b9c5
--- /dev/null
@@ -0,0 +1,50 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+/dts-v1/;
+
+#include "ipq6018-tplink-eap6xx-outdoor.dtsi"
+
+/ {
+       model = "TP-Link EAP620HD v3";
+       compatible = "tplink,eap620-hd-v3", "qcom,ipq6018";
+
+       /* Delete EAP6xx outdoor leds node to redefine it. */
+       /delete-node/ leds;
+
+       aliases {
+               led-boot = &led_status_blue;
+               led-failsafe = &led_status_blue;
+               led-running = &led_status_blue;
+               led-upgrade = &led_status_blue;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_status_blue: status-blue {
+                       function = LED_FUNCTION_STATUS;
+                       gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_BLUE>;
+               };
+       };
+};
+
+&mdio {
+       rtl8211f_4: ethernet-phy@4 {
+               reg = <4>;
+               compatible = "ethernet-phy-ieee802.3-c22";
+       };
+};
+
+&tlmm {
+       gpio-reserved-ranges = <20 1>;
+};
+
+&switch {
+       switch_mac_mode1 = <MAC_MODE_SGMII_PLUS>;
+};
+
+&wifi {
+       qcom,ath11k-calibration-variant = "TP-Link-EAP620-HD-v3";
+       status = "okay";
+};
index c9e0569bbd724bd077fea2a1ef14e1bc80d73c06..ecaa8479a062d5db43e3c33db39aebf074a452b2 100644 (file)
@@ -251,6 +251,26 @@ define Device/tplink_eap625-outdoor-hd-v1
 endef
 TARGET_DEVICES += tplink_eap625-outdoor-hd-v1
 
+define Device/tplink_eap620-hd-v3
+       $(call Device/FitImage)
+       $(call Device/UbiFit)
+       DEVICE_VENDOR := TP-Link
+       DEVICE_MODEL := EAP620 HD v3
+       BLOCKSIZE := 128k
+       PAGESIZE := 2048
+       SOC := ipq6018
+       DEVICE_PACKAGES := ipq-wifi-tplink_eap620-hd-v3
+       IMAGES += web-ui-factory.bin
+       IMAGE/web-ui-factory.bin := append-ubi | tplink-image-2022
+       TPLINK_SUPPORT_STRING := SupportList:\r\n \
+               EAP620 HD(TP-Link|UN|AX1800-D):3.0\r\n \
+               EAP620 HD(TP-Link|CA|AX1800-D):3.0\r\n \
+               EAP620 HD(TP-Link|JP|AX1800-D):3.0\r\n \
+               EAP620 HD(TP-Link|EG|AX1800-D):3.0\r\n
+
+endef
+TARGET_DEVICES += tplink_eap620-hd-v3
+
 define Device/yuncore_fap650
        $(call Device/FitImage)
        $(call Device/UbiFit)
index f8a43d84f4e0de86e5225786d3231b812dd529dc..ceafb4027bd64e7041578322fa8d8802558293ad 100644 (file)
@@ -40,6 +40,7 @@ ipq60xx_setup_interfaces()
        netgear,wax610y|\
        tplink,eap610-outdoor|\
        tplink,eap623od-hd-v1|\
+       tplink,eap620-hd-v3|\
        tplink,eap625-outdoor-hd-v1)
                ucidef_set_interface_lan "lan" "dhcp"
                ;;
@@ -66,6 +67,7 @@ ipq60xx_setup_macs()
                label_mac=$lan_mac
                ;;
        tplink,eap610-outdoor|\
+       tplink,eap620-hd-v3|\
        tplink,eap623od-hd-v1|\
        tplink,eap625-outdoor-hd-v1)
                label_mac=$(get_mac_binary /tmp/factory_data/default-mac 0)
index a8ac052dc488df0ac370aa3f5b21463dfa4fd2cc..5ed4f5966f049caeb7dad0853f00c9093f25c76c 100644 (file)
@@ -70,6 +70,13 @@ case "$FIRMWARE" in
                ath11k_patch_mac $(macaddr_add $label_mac 1) 0
                ath11k_set_macflag
                ;;
+       tplink,eap620-hd-v3)
+               caldata_from_file "/tmp/factory_data/radio" 0 0x20000
+               label_mac=$(get_mac_binary /tmp/factory_data/default-mac 0)
+               ath11k_patch_mac $label_mac 1
+               ath11k_patch_mac $(macaddr_add $label_mac 1) 0
+               ath11k_set_macflag
+               ;;
        yuncore,fap650)
                caldata_extract "0:art" 0x1000 0x20000
                ;;
index a37050f4079c55888eb63dd395ecd754be70bac0..09ca32f08c4371928619b989820929e819058acf 100644 (file)
@@ -8,6 +8,7 @@ preinit_mount_factory_data() {
 
        case $(board_name) in
        tplink,eap610-outdoor|\
+       tplink,eap620-hd-v3|\
        tplink,eap623od-hd-v1|\
        tplink,eap625-outdoor-hd-v1)
                mtd_path=$(find_mtd_chardev "factory_data")
index d230c32e2e38d6fc73bc1a786ff16cd6e068b347..a120f538b55f77fbae01f9f3f80e21a1eaf4f298 100644 (file)
@@ -202,6 +202,7 @@ platform_do_upgrade() {
                nand_do_upgrade "$1"
                ;;
        tplink,eap610-outdoor|\
+       tplink,eap620-hd-v3|\
        tplink,eap623od-hd-v1|\
        tplink,eap625-outdoor-hd-v1)
                tplink_do_upgrade "$1"