diff --git a/device/testing/device-xunlong-orangepi3/APKBUILD b/device/testing/device-xunlong-orangepi3/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..b1e87fdf79bc3ec0f1f330860f1dfad4813ad4b6
--- /dev/null
+++ b/device/testing/device-xunlong-orangepi3/APKBUILD
@@ -0,0 +1,47 @@
+# Reference: <https://postmarketos.org/devicepkg>
+# Maintainer: Maxim Karasev <begs@disroot.org>
+pkgname=device-xunlong-orangepi3
+pkgdesc="Xunlong Orange Pi 3"
+pkgver=0.1
+pkgrel=0
+url="https://postmarketos.org"
+license="MIT"
+arch="aarch64"
+options="!check !archcheck"
+depends="
+	linux-postmarketos-allwinner
+	mesa-dri-gallium
+	postmarketos-base
+	u-boot-tools
+	u-boot-sunxi
+"
+makedepends="devicepkg-dev"
+subpackages="$pkgname-nonfree-firmware:nonfree_firmware"
+source="
+	deviceinfo
+	uboot-script.cmd
+"
+
+build() {
+	devicepkg_build $startdir $pkgname
+	mkimage -A arm -O linux -T script -C none -a 0 -e 0 \
+		-n postmarketos -d "$srcdir"/uboot-script.cmd \
+		"$srcdir"/boot.scr
+}
+
+package() {
+	devicepkg_package $startdir $pkgname
+	install -D -m644 "$srcdir"/boot.scr \
+		"$pkgdir"/boot/boot.scr
+}
+
+nonfree_firmware() {
+	pkgdesc="Wi-Fi and Bluetooth firmware"
+	depends="firmware-xunlong-orangepi3"
+	mkdir "$subpkgdir"
+}
+
+sha512sums="
+1fb319af5c74b85f4ceac02a51b0645bcee2674f6189e00c0e5ce40837076bd0c412250216f07a5a04c952eedcf1954277e0fa4b13854aee424f23c802799802  deviceinfo
+90dab64c2b3c55756017b63fea18852a22cae6ee43abb71b1c019c00a77e140cc162d7736bba5c8c007d1f6fa32cb8901ec190a3e46aaa85c557e4907d0bb1c7  uboot-script.cmd
+"
diff --git a/device/testing/device-xunlong-orangepi3/deviceinfo b/device/testing/device-xunlong-orangepi3/deviceinfo
new file mode 100644
index 0000000000000000000000000000000000000000..597fe94945181e99a3927eff3127da7e6739d295
--- /dev/null
+++ b/device/testing/device-xunlong-orangepi3/deviceinfo
@@ -0,0 +1,26 @@
+# Reference: <https://postmarketos.org/deviceinfo>
+# Please use double quotes only. You can source this file in shell
+# scripts.
+
+deviceinfo_format_version="0"
+deviceinfo_name="Xunlong Orange Pi 3"
+deviceinfo_manufacturer="Xunlong"
+deviceinfo_codename="xunlong-orangepi3"
+deviceinfo_year="2019"
+deviceinfo_dtb="allwinner/sun50i-h6-orangepi-3"
+deviceinfo_modules_initfs=""
+deviceinfo_arch="aarch64"
+deviceinfo_disable_dhcpd="true"
+
+# Device related
+deviceinfo_chassis="embedded"
+deviceinfo_keyboard="true"
+deviceinfo_external_storage="true"
+deviceinfo_screen_width="1920"
+deviceinfo_screen_height="1080"
+deviceinfo_getty="ttyS0;115200"
+
+# Bootloader related
+deviceinfo_flash_method="none"
+deviceinfo_generate_legacy_uboot_initfs="true"
+deviceinfo_sd_embed_firmware="u-boot/orangepi_3/u-boot-sunxi-with-spl.bin:8"
diff --git a/device/testing/device-xunlong-orangepi3/uboot-script.cmd b/device/testing/device-xunlong-orangepi3/uboot-script.cmd
new file mode 100644
index 0000000000000000000000000000000000000000..95ec4b0611d6e8f47b39759e42b67a49bc267520
--- /dev/null
+++ b/device/testing/device-xunlong-orangepi3/uboot-script.cmd
@@ -0,0 +1,27 @@
+if test ${mmc_bootdev} -eq 0 ; then
+	echo "Booting from SD";
+	setenv bootdev 0;
+else
+	echo "Booting from eMMC";
+	setenv bootdev 2;
+fi;
+
+setenv bootargs init=/init.sh rw console=tty0 console=ttyS0,115200 earlycon no_console_suspend panic=10 consoleblank=0 loglevel=1 pmos_boot=/dev/mmcblk${bootdev}p1 pmos_root=/dev/mmcblk${bootdev}p2 PMOS_NO_OUTPUT_REDIRECT
+
+printenv
+
+echo Loading DTB
+load mmc ${mmc_bootdev}:1 ${fdt_addr_r} sun50i-h6-orangepi-3.dtb
+
+echo Loading Initramfs
+load mmc ${mmc_bootdev}:1 ${ramdisk_addr_r} uInitrd-postmarketos-allwinner
+
+echo Loading Kernel
+load mmc ${mmc_bootdev}:1 ${kernel_addr_r} vmlinuz-postmarketos-allwinner
+
+echo Resizing FDT
+fdt addr ${fdt_addr_r}
+fdt resize
+
+echo Booting kernel
+booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
diff --git a/device/testing/firmware-xunlong-orangepi3/APKBUILD b/device/testing/firmware-xunlong-orangepi3/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..fbbec7ed4cdcfa5c58079ee8b8b6af870dd361e2
--- /dev/null
+++ b/device/testing/firmware-xunlong-orangepi3/APKBUILD
@@ -0,0 +1,23 @@
+# Maintainer: Maxim Karasev <begs@disroot.org>
+pkgname=firmware-xunlong-orangepi3
+pkgver=1
+pkgrel=0
+_commit="3ddc301c272f081aa5513c1934f6d530bf80de4a"
+pkgdesc="Firmware for the Xunlong Orange Pi 3 (xunlong-orangepi3)"
+url="https://github.com/LibreELEC/brcmfmac_sdio-firmware"
+arch="aarch64"
+license="proprietary"
+options="!check !strip !archcheck"
+source="https://github.com/LibreELEC/brcmfmac_sdio-firmware/archive/$_commit/brcmfmac_sdio-firmware-$_commit.tar.gz"
+builddir="$srcdir/brcmfmac_sdio-firmware-$_commit"
+
+package() {
+	for file in BCM4345C5.hcd brcmfmac43456-sdio.bin brcmfmac43456-sdio.xunlong,orangepi-3.txt; do
+		install -Dm 0644 "$file" -t "$pkgdir"/lib/firmware/postmarketos/brcm
+	done
+}
+
+
+sha512sums="
+6638fbb6a1ed94e17da1dfea3efa2914f1465ff8788bd937c8c221a80b160f5469242d99be941042bd4134301d3d7c34fe1be2c3b3cb9342f4a32bbe24b03bf2  brcmfmac_sdio-firmware-3ddc301c272f081aa5513c1934f6d530bf80de4a.tar.gz
+"