diff --git a/meta-openembedded/meta-oe/recipes-connectivity/transmission/files/0001-configure.ac-Fix-no-libsystemd-daemon.patch b/meta-openembedded/meta-oe/recipes-connectivity/transmission/files/0001-configure.ac-Fix-no-libsystemd-daemon.patch
new file mode 100644
index 0000000..130ead0
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/transmission/files/0001-configure.ac-Fix-no-libsystemd-daemon.patch
@@ -0,0 +1,40 @@
+From 73ee7e68402a77287054df779f0e44ae1a4f9f0b Mon Sep 17 00:00:00 2001
+From: Leon Anavi <leon.anavi@konsulko.com>
+Date: Mon, 11 May 2020 17:01:35 +0000
+Subject: [PATCH] configure.ac: Fix no libsystemd-daemon
+
+Replace libsystemd-daemon with libsystemd.
+
+Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
+---
+ configure.ac | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index df8cb5007..9a6fb9b2e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -249,10 +249,10 @@ AC_ARG_WITH([systemd-daemon], AS_HELP_STRING([--with-systemd-daemon],
+             [Add support for systemd startup notification (default is autodetected)]),
+             [USE_SYSTEMD_DAEMON=$withval], [USE_SYSTEMD_DAEMON=auto])
+ AS_IF([test "x$USE_SYSTEMD_DAEMON" != "xno"], [
+-    PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd-daemon],
++    PKG_CHECK_MODULES([SYSTEMD_DAEMON], [libsystemd],
+         [AC_DEFINE(USE_SYSTEMD_DAEMON,1,[Use systemd startup notification])],
+         [AS_IF([test "x$USE_SYSTEMD_DAEMON" = "xyes"],
+-            [AC_MSG_ERROR([systemd startup notification support requested, but libsystemd-daemon not found.])]
++            [AC_MSG_ERROR([systemd startup notification support requested, but libsystemd not found.])]
+         )]
+     )
+ ])
+@@ -558,7 +558,6 @@ if test "x$enable_nls" = "xyes" ; then
+     GETTEXT_PACKAGE=transmission-gtk
+     AC_SUBST(GETTEXT_PACKAGE)
+     AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package])
+-    AM_GLIB_GNU_GETTEXT
+     transmissionlocaledir='${prefix}/${DATADIRNAME}/locale'
+     AC_SUBST(transmissionlocaledir)
+ fi
+-- 
+2.17.1
+
diff --git a/meta-openembedded/meta-oe/recipes-connectivity/transmission/files/transmission-daemon b/meta-openembedded/meta-oe/recipes-connectivity/transmission/files/transmission-daemon
new file mode 100644
index 0000000..d1ffff5
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-connectivity/transmission/files/transmission-daemon
@@ -0,0 +1,163 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          transmission-daemon
+# Required-Start:    networking
+# Required-Stop:     networking
+# Default-Start:     2 3 5
+# Default-Stop:      0 1 6
+# Short-Description: Start the transmission BitTorrent daemon client.
+### END INIT INFO
+
+# Original Author: Lennart A. JÃŒtte, based on Rob Howell's script
+# Modified by Maarten Van Coile & others (on IRC)
+
+# Do NOT "set -e"
+
+#
+# ----- CONFIGURATION -----
+#
+# For the default location Transmission uses, visit:
+# http://trac.transmissionbt.com/wiki/ConfigFiles
+# For a guide on how set the preferences, visit:
+# http://trac.transmissionbt.com/wiki/EditConfigFiles
+# For the available environement variables, visit:
+# http://trac.transmissionbt.com/wiki/EnvironmentVariables
+#
+# The name of the user that should run Transmission.
+# It's RECOMENDED to run Transmission in it's own user,
+# by default, this is set to 'transmission'.
+# For the sake of security you shouldn't set a password
+# on this user
+USERNAME=transmission
+
+
+# ----- *ADVANCED* CONFIGURATION -----
+# Only change these options if you know what you are doing!
+#
+# The folder where Transmission stores the config & web files.
+# ONLY change this you have it at a non-default location
+#TRANSMISSION_HOME="/var/config/transmission-daemon"
+#TRANSMISSION_WEB_HOME="/usr/share/transmission/web"
+#
+# The arguments passed on to transmission-daemon.
+# ONLY change this you need to, otherwise use the
+# settings file as per above.
+#TRANSMISSION_ARGS=""
+
+
+# ----- END OF CONFIGURATION -----
+#
+# PATH should only include /usr/* if it runs after the mountnfs.sh script.
+PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+DESC="bittorrent client"
+NAME=transmission-daemon
+DAEMON=$(which $NAME)
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+#
+# Function that starts the daemon/service
+#
+
+do_start()
+{
+    # Export the configuration/web directory, if set
+    if [ -n "$TRANSMISSION_HOME" ]; then
+          export TRANSMISSION_HOME
+    fi
+    if [ -n "$TRANSMISSION_WEB_HOME" ]; then
+          export TRANSMISSION_WEB_HOME
+    fi
+
+    # Return
+    #   0 if daemon has been started
+    #   1 if daemon was already running
+    #   2 if daemon could not be started
+    start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \
+            --exec $DAEMON --background --test -- -f $TRANSMISSION_ARGS > /dev/null \
+            || return 1
+    start-stop-daemon --chuid $USERNAME --start --pidfile $PIDFILE --make-pidfile \
+            --exec $DAEMON --background -- -f $TRANSMISSION_ARGS \
+            || return 2
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+        # Return
+        #   0 if daemon has been stopped
+        #   1 if daemon was already stopped
+        #   2 if daemon could not be stopped
+        #   other if a failure occurred
+        start-stop-daemon --stop --quiet --retry=TERM/10/KILL/5 --pidfile $PIDFILE --exec $DAEMON 
+        RETVAL="$?"
+        [ "$RETVAL" = 2 ] && return 2
+
+        # Wait for children to finish too if this is a daemon that forks
+        # and if the daemon is only ever run from this initscript.
+        # If the above conditions are not satisfied then add some other code
+        # that waits for the process to drop all resources that could be
+        # needed by services started subsequently.  A last resort is to
+        # sleep for some time.
+
+        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+        [ "$?" = 2 ] && return 2
+
+        # Many daemons don't delete their pidfiles when they exit.
+        rm -f $PIDFILE
+
+        return "$RETVAL"
+}
+
+case "$1" in
+  start)
+        echo "Starting $DESC" "$NAME..."
+        do_start
+        case "$?" in
+                0|1) echo "   Starting $DESC $NAME succeeded" ;;
+                *)   echo "   Starting $DESC $NAME failed" ;;
+        esac
+        ;;
+  stop)
+        echo "Stopping $DESC $NAME..."
+        do_stop
+        case "$?" in
+                0|1) echo "   Stopping $DESC $NAME succeeded" ;;
+                *)   echo "   Stopping $DESC $NAME failed" ;;
+        esac
+        ;;
+  restart|force-reload)
+        #
+        # If the "reload" option is implemented then remove the
+        # 'force-reload' alias
+        #
+        echo "Restarting $DESC $NAME..."
+        do_stop
+        case "$?" in
+          0|1)
+                do_start
+                case "$?" in
+                    0|1) echo "   Restarting $DESC $NAME succeeded" ;;
+                    *)   echo "   Restarting $DESC $NAME failed: couldn't start $NAME" ;;
+                esac
+                ;;
+          *)
+                echo "   Restarting $DESC $NAME failed: couldn't stop $NAME" ;;
+        esac
+        ;;
+  *)
+        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
+        exit 3
+        ;;
+esac
