diff --git a/recipes-openharmony/openharmony/files/dsoftbus.service b/recipes-openharmony/openharmony/files/dsoftbus.service
index d9728659e9482d96a54139a2f798e5130d0a8333..dc8301aa8ed84473707fb279efba8de4f683e341 100644
--- a/recipes-openharmony/openharmony/files/dsoftbus.service
+++ b/recipes-openharmony/openharmony/files/dsoftbus.service
@@ -1,10 +1,24 @@
 [Unit]
-Description=OpenHarmony DSoftBus services
+Description=OpenHarmony DSoftBus services (SA: 1401 4700)
+Requires=samgr.service
+After=samgr.service
+# Logging to hilogd, but seems to work without it
+Wants=hilogd.service
+After=hilogd.service
+# Requires SA: 3299
+Wants=foundation.service
+# Requires SA: 3510
+Wants=huks.service
+# Requires SA: 4701
+Wants=deviceauth.service
 
 [Service]
-Type=oneshot
-ExecStart=/bin/echo "OpenHarmony DSoftBus Service"
-RemainAfterExit=yes
+Type=notify
+User=system
+Group=system
+SupplementaryGroups=shell
+LimitNICE=40
+ExecStart=/usr/bin/sa_main /system/profile/softbus_server.xml
 
 [Install]
 WantedBy=multi-user.target
diff --git a/recipes-openharmony/openharmony/files/openharmony-preinit b/recipes-openharmony/openharmony/files/openharmony-preinit
index b4d3eb153140cae04f1f19afbb3eafd7dfe1ee7b..0276838c041237a4bd8bb7a863b11fa218ffa03c 100644
--- a/recipes-openharmony/openharmony/files/openharmony-preinit
+++ b/recipes-openharmony/openharmony/files/openharmony-preinit
@@ -132,16 +132,6 @@ if systemctl -q is-enabled weston.service; then
 	sleep "$STARTUP_CMD_SLEEP"
 fi
 
-# "name" : "softbus_server",
-# "path" : ["/system/bin/sa_main", "/system/profile/softbus_server.xml"],
-# "uid" : "system",
-# "gid" : ["system", "shell"]
-if systemctl -q is-enabled dsoftbus.service; then
-	echo >/dev/console "Starting OpenHarmony dsoftbus service"
-	su system -c '/system/bin/sa_main /system/profile/softbus_server.xml &' # SA: 1401 4700 | Required SA: 3299
-	sleep "$STARTUP_CMD_SLEEP"
-fi
-
 # trigger: not used?
 #sa_main /system/profile/dps_service.xml & # SA: 1401 180 3502
 #sleep "$STARTUP_CMD_SLEEP"