Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 0x4A6F-master
  • 0x4A6F-rpi4
  • autinerd/experimental-openwrt-24.10
  • experimental
  • feature/addMikrotikwAP
  • master
  • nrb/airmax-test
  • nrb/ar9344-reset-sequence
  • nrb/gluon-master-cpe510
  • nrb/test-radv-filter
  • nrbffs/fastd-remove-delay
  • nrbffs/netgear-ex6120
  • v2018.2.2-ffs
  • v2018.2.3-ffs
  • v2019.1-ffs
  • v2019.1.1-ffs
  • v2019.1.2-ffs
  • v2020.1-ffs
  • v2020.1.1-ffs
  • v2020.1.3-ffs
  • v2020.2-ffs
  • v2020.2.1-ffs
  • v2020.2.2-ffs
  • v2020.2.3-ffs
  • v2021.1-ffs
  • v2021.1.1-ffs
  • v2021.1.2-ffs
  • v2022.1.1-ffs
  • v2022.1.3-ffs
  • v2022.1.4-ffs
  • v2023.1-ffs
  • v2023.2-ffs
  • v2023.2.2-ffs
  • v2023.2.3-ffs
  • v2023.2.4-ffs
  • experimental-2022-09-24
  • experimental-2022-09-24-base
  • experimental-2023-03-11
  • experimental-2023-03-11-base
  • experimental-2023-03-12
  • experimental-2023-03-12-base
  • experimental-2023-03-16
  • experimental-2023-03-16-base
  • experimental-2023-03-20
  • experimental-2023-03-20-base
  • experimental-2023-03-23
  • experimental-2023-03-23-base
  • experimental-2023-03-25
  • experimental-2023-03-25-base
  • experimental-2023-03-26
  • experimental-2023-03-26-base
  • experimental-2023-03-30
  • experimental-2023-03-30-base
  • experimental-2023-03-31
  • experimental-2023-03-31-base
  • experimental-2023-04-01
  • experimental-2023-04-01-base
  • experimental-2023-04-08
  • experimental-2023-04-08-base
  • experimental-2023-04-10
  • experimental-2023-04-10-base
  • experimental-2023-04-13
  • experimental-2023-04-13-base
  • experimental-2023-04-15
  • experimental-2023-04-15-base
  • experimental-2023-04-16
  • experimental-2023-04-16-base
  • experimental-2023-04-18
  • experimental-2023-04-18-base
  • experimental-2023-04-20
  • experimental-2023-04-20-base
  • experimental-2023-04-26
  • experimental-2023-04-26-base
  • experimental-2023-04-28
  • experimental-2023-04-28-base
  • experimental-2023-04-30
  • experimental-2023-04-30-base
  • experimental-2023-05-02
  • experimental-2023-05-02-base
  • experimental-2023-05-03
  • experimental-2023-05-03-base
  • experimental-2023-05-12
  • experimental-2023-05-12-base
  • experimental-2023-05-21
  • experimental-2023-05-21-base
  • experimental-2023-05-25
  • experimental-2023-05-25-base
  • experimental-2023-07-02
  • experimental-2023-07-02-base
  • experimental-2023-07-04
  • experimental-2023-07-04-base
  • experimental-2023-07-12
  • experimental-2023-07-12-base
  • experimental-2023-07-16
  • experimental-2023-07-16-base
  • experimental-2023-08-04
  • experimental-2023-08-04-base
  • experimental-2023-08-10
  • experimental-2023-08-10-base
  • experimental-2023-09-08
  • experimental-2023-09-08-base
  • experimental-2023-09-09
  • experimental-2023-09-09-base
  • experimental-2023-09-10
  • experimental-2023-09-10-base
  • experimental-2023-09-11
  • experimental-2023-09-11-base
  • experimental-2023-09-12
  • experimental-2023-09-12-base
  • experimental-2023-09-13
  • experimental-2023-09-13-base
  • experimental-2023-09-15
  • experimental-2023-09-15-base
  • experimental-2023-09-16
  • experimental-2023-09-16-base
  • experimental-2023-09-18
  • experimental-2023-09-18-base
  • experimental-2023-09-20
  • experimental-2023-09-20-base
  • experimental-2023-09-27
  • experimental-2023-09-27-base
  • experimental-2023-09-28
  • experimental-2023-09-28-base
  • experimental-2023-09-29
  • experimental-2023-09-29-base
  • experimental-2023-10-02
  • experimental-2023-10-02-base
  • experimental-2023-10-13
  • experimental-2023-10-13-base
  • experimental-2023-10-14
  • experimental-2023-10-14-base
  • experimental-2023-10-16
  • experimental-2023-10-16-base
  • experimental-2023-10-23
  • experimental-2023-10-23-base
