diff --git a/device/testing/device-xiaomi-natrium/30-gpu-firmware.files b/device/testing/device-xiaomi-natrium/30-gpu-firmware.files
new file mode 100644
index 0000000000000000000000000000000000000000..edc09e4b15db23ed03901e376fcb6729686bdd91
--- /dev/null
+++ b/device/testing/device-xiaomi-natrium/30-gpu-firmware.files
@@ -0,0 +1,4 @@
+./lib/firmware/qcom/a530_pfp.fw
+./lib/firmware/qcom/a530_pm4.fw
+./lib/firmware/qcom/a530v3_gpmu.fw2
+./lib/firmware/qcom/msm8996/natrium/a530_zap.mbn
diff --git a/device/testing/device-xiaomi-natrium/APKBUILD b/device/testing/device-xiaomi-natrium/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..fb3766c52a36427e833f42aaae476ecb2b68cdd8
--- /dev/null
+++ b/device/testing/device-xiaomi-natrium/APKBUILD
@@ -0,0 +1,69 @@
+# Maintainer: Alec Su (AlecJY) <ae40515@yahoo.com.tw>
+# Reference: <https://postmarketos.org/devicepkg>
+
+pkgname=device-xiaomi-natrium
+pkgdesc="Xiaomi Mi 5s Plus"
+pkgver=1
+pkgrel=0
+url="https://postmarketos.org"
+license="MIT"
+arch="aarch64"
+options="!check !archcheck"
+depends="
+	linux-postmarketos-qcom-msm8996
+	mesa-egl
+	mkbootimg
+	postmarketos-base
+	postmarketos-update-kernel
+	soc-qcom-msm8996
+	soc-qcom-msm8996-ucm
+"
+makedepends="devicepkg-dev"
+subpackages="$pkgname-nonfree-firmware:nonfree_firmware $pkgname-phosh"
+
+source="
+	deviceinfo
+	pointercal
+	phoc.ini
+	30-gpu-firmware.files
+"
+
+build() {
+	devicepkg_build $startdir $pkgname
+}
+
+package() {
+	devicepkg_package $startdir $pkgname
+
+	install -D -m644 "$srcdir"/pointercal \
+		"$pkgdir"/etc/pointercal
+}
+
+nonfree_firmware() {
+	pkgdesc="GPU/Modem/Venus/ADSP/SLPI/WiFi/Bluetooth Firmware"
+	depends="
+		firmware-xiaomi-natrium
+		linux-firmware-ath10k
+		linux-firmware-qca
+		soc-qcom-msm8996-nonfree-firmware
+		"
+	install="$subpkgname.post-install"
+	mkdir "$subpkgdir"
+
+	install -Dm644 "$srcdir/30-gpu-firmware.files" -t \
+		"$subpkgdir/etc/postmarketos-mkinitfs/files"
+}
+
+phosh() {
+	install_if="$pkgname=$pkgver-r$pkgrel phosh"
+	install -Dm644 "$srcdir"/phoc.ini \
+		"$subpkgdir"/etc/phosh/phoc.ini
+}
+
+
+sha512sums="
+b1e93eb146f3fd9adc4197d2b39a89ac1cfb2dc06587692262654444d4ba2642103cc7895bedfc02b2243a38645beceb91d1f66cdd654ff1d298c4eb3120b13a  deviceinfo
+e9ee9c1404b41ba15eafff3f728ff6e0e78dc17e9a88483fca92db1aa3efe0e4d5bf26142e533c4ff12b1bf8ce04ccabb7ca0f93aaea586d5b30910282aad237  pointercal
+38409d4ce48db4624539dbfd695d3c6e1596a29fd7c3004a41368b28cba646495d05360420ad728f82c63d6ddeeca71d09944df06ebaca120aedd9cc2b436eb3  phoc.ini
+4babc3e499cbc3fab555d3d939b34e763d31ee8e36f3766f3b0bc8c6d1e2ec67f119b87e4a5bc898ad6881b9da98c06f184a567dc9f96b08857ee185ff05f6ae  30-gpu-firmware.files
+"
diff --git a/device/testing/device-xiaomi-natrium/device-xiaomi-natrium-nonfree-firmware.post-install b/device/testing/device-xiaomi-natrium/device-xiaomi-natrium-nonfree-firmware.post-install
new file mode 100644
index 0000000000000000000000000000000000000000..d4b463fbebf331ac975b332e0088a7c79237fb24
--- /dev/null
+++ b/device/testing/device-xiaomi-natrium/device-xiaomi-natrium-nonfree-firmware.post-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# Delay modem powerup to avoid crashing
+rc-update del rmtfs boot
+rc-update add rmtfs default
diff --git a/device/testing/device-xiaomi-natrium/deviceinfo b/device/testing/device-xiaomi-natrium/deviceinfo
new file mode 100644
index 0000000000000000000000000000000000000000..4485de9a22faab729ed0a869e11d41489baadd32
--- /dev/null
+++ b/device/testing/device-xiaomi-natrium/deviceinfo
@@ -0,0 +1,40 @@
+# Reference: <https://postmarketos.org/deviceinfo>
+# Please use double quotes only. You can source this file in shell
+# scripts.
+
+deviceinfo_format_version="0"
+deviceinfo_name="Xiaomi Mi 5s Plus"
+deviceinfo_manufacturer="Xiaomi"
+deviceinfo_codename="xiaomi-natrium"
+deviceinfo_year="2016"
+deviceinfo_dtb="qcom/msm8996pro-xiaomi-natrium"
+deviceinfo_append_dtb="true"
+deviceinfo_modules_initfs="qcom_fg drm msm panel_jdi_fhd_r63452"
+deviceinfo_arch="aarch64"
+deviceinfo_mesa_driver="msm"
+deviceinfo_flash_kernel_on_update="true"
+
+# Device related
+deviceinfo_chassis="handset"
+deviceinfo_keyboard="false"
+deviceinfo_external_storage="false"
+deviceinfo_screen_width="1080"
+deviceinfo_screen_height="1920"
+deviceinfo_rootfs_image_sector_size="4096"
+deviceinfo_gpu_accelerated="true"
+
+# Bootloader related
+deviceinfo_flash_method="fastboot"
+deviceinfo_kernel_cmdline="PMOS_NO_OUTPUT_REDIRECT"
+deviceinfo_generate_bootimg="true"
+deviceinfo_bootimg_qcdt="false"
+deviceinfo_bootimg_mtk_mkimage="false"
+deviceinfo_bootimg_dtb_second="false"
+deviceinfo_flash_pagesize="4096"
+deviceinfo_flash_offset_base="0x80000000"
+deviceinfo_flash_offset_kernel="0x00008000"
+deviceinfo_flash_offset_ramdisk="0x01000000"
+deviceinfo_flash_offset_second="0x00f00000"
+deviceinfo_flash_offset_tags="0x00000100"
+deviceinfo_flash_pagesize="4096"
+deviceinfo_flash_sparse="true"
diff --git a/device/testing/device-xiaomi-natrium/phoc.ini b/device/testing/device-xiaomi-natrium/phoc.ini
new file mode 100644
index 0000000000000000000000000000000000000000..2ea1924aa7d6375e6c63095402b9b284fc379bff
--- /dev/null
+++ b/device/testing/device-xiaomi-natrium/phoc.ini
@@ -0,0 +1,5 @@
+# /etc/phosh/phoc.ini
+# Overwrites values set in /usr/share/phosh/phoc.ini
+
+[output:DSI-1]
+scale = 2.5
diff --git a/device/testing/device-xiaomi-natrium/pointercal b/device/testing/device-xiaomi-natrium/pointercal
new file mode 100644
index 0000000000000000000000000000000000000000..478bad446accbaf275a9186ffaa2561934dc14d0
--- /dev/null
+++ b/device/testing/device-xiaomi-natrium/pointercal
@@ -0,0 +1 @@
+38332 -97 -1987162 -902 117510 2078835 65536 1080 1920 0
\ No newline at end of file
diff --git a/device/testing/firmware-xiaomi-natrium/APKBUILD b/device/testing/firmware-xiaomi-natrium/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..967ce2e67e570a530ca9d03dbc70fb1f81a01725
--- /dev/null
+++ b/device/testing/firmware-xiaomi-natrium/APKBUILD
@@ -0,0 +1,28 @@
+# Maintainer: Alec Su (AlecJY) <ae40515@yahoo.com.tw>
+pkgname=firmware-xiaomi-natrium
+pkgver=1
+pkgrel=0
+pkgdesc="Firmware for Xiaomi Mi 5s Plus"
+url="https://gitlab.com/AlecJY/firmware-xiaomi-natrium"
+arch="aarch64"
+license="proprietary"
+options="!strip !check !archcheck !tracedeps pmb:cross-native"
+
+_commit="ec5784e0abed3ce08a45543144f19fd32450b297"
+
+source="
+	$pkgname.tar.gz::$url/-/archive/$_commit/$pkgname-$_commit.tar.gz
+	firmware.files
+	"
+
+package() {
+	cd "$srcdir/$pkgname-$_commit/"
+	while IFS="" read -r _i || [ -n "$_i" ]; do
+		echo $_i
+		install -Dm644 $_i "$pkgdir/$_i"
+	done < "$srcdir/firmware.files"
+}
+sha512sums="
+6c83241b34961514e1add96c2585f9880db45e96f655e7799dcfffd282447601319bc9697bfed9a9dece353f5ad74f9296049cf1655aa60f7d083c4f8e1392ad  firmware-xiaomi-natrium.tar.gz
+306e48947c9bf35a6cc9d2fbca995e5e6e930e6efc43d4dc0a93358330e0949fe099ec735515bb033ab1cf0d55d450ff154a070789a9878f782cc6084a4063f7  firmware.files
+"
diff --git a/device/testing/firmware-xiaomi-natrium/firmware.files b/device/testing/firmware-xiaomi-natrium/firmware.files
new file mode 100644
index 0000000000000000000000000000000000000000..27ad412bc9fe15328cd3711f03127a5f8c7291f3
--- /dev/null
+++ b/device/testing/firmware-xiaomi-natrium/firmware.files
@@ -0,0 +1,6 @@
+./lib/firmware/qcom/msm8996/natrium/a530_zap.mbn
+./lib/firmware/qcom/msm8996/natrium/adsp.mbn
+./lib/firmware/qcom/msm8996/natrium/mba.mbn
+./lib/firmware/qcom/msm8996/natrium/modem.mbn
+./lib/firmware/qcom/msm8996/natrium/slpi.mbn
+./lib/firmware/qcom/msm8996/natrium/venus.mbn