diff -urN openwrt/target/linux/ath79/base-files/etc/board.d/01_leds openwrt/target/linux/ath79/base-files/etc/board.d/01_leds
--- openwrt/target/linux/ath79/base-files/etc/board.d/01_leds
+++ openwrt/target/linux/ath79/base-files/etc/board.d/01_leds
@@ -49,6 +49,10 @@
 	ucidef_set_led_switch "lan3" "LAN3" "pcs:blue:lan3" "switch0" "0x10"
 	ucidef_set_led_switch "lan4" "LAN4" "pcs:blue:lan4" "switch0" "0x02"
 	;;
+pqi,air-pen)
+	ucidef_set_led_wlan "wlan" "WLAN" "$boardname:blue:wlan" "phy0tpt"
+	ucidef_set_led_default "wps" "WPS" "$boardname:blue:wps" "0"
+	;;
 tplink,re450-v2)
 	ucidef_set_led_netdev "lan_data" "LAN Data" "tp-link:green:lan_data" "eth0" "tx rx"
 	ucidef_set_led_netdev "lan_link" "LAN Link" "tp-link:green:lan_link" "eth0" "link"
diff -urN openwrt/target/linux/ath79/base-files/etc/board.d/02_network openwrt/target/linux/ath79/base-files/etc/board.d/02_network
--- openwrt/target/linux/ath79/base-files/etc/board.d/02_network
+++ openwrt/target/linux/ath79/base-files/etc/board.d/02_network
@@ -14,6 +14,7 @@
 	ocedo,raccoon|\
 	pcs,cap324|\
 	pisen,wmm003n|\
+	pqi,air-pen|\
 	tplink,re450-v2|\
 	tplink,tl-mr10u|\
 	tplink,tl-mr3020-v1|\
diff -urN openwrt/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom openwrt/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
--- openwrt/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ openwrt/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -145,6 +145,10 @@
 	ubnt,unifi)
 		ath9k_eeprom_extract "art" 4096 2048
 		;;
+	pqi,air-pen)
+		ath9k_eeprom_extract "art" 4096 2002
+		;;
+		;;
 	*)
 		ath9k_eeprom_die "board $board is not supported yet"
 		;;
diff -urN openwrt/target/linux/ath79/dts/ar9330_pqi_air-pen.dts openwrt/target/linux/ath79/dts/ar9330_pqi_air-pen.dts
--- openwrt/target/linux/ath79/dts/ar9330_pqi_air-pen.dts
+++ openwrt/target/linux/ath79/dts/ar9330_pqi_air-pen.dts
@@ -0,0 +1,147 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+#include "ar9330.dtsi"
+
+/ {
+	model = "PQI Air-Pen";
+	compatible = "pqi,air-pen", "qca,ar9330";
+
+	aliases {
+		serial0 = &uart;
+		led-boot = &wlan;
+		led-failsafe = &wlan;
+		led-upgrade = &wlan;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		wlan: wlan {
+			label = "air-pen:blue:wlan";
+			gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
+			default-state = "off";
+			linux,default-trigger = "phy0tpt";
+		};
+
+		wps {
+			label = "air-pen:blue:wps";
+			gpios = <&gpio 23 GPIO_ACTIVE_HIGH>;
+			default-state = "off";
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		poll-interval = <100>;
+
+		wps {
+			label = "wps";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
+			debounce-interval = <60>;
+		};
+
+		reset {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio 12 GPIO_ACTIVE_HIGH>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&uart {
+	status = "okay";
+};
+
+&gpio {
+	status = "okay";
+};
+
+&usb {
+	dr_mode = "host";
+	status = "okay";
+};
+
+&usb_phy {
+	status = "okay";
+};
+
+&spi {
+	num-chipselects = <1>;
+	status = "okay";
+
+	flash@0 {
+		compatible = "jedec,spi-nor";
+		spi-max-frequency = <104000000>;
+		reg = <0>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition@0 {
+				label = "u-boot";
+				reg = <0x000000 0x040000>;
+				read-only;
+			};
+
+			partition@1 {
+				label = "u-boot-env";
+				reg = <0x040000 0x010000>;
+			};
+
+			art: partition@2 {
+				label = "art";
+				reg = <0x050000 0x010000>;
+				read-only;
+			};
+
+			partition@3 {
+				label = "NVRAM";
+				reg = <0x060000 0x010000>;
+				read-only;
+			};
+
+			partition@4 {
+				label = "firmware";
+				reg = <0x070000 0x780000>;
+			};
+
+			partition@5 {
+				label = "CONF";
+				reg = <0x7f0000 0x010000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&eth0 {
+	status = "okay";
+
+	mtd-mac-address = <&art 0x1002>;
+
+	gmac-config {
+		device = <&gmac>;
+
+		switch-phy-addr-swap = <0>;
+		switch-phy-swap = <0>;
+	};
+};
+
+&eth1 {
+	status = "okay";
+	compatible = "syscon", "simple-mfd";
+};
+
+&wmac {
+	status = "okay";
+	mtd-cal-data = <&art 0x1000>;
+	mtd-mac-address = <&art 0x2>;
+};
diff -urN openwrt/target/linux/ath79/image/tiny.mk openwrt/target/linux/ath79/image/tiny.mk
--- openwrt/target/linux/ath79/image/tiny.mk
+++ openwrt/target/linux/ath79/image/tiny.mk
@@ -47,3 +47,13 @@
   SUPPORTED_DEVICES += whr-g301n
 endef
 TARGET_DEVICES += buffalo_whr-g301n
+
+define Device/pqi_air-pen
+  ATH_SOC := ar9330
+  DEVICE_TITLE := PQI Air-Pen
+  DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
+  IMAGE_SIZE := 7680k
+  SUPPORTED_DEVICES += air-pen
+endef
+TARGET_DEVICES += pqi_air-pen
+