135 results

Target

Select target project
  • firmware/gluon
  • 0x4A6F/gluon
  • patrick/gluon
3 results
Select Git revision
  • 0x4A6F-master
  • 0x4A6F-rpi4
  • autinerd/experimental-openwrt-24.10
  • experimental
  • feature/addMikrotikwAP
  • master
  • nrb/airmax-test
  • nrb/ar9344-reset-sequence
  • nrb/gluon-master-cpe510
  • nrb/test-radv-filter
  • nrbffs/fastd-remove-delay
  • nrbffs/netgear-ex6120
  • v2018.2.2-ffs
  • v2018.2.3-ffs
  • v2019.1-ffs
  • v2019.1.1-ffs
  • v2019.1.2-ffs
  • v2020.1-ffs
  • v2020.1.1-ffs
  • v2020.1.3-ffs
  • v2020.2-ffs
  • v2020.2.1-ffs
  • v2020.2.2-ffs
  • v2020.2.3-ffs
  • v2021.1-ffs
  • v2021.1.1-ffs
  • v2021.1.2-ffs
  • v2022.1.1-ffs
  • v2022.1.3-ffs
  • v2022.1.4-ffs
  • v2023.1-ffs
  • v2023.2-ffs
  • v2023.2.2-ffs
  • v2023.2.3-ffs
  • v2023.2.4-ffs
  • experimental-2022-09-24
  • experimental-2022-09-24-base
  • experimental-2023-03-11
  • experimental-2023-03-11-base
  • experimental-2023-03-12
  • experimental-2023-03-12-base
  • experimental-2023-03-16
  • experimental-2023-03-16-base
  • experimental-2023-03-20
  • experimental-2023-03-20-base
  • experimental-2023-03-23
  • experimental-2023-03-23-base
  • experimental-2023-03-25
  • experimental-2023-03-25-base
  • experimental-2023-03-26
  • experimental-2023-03-26-base
  • experimental-2023-03-30
  • experimental-2023-03-30-base
  • experimental-2023-03-31
  • experimental-2023-03-31-base
  • experimental-2023-04-01
  • experimental-2023-04-01-base
  • experimental-2023-04-08
  • experimental-2023-04-08-base
  • experimental-2023-04-10
  • experimental-2023-04-10-base
  • experimental-2023-04-13
  • experimental-2023-04-13-base
  • experimental-2023-04-15
  • experimental-2023-04-15-base
  • experimental-2023-04-16
  • experimental-2023-04-16-base
  • experimental-2023-04-18
  • experimental-2023-04-18-base
  • experimental-2023-04-20
  • experimental-2023-04-20-base
  • experimental-2023-04-26
  • experimental-2023-04-26-base
  • experimental-2023-04-28
  • experimental-2023-04-28-base
  • experimental-2023-04-30
  • experimental-2023-04-30-base
  • experimental-2023-05-02
  • experimental-2023-05-02-base
  • experimental-2023-05-03
  • experimental-2023-05-03-base
  • experimental-2023-05-12
  • experimental-2023-05-12-base
  • experimental-2023-05-21
  • experimental-2023-05-21-base
  • experimental-2023-05-25
  • experimental-2023-05-25-base
  • experimental-2023-07-02
  • experimental-2023-07-02-base
  • experimental-2023-07-04
  • experimental-2023-07-04-base
  • experimental-2023-07-12
  • experimental-2023-07-12-base
  • experimental-2023-07-16
  • experimental-2023-07-16-base
  • experimental-2023-08-04
  • experimental-2023-08-04-base
  • experimental-2023-08-10
  • experimental-2023-08-10-base
  • experimental-2023-09-08
  • experimental-2023-09-08-base
  • experimental-2023-09-09
  • experimental-2023-09-09-base
  • experimental-2023-09-10
  • experimental-2023-09-10-base
  • experimental-2023-09-11
  • experimental-2023-09-11-base
  • experimental-2023-09-12
  • experimental-2023-09-12-base
  • experimental-2023-09-13
  • experimental-2023-09-13-base
  • experimental-2023-09-15
  • experimental-2023-09-15-base
  • experimental-2023-09-16
  • experimental-2023-09-16-base
  • experimental-2023-09-18
  • experimental-2023-09-18-base
  • experimental-2023-09-20
  • experimental-2023-09-20-base
  • experimental-2023-09-27
  • experimental-2023-09-27-base
  • experimental-2023-09-28
  • experimental-2023-09-28-base
  • experimental-2023-09-29
  • experimental-2023-09-29-base
  • experimental-2023-10-02
  • experimental-2023-10-02-base
  • experimental-2023-10-13
  • experimental-2023-10-13-base
  • experimental-2023-10-14
  • experimental-2023-10-14-base
  • experimental-2023-10-16
  • experimental-2023-10-16-base
  • experimental-2023-10-23
  • experimental-2023-10-23-base
