diff --git a/recipes-openharmony/openharmony/files/hdcd.service b/recipes-openharmony/openharmony/files/hdcd.service
index dc5435074b90aaa0d16de4d5e7fa083e99ac3040..e22f6103cc0928f52cfcbc7862567144fc6bdbfc 100644
--- a/recipes-openharmony/openharmony/files/hdcd.service
+++ b/recipes-openharmony/openharmony/files/hdcd.service
@@ -1,10 +1,16 @@
 [Unit]
 Description=OpenHarmony Device Connector Daemon service
+Wants=hdcd.socket
+After=hdcd.socket
+Wants=param.service
+After=param.service
 
 [Service]
-Type=oneshot
-ExecStart=/bin/echo "OpenHarmony Device Connector Daemon Service"
-RemainAfterExit=yes
+Type=exec
+ExecStartPre=setparam persist.hdc.port 35000
+ExecStartPre=setparam persist.hdc.root 1
+ExecStartPre=setparam ro.hdc.secure 0
+ExecStart=/usr/bin/hdcd -t
 
 [Install]
 WantedBy=multi-user.target
diff --git a/recipes-openharmony/openharmony/files/hdcd.socket b/recipes-openharmony/openharmony/files/hdcd.socket
new file mode 100644
index 0000000000000000000000000000000000000000..fa23cf5184aa324431b8ac601afb702e65715c41
--- /dev/null
+++ b/recipes-openharmony/openharmony/files/hdcd.socket
@@ -0,0 +1,9 @@
+[Unit]
+Description=OpenHarmony Device Connector Daemon socket
+
+[Socket]
+ExecStartPre=install -o system -g system -m 775 -d /run/openharmony/hdc
+ListenSequentialPacket=/run/openharmony/hdc/FOOBAR
+SocketUser=system
+SocketGroup=system
+SocketMode=0660
diff --git a/recipes-openharmony/openharmony/files/openharmony-preinit b/recipes-openharmony/openharmony/files/openharmony-preinit
index 865742416c06a41e4d17b52f0483e2825c01295a..54a9bf4c66d4d2da60728998e226394a1de23ada 100644
--- a/recipes-openharmony/openharmony/files/openharmony-preinit
+++ b/recipes-openharmony/openharmony/files/openharmony-preinit
@@ -136,20 +136,4 @@ fi
 #sa_main /system/profile/dps_service.xml & # SA: 1401 180 3502
 #sleep "$STARTUP_CMD_SLEEP"
 
-# trigger: boot?
-# "name" : "hdcd",
-# "path" : ["/system/bin/hdcd"],
-# "socket" : [
-# "hdcd seqpacket 660 system system false"
-# ],
-# "disabled" : 1
-if systemctl -q is-enabled hdcd.service; then
-	echo >/dev/console "Starting OpenHarmony hdcd service"
-	setparam persist.hdc.port 35000
-	setparam persist.hdc.root 1 # We are running hdcd as root
-	setparam ro.hdc.secure 0 # Do not enable secure mode
-	sleep "$STARTUP_CMD_SLEEP"
-	/system/bin/hdcd -t &
-fi
-
 echo "All OpenHarmony services started" >/dev/console
diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
index 363ceb808c36071cc98ee8979e3750c73f1ef695..8141ba42329cc031870df8d973fa9f1c42ad5bb1 100644
--- a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
+++ b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
@@ -1796,7 +1796,6 @@ RDEPENDS:${PN}-ptest += "${PN}-distributedhardware-devicemanager-ptest"
 PACKAGES =+ "${PN}-hdc"
 FILES:${PN}-hdc = " \
     ${bindir}/hdcd \
-    ${systemd_unitdir}/hdcd.service \
 "
 SYSTEMD_PACKAGES += "${PN}-hdc"
 SYSTEMD_SERVICE:${PN}-hdc = "hdcd.service"