diff --git a/package/Config.in b/package/Config.in
index 550fdc1f411..5dab5de59c1 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1734,6 +1734,7 @@ menu "Graphics"
 	source "package/wlroots/Config.in"
 	source "package/woff2/Config.in"
 	source "package/wpebackend-fdo/Config.in"
+	source "package/wpebackend-rdk/Config.in"
 	source "package/wpewebkit/Config.in"
 	source "package/zbar/Config.in"
 	source "package/zxing-cpp/Config.in"
diff --git a/package/wpebackend-rdk/Config.in b/package/wpebackend-rdk/Config.in
new file mode 100644
index 00000000000..6125911bec9
--- /dev/null
+++ b/package/wpebackend-rdk/Config.in
@@ -0,0 +1,57 @@
+comment "wpebackend-rdk needs a toolchain w/ C++, wchar, threads, dynamic library, and rpi-userland or an OpenGL-capable Wayland backend"
+	depends on !(BR2_PACKAGE_RPI_USERLAND || BR2_PACKAGE_HAS_LIBEGL_WAYLAND) \
+		|| !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR \
+		|| !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
+
+config BR2_PACKAGE_WPEBACKEND_RDK
+	bool "wpebackend-rdk"
+	depends on !BR2_STATIC_LIBS # wayland
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_TOOLCHAIN_HAS_THREADS # wayland, libglib2
+	depends on BR2_USE_WCHAR # libglib2
+	depends on BR2_USE_MMU # libglib2
+	depends on BR2_PACKAGE_RPI_USERLAND || BR2_PACKAGE_HAS_LIBEGL_WAYLAND
+	select BR2_PACKAGE_LIBGLIB2
+	select BR2_PACKAGE_LIBWPE
+	help
+	  WPEBackend interface supporting a number of configurations.
+
+if BR2_PACKAGE_WPEBACKEND_RDK
+
+choice
+	prompt Implementation
+	default BR2_PACKAGE_WPEBACKEND_RDK_IMPL_BRCM_RPI if BR2_PACKAGE_RPI_USERLAND
+	default BR2_PACKAGE_WPEBACKEND_RDK_IMPL_WAYLAND_EGL if BR2_PACKAGE_HAS_LIBEGL_WAYLAND
+
+comment "brcm-rpi needs rpi-userland"
+	depends on !BR2_PACKAGE_RPI_USERLAND || !BR2_arm
+
+config BR2_PACKAGE_WPEBACKEND_RDK_IMPL_BRCM_RPI
+	bool "brcm-rpi"
+	depends on BR2_arm
+	depends on BR2_PACKAGE_RPI_USERLAND
+	help
+	  Build RaspberryPi support using Broadcom's rpi-userland.
+
+comment "wayland-egl needs an EGL capable Wayland implementation"
+	depends on !BR2_PACKAGE_HAS_LIBEGL_WAYLAND
+
+config BR2_PACKAGE_WPEBACKEND_RDK_IMPL_WAYLAND_EGL
+	bool "wayland-egl"
+	depends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND
+	help
+	  Build Wayland-EGL support.
+
+endchoice
+
+if BR2_PACKAGE_WPEBACKEND_RDK_IMPL_BRCM_RPI
+
+config BR2_PACKAGE_WPEBACKEND_RDK_LIBINPUT
+	bool "libinput support"
+	select BR2_PACKAGE_LIBINPUT
+	help
+	  Support keyboard and mouse input through libinput
+
+endif
+
+endif
diff --git a/package/wpebackend-rdk/wpebackend-rdk.hash b/package/wpebackend-rdk/wpebackend-rdk.hash
new file mode 100644
index 00000000000..af7dab6a365
--- /dev/null
+++ b/package/wpebackend-rdk/wpebackend-rdk.hash
@@ -0,0 +1,5 @@
+# Generated locally
+sha256  4c6ae288cf66f0a47052a50972e3d3727617c4c3e104db20494a3c5feb262f40  wpebackend-rdk-4.4.1.tar.gz
+
+# License files
+sha256  a5ba969938c2896411ea1a23ee7d9ccb68306a65615b6711afe738c8f6ff2153  COPYING
diff --git a/package/wpebackend-rdk/wpebackend-rdk.mk b/package/wpebackend-rdk/wpebackend-rdk.mk
new file mode 100644
index 00000000000..f9740eb46cd
--- /dev/null
+++ b/package/wpebackend-rdk/wpebackend-rdk.mk
@@ -0,0 +1,43 @@
+################################################################################
+#
+# wpebackend-rdk
+#
+################################################################################
+
+WPEBACKEND_RDK_VERSION = 4.4.1
+WPEBACKEND_RDK_SITE = $(call github,WebPlatformForEmbedded,WPEBackend-rdk,R$(WPEBACKEND_RDK_VERSION))
+WPEBACKEND_RDK_INSTALL_STAGING = YES
+WPEBACKEND_RDK_LICENSE = BSD-2-Clause
+WPEBACKEND_RDK_LICENSE_FILES = COPYING
+WPEBACKEND_RDK_DEPENDENCIES = libglib2 libwpe
+WPEBACKEND_RDK_CONF_OPTS = \
+	-DUSE_BACKEND_BCM_NEXUS=OFF \
+	-DUSE_BACKEND_BCM_NEXUS_WAYLAND=OFF \
+	-DUSE_BACKEND_INTEL_CE=OFF \
+	-DUSE_BACKEND_WESTEROS=OFF \
+	-DUSE_BACKEND_WPEFRAMEWORK=OFF \
+	-DUSE_HOLE_PUNCH_GSTREAMER=OFF \
+	-DUSE_VIRTUAL_KEYBOARD=OFF
+
+ifeq ($(BR2_PACKAGE_WPEBACKEND_RDK_IMPL_BRCM_RPI),y)
+WPEBACKEND_RDK_CONF_OPTS += -DUSE_BACKEND_BCM_RPI=ON
+WPEBACKEND_RDK_DEPENDENCIES += rpi-userland
+else
+WPEBACKEND_RDK_CONF_OPTS += -DUSE_BACKEND_BCM_RPI=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_WPEBACKEND_RDK_IMPL_WAYLAND_EGL),y)
+WPEBACKEND_RDK_CONF_OPTS += -DUSE_BACKEND_WAYLAND_EGL=ON
+WPEBACKEND_RDK_DEPENDENCIES += libegl wayland
+else
+WPEBACKEND_RDK_CONF_OPTS += -DUSE_BACKEND_WAYLAND_EGL=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_WPEBACKEND_RDK_LIBINPUT),y)
+WPEBACKEND_RDK_CONF_OPTS += -DUSE_INPUT_LIBINPUT=ON
+WPEBACKEND_RDK_DEPENDENCIES += libinput
+else
+WPEBACKEND_RDK_CONF_OPTS += -DUSE_INPUT_LIBINPUT=OFF
+endif
+
+$(eval $(cmake-package))