135 results
Show changes
Commits on Source (2)
From: Paul Maruhn <paulmaruhn@posteo.de>
Date: Tue, 22 Mar 2022 21:06:42 +0100
Subject: ath79: support for TP-Link EAP225-Outdoor v3
This model is almost identical to the EAP225-Outdoor v1.
Major difference is the RTL8211fs PHY Chipset.
Signed-off-by: Philipp Rothmann <philipprothmann@posteo.de>
diff --git a/target/linux/ath79/config-5.10 b/target/linux/ath79/config-5.10
index 8c662173efb8e6873f9c1dfba9acabb029e43025..942d43096e5d3f74036d976e5ae151b3047331dc 100644
--- a/target/linux/ath79/config-5.10
+++ b/target/linux/ath79/config-5.10
@@ -202,3 +202,4 @@ CONFIG_TICK_CPU_ACCOUNTING=y
CONFIG_TINY_SRCU=y
CONFIG_USB_SUPPORT=y
CONFIG_USE_OF=y
+CONFIG_REALTEK_PHY=y
diff --git a/target/linux/ath79/dts/qca9563_tplink_eap225-outdoor-v3.dts b/target/linux/ath79/dts/qca9563_tplink_eap225-outdoor-v3.dts
new file mode 100644
index 0000000000000000000000000000000000000000..94ea216922b3808b98ed841ceb0ac7c8fca9e0ef
--- /dev/null
+++ b/target/linux/ath79/dts/qca9563_tplink_eap225-outdoor-v3.dts
@@ -0,0 +1,92 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qca9563_tplink_eap2x5-1port.dtsi"
+
+/ {
+ compatible = "tplink,eap225-outdoor-v3", "qca,qca9563";
+ model = "TP-Link EAP225-Outdoor v3";
+
+ 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_LOW>;
+ default-state = "on";
+ };
+
+ led_status_amber: status_amber {
+ label = "amber:status";
+ gpios = <&gpio 9 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&eth0 {
+ phy-handle = <&phy6>;
+};
+
+&spi {
+ status = "okay";
+
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <25000000>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "u-boot";
+ reg = <0x000000 0x020000>;
+ read-only;
+ };
+
+ partition@20000 {
+ label = "partition-table";
+ reg = <0x020000 0x010000>;
+ read-only;
+ };
+
+ info: partition@30000 {
+ label = "info";
+ reg = <0x030000 0x010000>;
+ read-only;
+ };
+
+ partition@40000 {
+ compatible = "openwrt,elf";
+ label = "firmware";
+ reg = <0x040000 0xec0000>;
+ };
+
+ partition@f00000 {
+ label = "config";
+ reg = <0xf00000 0x030000>;
+ read-only;
+ };
+
+ partition@f30000 {
+ label = "log";
+ reg = <0xf30000 0x0c0000>;
+ read-only;
+ };
+
+ art: partition@ff0000 {
+ label = "art";
+ reg = <0xff0000 0x010000>;
+ read-only;
+ };
+ };
+ };
+};
diff --git a/target/linux/ath79/dts/qca9563_tplink_eap2x5-1port.dtsi b/target/linux/ath79/dts/qca9563_tplink_eap2x5-1port.dtsi
index e10c5dbb739373faffef4d64fa28964a3b780b75..0fb25f480c5b5477974f9008bf6afaf6fdb760f5 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>;
+
+ };
};
&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 258b0814424da39e9083b529cb154c5340c5bc0b..59e60ca85e497492161d1b6727a3ebc203f94abb 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
@@ -76,6 +76,7 @@ ath79_setup_interfaces()
tplink,cpe610-v2|\
tplink,cpe710-v1|\
tplink,eap225-outdoor-v1|\
+ tplink,eap225-outdoor-v3|\
tplink,eap225-v1|\
tplink,eap225-v3|\
tplink,eap245-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 668fd76af3a43afabd5c1eee0246a56009d426da..a1b2201fee553c646242e1dec369e410546d25df 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
@@ -253,6 +253,7 @@ case "$FIRMWARE" in
/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
;;
tplink,eap225-outdoor-v1|\
+ tplink,eap225-outdoor-v3|\
tplink,eap225-v3|\
tplink,eap225-wall-v2)
caldata_extract "art" 0x5000 0x2f20
diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk
index fed572c884c75bd21081c7c22dd4652ecefdd993..3d3a45711302b7a73c914d80ec0d309878813149 100644
--- a/target/linux/ath79/image/generic-tp-link.mk
+++ b/target/linux/ath79/image/generic-tp-link.mk
@@ -401,6 +401,17 @@ define Device/tplink_eap225-outdoor-v1
endef
TARGET_DEVICES += tplink_eap225-outdoor-v1
+define Device/tplink_eap225-outdoor-v3
+ $(Device/tplink-eap2x5)
+ SOC := qca9563
+ IMAGE_SIZE := 13824k
+ DEVICE_MODEL := EAP225-Outdoor
+ DEVICE_VARIANT := v3
+ DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9888-ct
+ TPLINK_BOARD_ID := EAP225-V3
+endef
+TARGET_DEVICES += tplink_eap225-outdoor-v3
+
define Device/tplink_eap225-v1
$(Device/tplink-eap2x5)
SOC := qca9563
From: Sander Vanheule <sander@svanheule.net>
Date: Mon, 27 Jun 2022 21:24:24 +0200
Subject: firmware-utils: bump to git HEAD
The support-list partition for the EAP225-V3 board ID became larger than
the allocated size, resulting in factory image generation for the
EAP225-Outdoor v3 and EAP225 v3 to fail. The make directive
Build/tplink-safeloader ignores this failure however, resulting in a
seemingly successful build with empty factory images.
Included changes:
e609c5d75186 tplink-safeloader: drop unqualified EAP225-V3 IDs
Signed-off-by: Sander Vanheule <sander@svanheule.net>
diff --git a/tools/firmware-utils/Makefile b/tools/firmware-utils/Makefile
index 2534cec54383b28c4c93d0f4f70263a9af0274cb..7dc406e755cd9c56e4ec6de42bcf9a93aabb2581 100644
--- a/tools/firmware-utils/Makefile
+++ b/tools/firmware-utils/Makefile
@@ -12,8 +12,8 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git
PKG_SOURCE_DATE:=2022-04-25
-PKG_SOURCE_VERSION:=ddc3e00e314d3fbc3f9faab2d07395722ce9b01a
-PKG_MIRROR_HASH:=246fc1d72d3a8cdb4072d81e033c92abaf614acd6f35a10fffd029d5c7f9303b
+PKG_SOURCE_VERSION:=e609c5d751868ae823c236332c76ce3c50acdd2e
+PKG_MIRROR_HASH:=f1a5af565bff50ccc99471a2be71636ed685dd15bfb9b162be9acf8ee28033a6
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/cmake.mk
From: Paul Maruhn <paulmaruhn@posteo.de>
Date: Tue, 22 Mar 2022 21:06:42 +0100
Subject: ath79: support for TP-Link EAP225-Outdoor v3
[ nrb: backported from 7e4de89e631aaf56be5375662b7d5ed0f27e26f6 ]
This model is almost identical to the EAP225-Outdoor v1.
Major difference is the RTL8211FS PHY Chipset.
Device specifications:
* SoC: QCA9563 @ 775MHz
* Memory: 128MiB DDR2
* Flash: 16MiB SPI-NOR
* Wireless 2.4GHz (SoC): b/g/n 2x2
* Wireless 5GHz (QCA9886): a/n/ac 2x2 MU-MIMO
* Ethernet (RTL8211FS): 1× 1GbE, PoE
Flashing instructions:
* ssh into target device with recent (>= v1.6.0) firmware
* run `cliclientd stopcs` on target device
* upload factory image via web interface
Debricking:
To recover the device, you need access to the serial port. This requires
fine soldering to test points, or the use of probe pins.
* Open the case and solder wires to the test points: RXD, TXD and TPGND4
* Use a 3.3V UART, 115200 baud, 8n1
* Interrupt bootloader by holding ctrl+B during boot
* upload initramfs via built-in tftp client and perform sysupgrade
setenv ipaddr 192.168.1.1 # default, change as required
setenv serverip 192.168.1.10 # default, change as required
tftp 0x80800000 initramfs.bin
bootelf $fileaddr
MAC addresses:
MAC address (as on device label) is stored in device info partition at
an offset of 8 bytes. ath9k device has same address as ethernet, ath10k
uses address incremented by 1.
From stock ifconfig:
ath0 Link encap:Ethernet HWaddr D8:...:2E
ath10 Link encap:Ethernet HWaddr D8:...:2F
br0 Link encap:Ethernet HWaddr D8:...:2E
eth0 Link encap:Ethernet HWaddr D8:...:2E
Signed-off-by: Paul Maruhn <paulmaruhn@posteo.de>
Co-developed-by: Philipp Rothmann <philipprothmann@posteo.de>
Signed-off-by: Philipp Rothmann <philipprothmann@posteo.de>
[Add pre-calibraton nvme-cells]
Tested-by: Tido Klaassen <tido_ff@4gh.eu>
Signed-off-by: Nick Hainke <vincent@systemli.org>
Signed-off-by: Nico <github@nicoboehr.de>
diff --git a/target/linux/ath79/dts/qca9563_tplink_eap225-outdoor-v3.dts b/target/linux/ath79/dts/qca9563_tplink_eap225-outdoor-v3.dts
new file mode 100644
index 0000000000000000000000000000000000000000..e5914c9a55069e5baa5c7b989f3405c762e4d29d
--- /dev/null
+++ b/target/linux/ath79/dts/qca9563_tplink_eap225-outdoor-v3.dts
@@ -0,0 +1,59 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qca9563_tplink_eap2x5-1port.dtsi"
+
+/ {
+ compatible = "tplink,eap225-outdoor-v3", "qca,qca9563";
+ model = "TP-Link EAP225-Outdoor v3";
+
+ 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_LOW>;
+ default-state = "on";
+ };
+
+ led_status_amber: status_amber {
+ label = "amber:status";
+ gpios = <&gpio 9 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&art {
+ precalibration_ath10k: pre-calibration@5000 {
+ reg = <0x5000 0x2f20>;
+ };
+};
+
+&eth0 {
+ phy-handle = <&phy6>;
+ phy-mode = "sgmii";
+};
+
+&mdio0 {
+ phy6: ethernet-phy@6 {
+ reg = <6>;
+ };
+};
+
+&pcie {
+ wifi@0,0 {
+ compatible = "qcom,ath10k";
+ reg = <0 0 0 0 0>;
+
+ mac-address-increment = <1>;
+
+ nvmem-cells = <&macaddr_info_8>, <&precalibration_ath10k>;
+ nvmem-cell-names = "mac-address", "pre-calibration";
+ };
+};
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 8f9516b8c681fd09c37fb183a63c17cf84f94bfc..b17ef03afcdf12c7a2c51fa8b0eaf3c90ad6fdd9 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,cpe610-v2|\
tplink,cpe710-v1|\
tplink,eap225-outdoor-v1|\
+ tplink,eap225-outdoor-v3|\
tplink,eap225-v1|\
tplink,eap225-v3|\
tplink,eap245-v1|\
diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk
index fed572c884c75bd21081c7c22dd4652ecefdd993..3d3a45711302b7a73c914d80ec0d309878813149 100644
--- a/target/linux/ath79/image/generic-tp-link.mk
+++ b/target/linux/ath79/image/generic-tp-link.mk
@@ -401,6 +401,17 @@ define Device/tplink_eap225-outdoor-v1
endef
TARGET_DEVICES += tplink_eap225-outdoor-v1
+define Device/tplink_eap225-outdoor-v3
+ $(Device/tplink-eap2x5)
+ SOC := qca9563
+ IMAGE_SIZE := 13824k
+ DEVICE_MODEL := EAP225-Outdoor
+ DEVICE_VARIANT := v3
+ DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9888-ct
+ TPLINK_BOARD_ID := EAP225-V3
+endef
+TARGET_DEVICES += tplink_eap225-outdoor-v3
+
define Device/tplink_eap225-v1
$(Device/tplink-eap2x5)
SOC := qca9563
diff --git a/tools/firmware-utils/patches/003-tplink-safeloader-join-EAP225-V3-compatible-devices.patch b/tools/firmware-utils/patches/003-tplink-safeloader-join-EAP225-V3-compatible-devices.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f02ce72973c11e9e4dbb93f43e39cf073732f392
--- /dev/null
+++ b/tools/firmware-utils/patches/003-tplink-safeloader-join-EAP225-V3-compatible-devices.patch
@@ -0,0 +1,61 @@
+From a1f0f969f52cb73f77b44ea8bb9e654e18ca3dbb Mon Sep 17 00:00:00 2001
+From: Sander Vanheule <sander@svanheule.net>
+Date: Thu, 26 May 2022 09:11:29 +0200
+Subject: [PATCH 1/4] tplink-safeloader: join EAP225-V3 compatible devices
+
+Since FW v5.0.0, TP-Link has provided unified firmware images for
+EAP225-v3 and EAP225-Outdoor-v1 devices. Although there may be hardware
+differences, the relevant details for image generation are identical.
+
+More recently, the following devices have also been added to the support
+list:
+ - EAP225-v3.20
+ - EAP225-Outdoor-v3
+ - EAP225-v4
+
+The country codes appended the device descriptors were introduced with
+FW v5.0.7: "Combined firmware versions for different countries/regions."
+The release notes provide no further upgrade instructions, so these
+firmware images should be backwards compatible.
+
+Add the new compatible devices, with region codes, to the support list
+of the EAP225-V3 board ID. The now redundant EAP225-OUTDOOR-V1 ID will
+be dropped later.
+
+Signed-off-by: Sander Vanheule <sander@svanheule.net>
+---
+ src/tplink-safeloader.c | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/src/tplink-safeloader.c b/src/tplink-safeloader.c
+index fc46124..a42ce6a 100644
+--- a/src/tplink-safeloader.c
++++ b/src/tplink-safeloader.c
+@@ -1603,12 +1603,22 @@ static struct device_info boards[] = {
+ .last_sysupgrade_partition = "file-system"
+ },
+
+- /** Firmware layout for the EAP225 v3 */
++ /** Firmware layout for the EAP225 v3
++ * Also compatible with:
++ * - EAP225 v3.20
++ * - EAP225 v4
++ * - EAP225-Outdoor v1
++ * - EAP225-Outdoor v3
++ * */
+ {
+ .id = "EAP225-V3",
+ .support_list =
+ "SupportList:\r\n"
+- "EAP225(TP-Link|UN|AC1350-D):3.0\r\n",
++ "EAP225(TP-Link|UN|AC1350-D):3.0\r\n"
++ "EAP225(TP-Link|UN|AC1350-D):3.20\r\n"
++ "EAP225(TP-Link|UN|AC1350-D):4.0 CA\r\n"
++ "EAP225-Outdoor(TP-Link|UN|AC1350-D):1.0\r\n"
++ "EAP225-Outdoor(TP-Link|UN|AC1350-D):3.0 CA,JP\r\n",
+ .part_trail = PART_TRAIL_NONE,
+ .soft_ver = SOFT_VER_DEFAULT,
+ .soft_ver_compat_level = 1,
+--
+2.30.2
+
diff --git a/tools/firmware-utils/patches/004-tplink-safeloader-add-regionless-EAP225-V3-IDs.patch b/tools/firmware-utils/patches/004-tplink-safeloader-add-regionless-EAP225-V3-IDs.patch
new file mode 100644
index 0000000000000000000000000000000000000000..13f433b7e751b8fd54d790fbcdee22a426a65d79
--- /dev/null
+++ b/tools/firmware-utils/patches/004-tplink-safeloader-add-regionless-EAP225-V3-IDs.patch
@@ -0,0 +1,36 @@
+From 17896956efd9d42baebf9558242dcdf4b5a9cbe1 Mon Sep 17 00:00:00 2001
+From: Sander Vanheule <sander@svanheule.net>
+Date: Sun, 26 Jun 2022 16:30:34 +0200
+Subject: [PATCH 2/4] tplink-safeloader: add regionless EAP225-V3 IDs
+
+Devices whose model ID does not contain a region identifier will not
+match the "CA" and "CA,JP" qualified model IDs in the current EAP225-V3
+SupportList. This results in the stock firmware giving the following
+error when trying to flash a factory image:
+ Upgrade failed because the firmware is incompatible
+
+Add the IDs without region qualifiers to also support these devices.
+
+Signed-off-by: Sander Vanheule <sander@svanheule.net>
+---
+ src/tplink-safeloader.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/tplink-safeloader.c b/src/tplink-safeloader.c
+index a42ce6a..3f58f95 100644
+--- a/src/tplink-safeloader.c
++++ b/src/tplink-safeloader.c
+@@ -1616,8 +1616,10 @@ static struct device_info boards[] = {
+ "SupportList:\r\n"
+ "EAP225(TP-Link|UN|AC1350-D):3.0\r\n"
+ "EAP225(TP-Link|UN|AC1350-D):3.20\r\n"
++ "EAP225(TP-Link|UN|AC1350-D):4.0\r\n"
+ "EAP225(TP-Link|UN|AC1350-D):4.0 CA\r\n"
+ "EAP225-Outdoor(TP-Link|UN|AC1350-D):1.0\r\n"
++ "EAP225-Outdoor(TP-Link|UN|AC1350-D):3.0\r\n"
+ "EAP225-Outdoor(TP-Link|UN|AC1350-D):3.0 CA,JP\r\n",
+ .part_trail = PART_TRAIL_NONE,
+ .soft_ver = SOFT_VER_DEFAULT,
+--
+2.30.2
+
diff --git a/tools/firmware-utils/patches/005-tplink-safeloader-fix-EAP225-Outdoor-model-IDs.patch b/tools/firmware-utils/patches/005-tplink-safeloader-fix-EAP225-Outdoor-model-IDs.patch
new file mode 100644
index 0000000000000000000000000000000000000000..6d2473d7ecdf2564c5db82ee89f59fb6e309b7fb
--- /dev/null
+++ b/tools/firmware-utils/patches/005-tplink-safeloader-fix-EAP225-Outdoor-model-IDs.patch
@@ -0,0 +1,37 @@
+From f7bdb17991043bf9ea14489f105437db31f772bd Mon Sep 17 00:00:00 2001
+From: Sander Vanheule <sander@svanheule.net>
+Date: Sun, 26 Jun 2022 16:43:07 +0200
+Subject: [PATCH 3/4] tplink-safeloader: fix EAP225-Outdoor model IDs
+
+The model IDs for EAP225-Outdoor v1 and EAP225-Outdoor v3 contain
+"AC1200". The corresponding identifiers grouped under EAP225-V3 contain
+"AC1350" however, which is a copy-paste error from the EAP225 v3/v3.2/v4
+IDs. Modify the strings in SupportList to actually match the ones on devices.
+
+Fixes: 9563fe8e78cb ("tplink-safeloader: add regionless EAP225-V3 IDs")
+Fixes: 365458e00ed7 ("tplink-safeloader: join EAP225-V3 compatible devices")
+Signed-off-by: Sander Vanheule <sander@svanheule.net>
+---
+ src/tplink-safeloader.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/tplink-safeloader.c b/src/tplink-safeloader.c
+index 3f58f95..c941159 100644
+--- a/src/tplink-safeloader.c
++++ b/src/tplink-safeloader.c
+@@ -1618,9 +1618,9 @@ static struct device_info boards[] = {
+ "EAP225(TP-Link|UN|AC1350-D):3.20\r\n"
+ "EAP225(TP-Link|UN|AC1350-D):4.0\r\n"
+ "EAP225(TP-Link|UN|AC1350-D):4.0 CA\r\n"
+- "EAP225-Outdoor(TP-Link|UN|AC1350-D):1.0\r\n"
+- "EAP225-Outdoor(TP-Link|UN|AC1350-D):3.0\r\n"
+- "EAP225-Outdoor(TP-Link|UN|AC1350-D):3.0 CA,JP\r\n",
++ "EAP225-Outdoor(TP-Link|UN|AC1200-D):1.0\r\n"
++ "EAP225-Outdoor(TP-Link|UN|AC1200-D):3.0\r\n"
++ "EAP225-Outdoor(TP-Link|UN|AC1200-D):3.0 CA,JP\r\n",
+ .part_trail = PART_TRAIL_NONE,
+ .soft_ver = SOFT_VER_DEFAULT,
+ .soft_ver_compat_level = 1,
+--
+2.30.2
+
diff --git a/tools/firmware-utils/patches/006-tplink-safeloader-drop-unqualified-EAP225-V3-IDs.patch b/tools/firmware-utils/patches/006-tplink-safeloader-drop-unqualified-EAP225-V3-IDs.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f452087f3d504326509bc2bc664bced97d6776b5
--- /dev/null
+++ b/tools/firmware-utils/patches/006-tplink-safeloader-drop-unqualified-EAP225-V3-IDs.patch
@@ -0,0 +1,42 @@
+From 2c91e01e62eaa0ad4336a50cea03851bcf0fda10 Mon Sep 17 00:00:00 2001
+From: Sander Vanheule <sander@svanheule.net>
+Date: Mon, 27 Jun 2022 18:31:24 +0200
+Subject: [PATCH 4/4] tplink-safeloader: drop unqualified EAP225-V3 IDs
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+After adding the regionless identifiers in commit 9563fe8e78cb
+("tplink-safeloader: add regionless EAP225-V3 IDs"), the generated
+support-list partition exceeded the allocated space of 256 bytes. This
+resulted in the tool failing to generate factory images with the
+following warning:
+ support-list partition too big (more than 256 bytes): Success
+
+Although this message reports "Success", the tool actually fails with a
+return code of 1.
+
+This essentialy reverts commit 9563fe8e78cb, since the region-qualified
+IDs are also compatible with the non region-qualified devices. The
+change makes the generated support-list partition fit within the
+allocated space again.
+
+Tested-by: Andre Klärner <kandre@ak-online.be>
+Signed-off-by: Sander Vanheule <sander@svanheule.net>
+---
+ src/tplink-safeloader.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/src/tplink-safeloader.c
++++ b/src/tplink-safeloader.c
+@@ -1659,10 +1659,8 @@ static struct device_info boards[] = {
+ "SupportList:\r\n"
+ "EAP225(TP-Link|UN|AC1350-D):3.0\r\n"
+ "EAP225(TP-Link|UN|AC1350-D):3.20\r\n"
+- "EAP225(TP-Link|UN|AC1350-D):4.0\r\n"
+ "EAP225(TP-Link|UN|AC1350-D):4.0 CA\r\n"
+ "EAP225-Outdoor(TP-Link|UN|AC1200-D):1.0\r\n"
+- "EAP225-Outdoor(TP-Link|UN|AC1200-D):3.0\r\n"
+ "EAP225-Outdoor(TP-Link|UN|AC1200-D):3.0 CA,JP\r\n",
+ .part_trail = PART_TRAIL_NONE,
+ .soft_ver = SOFT_VER_DEFAULT,