diff --git a/recipes-openharmony/openharmony/files/40-drm.rules b/recipes-openharmony/openharmony/files/40-drm.rules
new file mode 100644
index 0000000000000000000000000000000000000000..c7a0db8a501c7c2f9cc9b3ae9ccac4ece225ead7
--- /dev/null
+++ b/recipes-openharmony/openharmony/files/40-drm.rules
@@ -0,0 +1 @@
+ACTION=="add", SUBSYSTEM=="drm", KERNEL=="card0", MODE="0666"
diff --git a/recipes-openharmony/openharmony/files/openharmony-preinit b/recipes-openharmony/openharmony/files/openharmony-preinit
index b5b3b0f31467406c6628372b829c97894ee1d627..48a45dcea688afa5dad8dc5c85bce608158aff36 100644
--- a/recipes-openharmony/openharmony/files/openharmony-preinit
+++ b/recipes-openharmony/openharmony/files/openharmony-preinit
@@ -79,10 +79,5 @@ mkdir -p /usr/lib/dri
 
 chmod -R 777 /data
 
-# /dev/dri/card0 needs to be rw for all users
-if [ -c /dev/dri/card0 ]; then
-	chmod 666 /dev/dri/card0
-fi
-
 # Explicitly set default value to silence error message about parameter not being set
 setparam persist.ace.trace.enabled 0
diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
index 6594c8d3b64516fc099e7c25ab4a4881b38c1b05..964b410b749de85a3f4501735dbf2d75fd625345 100644
--- a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
+++ b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
@@ -425,11 +425,13 @@ SYSTEMD_AUTO_ENABLE = "enable"
 
 SRC_URI += "file://40-binder.rules"
 SRC_URI += "file://40-ashmem.rules"
+SRC_URI += "file://40-drm.rules"
 do_install_udev_rules() {
     mkdir -p ${D}${nonarch_base_libdir}/udev/rules.d
     install -m 644 -t ${D}${nonarch_base_libdir}/udev/rules.d \
             ${WORKDIR}/40-binder.rules \
-            ${WORKDIR}/40-ashmem.rules
+            ${WORKDIR}/40-ashmem.rules \
+            ${WORKDIR}/40-drm.rules
 }
 do_install[postfuncs] += "do_install_udev_rules"