diff --git a/meta-oniro-core/recipes-core/images/oniro-image-common.inc b/meta-oniro-core/recipes-core/images/oniro-image-common.inc
index 0ac0ab13f23416c5bedbcb94490dfde43bbea081..6ce454fb7cb8c7b237d3bc2cb9e0e894588fb791 100644
--- a/meta-oniro-core/recipes-core/images/oniro-image-common.inc
+++ b/meta-oniro-core/recipes-core/images/oniro-image-common.inc
@@ -20,3 +20,10 @@ IMAGE_INSTALL:append = "\
 			"
 
 IMAGE_INSTALL:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'optee', 'optee-client', '', d)} "
+
+# If the machine has a cellular modem it can set MACHINE_FEATURES+=modem to
+# add the needed packages into the image. In the special case of an USB cellular
+# modem adding MACHINE_FEATURES+="modem usbmodem" ensures to have the usb-modeswitch
+# package as well.
+IMAGE_INSTALL:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'modem', 'networkmanager-wwan modemmanager', '', d)} "
+IMAGE_INSTALL:append = " ${@bb.utils.contains('MACHINE_FEATURES', 'usbmodem', 'usb-modeswitch', '', d)} "
diff --git a/meta-oniro-staging/recipes-connectivity/networkmanager/networkmanager_%.bbappend b/meta-oniro-staging/recipes-connectivity/networkmanager/networkmanager_%.bbappend
new file mode 100644
index 0000000000000000000000000000000000000000..6e1c23f1fe49f5075936cd09d149400428b4ff4d
--- /dev/null
+++ b/meta-oniro-staging/recipes-connectivity/networkmanager/networkmanager_%.bbappend
@@ -0,0 +1,8 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+# If the machine has a cellular modem it can set MACHINE_FEATURES+=modem to
+# enable build-in support in NetworkManager.
+PACKAGECONFIG:append:pn-networkmanager = "${@bb.utils.contains('MACHINE_FEATURES', \
+                                          'modem', ' modemmanager ', '', d)}"