diff --git a/MSM8916_Mainlining.mw b/MSM8916_Mainlining.mw
index 5032992452618003488dbd3a228eec4794ae7518..56e337bd6aa53371815fb7061d6b98f65f1ed64f 100644
--- a/MSM8916_Mainlining.mw
+++ b/MSM8916_Mainlining.mw
@@ -511,6 +511,26 @@ Note the use of <code>qcom,wcn3680</code> instead of <code>qcom,wcn3660</code> f
 * WiFi and Bluetooth share the same antenna, and they tend to conflict with each other when they are used at the same time ("WiFi/BT coexistence"). In case of problems, try disabling one of them.
 * Dual-band support on WCN3660B seems to be broken at the moment: only 2.4 GHz networks show up in the WiFi network list.
 
+==== Firmware ====
+Unfortunately, WCNSS requires firmware to run. This firmware is signed, so it must be packaged separately for each device. The following files are needed:
+
+* <code>wcnss.mdt</code> plus all related segments (<code>wcnss.b00</code>, ...), i.e. <code>wcnss.*</code> (usually installed on a separate firmware (<code>NON-HLOS</code>) partition)
+* <code>WCNSS_qcom_wlan_nv.bin</code> (usually installed on the system partition, e.g. <code>/system/etc/firmware/wlan/prima/WCNSS_qcom_wlan_nv.bin</code>
+
+On postmarketOS it should be packaged in a separate firmware package. Look at <code>firmware/firmware-wileyfox-crackling</code> as an example.
+
+Then add a new <code>nonfree-firmware</code> subpackage to your device package:
+
+ <nowiki>
+subpackages="$pkgname-nonfree-firmware:nonfree_firmware"
+
+nonfree_firmware() {
+	pkgdesc="GPU/WiFi/BT/Video firmware"
+	depends="linux-firmware-qcom firmware-vendor-device-venus firmware-vendor-device-wcnss"
+	mkdir "$subpkgdir"
+}</nowiki>
+
+While you are at it, this is a good chance to package the <code>venus.*</code> firmware as well. It is used for hardware accelerated video codecs and should work out of the box without further changes.
 === Display/GPU ===
 {{todo|}}