diff --git a/recipes-bsp/formfactor/formfactor/turris/machconfig b/recipes-bsp/formfactor/formfactor/turris/machconfig
deleted file mode 100644
index 7c4ebd7..0000000
--- a/recipes-bsp/formfactor/formfactor/turris/machconfig
+++ /dev/null
@@ -1,20 +0,0 @@
-# If not stated otherwise in this file or this component's LICENSE
-# file the following copyright and licenses apply:
-#
-#Copyright [2019] [RDK Management]
-#
-#Licensed under the Apache License, Version 2.0 (the "License");
-#you may not use this file except in compliance with the License.
-#You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-#Unless required by applicable law or agreed to in writing, software
-#distributed under the License is distributed on an "AS IS" BASIS,
-#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#See the License for the specific language governing permissions and
-#limitations under the License.
-
-# Assume a USB mouse and keyboard are connected
-HAVE_TOUCHSCREEN=n
-HAVE_KEYBOARD=y
diff --git a/recipes-bsp/formfactor/formfactor_0.0.bbappend b/recipes-bsp/formfactor/formfactor_0.0.bbappend
deleted file mode 100644
index 6d4804d..0000000
--- a/recipes-bsp/formfactor/formfactor_0.0.bbappend
+++ /dev/null
@@ -1,2 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
diff --git a/recipes-ccsp/ccsp/ccsp-cm-agent.bbappend b/recipes-ccsp/ccsp/ccsp-cm-agent.bbappend
deleted file mode 100644
index b6d875c..0000000
--- a/recipes-ccsp/ccsp/ccsp-cm-agent.bbappend
+++ /dev/null
@@ -1,18 +0,0 @@
-require ccsp_common_turris.inc
-
-DEPENDS_append_dunfell = " safec"
-LDFLAGS_append_dunfell = " -lsafec-3.5.1"
-
-EXTRA_OECONF_remove = " ${@bb.utils.contains('DISTRO_FEATURES', 'rdkb_wan_manager', '--enable-wanmgr', '', d)}"
-
-do_install_append() {
-    # Config files and scripts
-    install -m 644 ${S}/config-arm/CcspCMDM.cfg ${D}${prefix}/ccsp/cm/CcspCMDM.cfg
-    install -m 644 ${S}/config-arm/CcspCM.cfg ${D}${prefix}/ccsp/cm/CcspCM.cfg
-    install -m 644 ${S}/config-arm/TR181-CM.XML ${D}${prefix}/ccsp/cm/TR181-CM.XML
-
-    # delete files that are installed by some other package
-    rm -f ${D}/usr/include/ccsp/cosa_apis.h
-    rm -f ${D}/usr/include/ccsp/cosa_apis_busutil.h
-    rm -f ${D}/usr/include/ccsp/cosa_dml_api_common.h
-}
diff --git a/recipes-ccsp/ccsp/ccsp-epon-agent.bbappend b/recipes-ccsp/ccsp/ccsp-epon-agent.bbappend
deleted file mode 100644
index 41df9ff..0000000
--- a/recipes-ccsp/ccsp/ccsp-epon-agent.bbappend
+++ /dev/null
@@ -1,3 +0,0 @@
-require ccsp_common_turris.inc
-
-LDFLAGS_append_dunfell = " -lbreakpadwrapper"
diff --git a/recipes-ccsp/ccsp/ccsp-gwprovapp-epon.bbappend b/recipes-ccsp/ccsp/ccsp-gwprovapp-epon.bbappend
deleted file mode 100644
index 1836ce2..0000000
--- a/recipes-ccsp/ccsp/ccsp-gwprovapp-epon.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-require ccsp_common_turris.inc
diff --git a/recipes-ccsp/ccsp/ccsp-gwprovapp-ethwan.bbappend b/recipes-ccsp/ccsp/ccsp-gwprovapp-ethwan.bbappend
deleted file mode 100644
index 767dd86..0000000
--- a/recipes-ccsp/ccsp/ccsp-gwprovapp-ethwan.bbappend
+++ /dev/null
@@ -1,31 +0,0 @@
-require ccsp_common_turris.inc
-
-export PLATFORM_TURRIS_ENABLED="yes"
-
-inherit systemd
-
-DEPENDS_remove_dunfell = "hal-gwprovappabs"
-DEPENDS_append_dunfell = " breakpad-wrapper rdk-logger utopia"
-
-LDFLAGS_remove_dunfell = "-lgwprovappabs"
-
-CFLAGS_append = " -Wno-unused-variable -Wno-sizeof-pointer-memaccess -Wno-unused-parameter -Wno-unused-but-set-variable "
-
-do_install_append () {
-	install -d ${D}${systemd_unitdir}/system
-	install -m 0644 ${S}/service/gwprovethwan.service ${D}${systemd_unitdir}/system
-        sed -i "s/After=rg_network.service/After=network.target/g"  ${D}${systemd_unitdir}/system/gwprovethwan.service
-        sed -i "/After=network.target/a wants=network.target"  ${D}${systemd_unitdir}/system/gwprovethwan.service
-        sed -e '/Type/ s/^#*/#/' -i  ${D}${systemd_unitdir}/system/gwprovethwan.service
-        sed -e '/ExecStartPre/ s/^#*/#/' -i  ${D}${systemd_unitdir}/system/gwprovethwan.service
-        sed -i "/utopia_init.sh/a ExecStartPre=-/bin/sh -c 'mkdir -p /rdklogs/logs/'"  ${D}${systemd_unitdir}/system/gwprovethwan.service
-        sed -e '/ExecStartPost/ s/^#*/#/' -i  ${D}${systemd_unitdir}/system/gwprovethwan.service
-        sed -i "/bin\/rm/a Restart=always"  ${D}${systemd_unitdir}/system/gwprovethwan.service
-        sed -i "s/StandardOutput=syslog/StandardOutput=syslog+console/g"  ${D}${systemd_unitdir}/system/gwprovethwan.service
-        sed -i "s/wants=/Wants=/"  ${D}${systemd_unitdir}/system/gwprovethwan.service
-}
-
-SYSTEMD_SERVICE_${PN} = "gwprovethwan.service"
-FILES_${PN} += " \
-     ${systemd_unitdir}/system/gwprovethwan.service \
-"
diff --git a/recipes-ccsp/ccsp/ccsp-gwprovapp.bbappend b/recipes-ccsp/ccsp/ccsp-gwprovapp.bbappend
deleted file mode 100644
index 5121b5f..0000000
--- a/recipes-ccsp/ccsp/ccsp-gwprovapp.bbappend
+++ /dev/null
@@ -1,23 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-require ccsp_common_turris.inc
-
-SRC_URI += " file://turris-macro-gwprov.patch;apply=no"
-SRC_URI += " file://set-uplink-for-turris.patch;apply=no"
-
-# we need to patch to code for Turris
-do_turris_patches() {
-    cd ${S}
-    if [ ! -e patch_applied ]; then
-        patch -p1 < ${WORKDIR}/turris-macro-gwprov.patch
-        patch -p1 < ${WORKDIR}/set-uplink-for-turris.patch
-        touch patch_applied
-    fi
-}
-addtask turris_patches after do_unpack before do_compile
-
-export PLATFORM_TURRIS_ENABLED="yes"
-
-FILES_${PN} += " \
-    /usr/bin/gw_prov_utopia \
-"
diff --git a/recipes-ccsp/ccsp/ccsp-hotspot.bbappend b/recipes-ccsp/ccsp/ccsp-hotspot.bbappend
deleted file mode 100644
index 6e99747..0000000
--- a/recipes-ccsp/ccsp/ccsp-hotspot.bbappend
+++ /dev/null
@@ -1,4 +0,0 @@
-require ccsp_common_turris.inc
-
-LDFLAGS_append_dunfell = " -lsafec-3.5.1"
-EXTRA_OECONF_append  = " --with-ccsp-arch=arm"
diff --git a/recipes-ccsp/ccsp/ccsp-logagent.bbappend b/recipes-ccsp/ccsp/ccsp-logagent.bbappend
deleted file mode 100644
index 8f3aafc..0000000
--- a/recipes-ccsp/ccsp/ccsp-logagent.bbappend
+++ /dev/null
@@ -1,3 +0,0 @@
-require ccsp_common_turris.inc
-
-LDFLAGS_append_dunfell = " -lpthread"
diff --git a/recipes-ccsp/ccsp/ccsp-mta-agent.bbappend b/recipes-ccsp/ccsp/ccsp-mta-agent.bbappend
deleted file mode 100644
index 0a03081..0000000
--- a/recipes-ccsp/ccsp/ccsp-mta-agent.bbappend
+++ /dev/null
@@ -1,11 +0,0 @@
-require ccsp_common_turris.inc
-
-DEPENDS_append_dunfell = " safec"
-LDFLAGS_append_dunfell = " -lsafec-3.5.1"
-
-do_install_append() {
-    # Config files and scripts
-    install -m 644 ${S}/config/CcspMtaAgent.xml ${D}/usr/ccsp/mta/CcspMtaAgent.xml
-    install -m 644 ${S}/config/CcspMta.cfg ${D}/usr/ccsp/mta/CcspMta.cfg
-    install -m 644 ${S}/config/CcspMtaLib.cfg ${D}/usr/ccsp/mta/CcspMtaLib.cfg
-}
diff --git a/recipes-ccsp/ccsp/ccsp-tr069-pa.bbappend b/recipes-ccsp/ccsp/ccsp-tr069-pa.bbappend
deleted file mode 100644
index fa6eb0c..0000000
--- a/recipes-ccsp/ccsp/ccsp-tr069-pa.bbappend
+++ /dev/null
@@ -1,40 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-require ccsp_common_turris.inc
-LDFLAGS += "-Wl,--no-as-needed -lulog"
-
-EXTRA_OECONF_append  = " --with-ccsp-arch=arm"
-
-LDFLAGS_append_dunfell = " -lsafec-3.5.1 -lcrypto"
-
-do_install_append () {
-    # Config files and scripts
-    install -m 644 ${S}/config/ccsp_tr069_pa_certificate_cfg_arm.xml ${D}/usr/ccsp/tr069pa/ccsp_tr069_pa_certificate_cfg.xml
-    install -m 644 ${S}/config/ccsp_tr069_pa_cfg_arm.xml ${D}/usr/ccsp/tr069pa/ccsp_tr069_pa_cfg.xml
-    install -m 644 ${S}/config/ccsp_tr069_pa_mapper_arm.xml ${D}/usr/ccsp/tr069pa/ccsp_tr069_pa_mapper.xml
-    install -m 644 ${S}/config/sdm_arm.xml ${D}/usr/ccsp/tr069pa/sdm.xml
-
-    install -d ${D}/fss/gw/
-    install -d ${D}/fss/gw/usr/ccsp/
-    install -d ${D}/etc
-    install -m 777 ${D}/usr/bin/CcspTr069PaSsp -t ${D}/usr/ccsp/tr069pa
-
-    ln -sf /version.txt ${D}/fss/gw/version.txt
-    ln -sf /usr/ccsp/tr069pa/ ${D}/fss/gw/usr/ccsp/tr069pa
-    ln -sf /usr/ccsp/tr069pa/sdm.xml ${D}/usr/bin/sdm.xml
-    ln -sf /usr/ccsp/tr069pa/url ${D}${sysconfdir}/url
-    echo "5555" > ${D}/usr/ccsp/tr069pa/sharedkey
-}
-
-FILES_${PN}-ccsp += " \
-    ${prefix}/ccsp/tr069pa/CcspTr069PaSsp \
-"
-
-FILES_${PN} += " \
-    /fss/gw/usr/ccsp/ \
-    /fss/gw/version.txt \
-    /etc/url \
-"
-
-do_package_qa(){
-}
diff --git a/recipes-ccsp/ccsp/ccsp_common_turris.inc b/recipes-ccsp/ccsp/ccsp_common_turris.inc
index be9503d..00eef0a 100644
--- a/recipes-ccsp/ccsp/ccsp_common_turris.inc
+++ b/recipes-ccsp/ccsp/ccsp_common_turris.inc
@@ -5,7 +5,7 @@
            -D_DSLH_STUN_ -D_NO_PKI_KB5_SUPPORT -D_BBHM_SSE_FILE_IO -D_ANSC_USE_OPENSSL_ -DENABLE_SA_KEY \
            -D_ANSC_AES_USED_ -D_NO_EXECINFO_H_ -DFEATURE_SUPPORT_SYSLOG \
            -DBUILD_WEB -D_NO_ANSC_ZLIB_ -D_DEBUG -U_ANSC_IPV6_COMPATIBLE_ -DUSE_NOTIFY_COMPONENT \
-           -D_PLATFORM_TURRIS_ -DENABLE_SD_NOTIFY -DCOSA_DML_WIFI_FEATURE_LoadPsmDefaults -UPARODUS_ENABLE -DENABLE_FEATURE_MESHWIFI"
+           -D_PLATFORM_TURRIS_ -DENABLE_SD_NOTIFY -DCOSA_DML_WIFI_FEATURE_LoadPsmDefaults -UPARODUS_ENABLE"
 CFLAGS_append += "${@bb.utils.contains('DISTRO_FEATURES', 'rdkb_wan_manager', ' -DFEATURE_RDKB_WAN_MANAGER ', '', d)}"
 
 CFLAGS_append_aarch64 = " -D_64BIT_ARCH_SUPPORT_ "
diff --git a/recipes-ccsp/ccsp/harvester_git.bbappend b/recipes-ccsp/ccsp/harvester_git.bbappend
deleted file mode 100644
index 5b22fa5..0000000
--- a/recipes-ccsp/ccsp/harvester_git.bbappend
+++ /dev/null
@@ -1,2 +0,0 @@
-CFLAGS_append_aarch64 = " -D_64BIT_ARCH_SUPPORT_ "
-CFLAGS_append  = " -DWIFI_HAL_VERSION_3"
diff --git a/recipes-common/mesh-agent/files/enabling_dhcp_lease_resync.patch b/recipes-common/mesh-agent/files/enabling_dhcp_lease_resync.patch
deleted file mode 100644
index b149b34..0000000
--- a/recipes-common/mesh-agent/files/enabling_dhcp_lease_resync.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From cc64f3a69d13feda1b9f07b8f572080436d7560b Mon Sep 17 00:00:00 2001
-From: "rajakumaran.a" <rajakumaran.a@lnttechservices.com>
-Date: Thu, 2 Apr 2020 10:09:05 +0000
-Subject: [PATCH] Mesh dns lease update
-
-Signed-off-by: rajakumaran.a <rajakumaran.a@lnttechservices.com>
-Change-Id: Ib098c6d444b75d15120b2224ff46869b0e436c2f
----
- source/MeshAgentSsp/cosa_mesh_apis.c | 15 ++++++++++++++-
- 1 file changed, 14 insertions(+), 1 deletion(-)
-
-diff --git a/source/MeshAgentSsp/cosa_mesh_apis.c b/source/MeshAgentSsp/cosa_mesh_apis.c
-index 46ed117..566cc0d 100644
---- a/source/MeshAgentSsp/cosa_mesh_apis.c
-+++ b/source/MeshAgentSsp/cosa_mesh_apis.c
-@@ -2154,7 +2154,9 @@ static void *Mesh_sysevent_handler(void *data)
-     async_id_t mesh_enable_asyncid;
-     async_id_t mesh_url_asyncid;
-     async_id_t wifi_txRate_asyncid;
--
-+#ifdef _PLATFORM_TURRIS_
-+    async_id_t lease_resync_asyncid;
-+#endif
-     sysevent_set_options(sysevent_fd,     sysevent_token, meshSyncMsgArr[MESH_WIFI_RESET].sysStr,                     TUPLE_FLAG_EVENT);
-     sysevent_setnotification(sysevent_fd, sysevent_token, meshSyncMsgArr[MESH_WIFI_RESET].sysStr,                     &wifi_init_asyncid);
-     sysevent_set_options(sysevent_fd,     sysevent_token, meshSyncMsgArr[MESH_WIFI_SSID_NAME].sysStr,                 TUPLE_FLAG_EVENT);
-@@ -2195,6 +2197,10 @@ static void *Mesh_sysevent_handler(void *data)
-     sysevent_set_options(sysevent_fd,     sysevent_token, meshSyncMsgArr[MESH_WIFI_TXRATE].sysStr,                   TUPLE_FLAG_EVENT);
-     sysevent_setnotification(sysevent_fd, sysevent_token, meshSyncMsgArr[MESH_WIFI_TXRATE].sysStr,                   &wifi_txRate_asyncid);
- 
-+#ifdef _PLATFORM_TURRIS_
-+    sysevent_set_options(sysevent_fd,     sysevent_token, meshSyncMsgArr[MESH_DHCP_RESYNC_LEASES].sysStr,                   TUPLE_FLAG_EVENT);
-+    sysevent_setnotification(sysevent_fd, sysevent_token, meshSyncMsgArr[MESH_DHCP_RESYNC_LEASES].sysStr,                   &lease_resync_asyncid);
-+#endif
- 
-     for (;;)
-     {
-@@ -3198,6 +3204,13 @@ static void *Mesh_sysevent_handler(void *data)
-                     }
-                 }
-             }
-+#ifdef _PLATFORM_TURRIS_
-+            else if (strcmp(name, meshSyncMsgArr[MESH_DHCP_RESYNC_LEASES].sysStr)==0)
-+            {
-+                //This will handle sending lease information to plume for every new connection, without restarting the MeshAgent
-+                Mesh_sendDhcpLeaseSync();
-+            }
-+#endif
-             else
-             {
-                 MeshWarning("undefined event %s \n",name);
--- 
-2.24.0
-
diff --git a/recipes-common/mesh-agent/files/meshagent-enable-ovs-default.patch b/recipes-common/mesh-agent/files/meshagent-enable-ovs-default.patch
deleted file mode 100644
index 2fbdb31..0000000
--- a/recipes-common/mesh-agent/files/meshagent-enable-ovs-default.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/source/MeshAgentSsp/cosa_mesh_apis.c b/source/MeshAgentSsp/cosa_mesh_apis.c
-index c100dfd..a33b37e 100644
---- a/source/MeshAgentSsp/cosa_mesh_apis.c
-+++ b/source/MeshAgentSsp/cosa_mesh_apis.c
-@@ -2497,7 +2497,7 @@ static void Mesh_SetDefaults(ANSC_HANDLE hThisObject)
-     if(Mesh_SysCfgGetStr("mesh_ovs_enable", out_val, sizeof(out_val)) != 0)
-     {
-         MeshInfo("Syscfg error, Setting OVS mode to default\n");
--        Mesh_SetOVS(false,true,true);
-+        Mesh_SetOVS(true,true,true);
-     }
-     else
-     {
diff --git a/recipes-common/mesh-agent/files/skip-apply-settings.patch b/recipes-common/mesh-agent/files/skip-apply-settings.patch
deleted file mode 100644
index 1dcb38a..0000000
--- a/recipes-common/mesh-agent/files/skip-apply-settings.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff --git a/source/MeshAgentSsp/cosa_mesh_apis.c b/source/MeshAgentSsp/cosa_mesh_apis.c
-index fd657d5..b4d441b 100644
---- a/source/MeshAgentSsp/cosa_mesh_apis.c
-+++ b/source/MeshAgentSsp/cosa_mesh_apis.c
-@@ -1470,7 +1470,7 @@ bool Mesh_GetEnabled(const char *name)
- 
-     return enabled;
- }
--
-+#ifndef _PLATFORM_TURRIS_
- static void applyWifiRadioSettings(int radioId)
- {
-     CCSP_MESSAGE_BUS_INFO *bus_info = (CCSP_MESSAGE_BUS_INFO *)bus_handle;
-@@ -1506,6 +1506,7 @@ static void applyWifiRadioSettings(int radioId)
-         bus_info->freefunc(faultParam);
-     }
- }
-+#endif
- 
- void changeChBandwidth(int radioId, int channelBw) {
-   CCSP_MESSAGE_BUS_INFO *bus_info = (CCSP_MESSAGE_BUS_INFO *)bus_handle;
-@@ -1543,7 +1544,12 @@ void changeChBandwidth(int radioId, int channelBw) {
-         bus_info->freefunc( faultParam );
-     }
- 
-+/* On Turris omnia platform change bandwidth is already done with wifi_pushRadioChannel2 call.
-+ * We want to copy config to datamodel, but we don't want to apply radio settings
-+ */
-+#ifndef _PLATFORM_TURRIS_
-     applyWifiRadioSettings(radioId);
-+#endif
- }
-
diff --git a/recipes-common/mesh-agent/mesh-agent.bbappend b/recipes-common/mesh-agent/mesh-agent.bbappend
deleted file mode 100644
index 5e04c60..0000000
--- a/recipes-common/mesh-agent/mesh-agent.bbappend
+++ /dev/null
@@ -1,40 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI += "\
-file://enabling_dhcp_lease_resync.patch;apply=no \
-file://meshagent-enable-ovs-default.patch;apply=no \
-file://skip-apply-settings.patch;apply=no \
-"
-
-DEPENDS_append_dunfell = " safec trower-base64"
-RDEPENDS_${PN}_append_dunfell = " bash"
-
-# we need to patch to code for mesh-agent
-do_turris_meshagent_patches() {
-    cd ${S}
-    if [ ! -e patch_applied ]; then
-        bbnote "Patching enabling_dhcp_lease_resync.patch"
-        patch  -p1 < ${WORKDIR}/enabling_dhcp_lease_resync.patch ${S}/source/MeshAgentSsp/cosa_mesh_apis.c
-
-        bbnote "Patching meshagent-enable-ovs-default.patch"
-        patch  -p1 < ${WORKDIR}/meshagent-enable-ovs-default.patch ${S}/source/MeshAgentSsp/cosa_mesh_apis.c
-
-        bbnote "Patching skip-apply-settings.patch"
-        patch  -p1 < ${WORKDIR}/skip-apply-settings.patch ${S}/source/MeshAgentSsp/cosa_mesh_apis.c
-
-        touch patch_applied
-    fi
-}
-addtask turris_meshagent_patches after do_unpack before do_configure
-
-do_install_append () {
-       install -D -m 0644 ${S}/systemd_units/meshAgent.service ${D}${systemd_unitdir}/system/meshAgent.service
-}
-
-FILES_${PN}_append = "${systemd_unitdir}/system/meshAgent.service"
-
-CFLAGS_append = " -D_PLATFORM_TURRIS_"
-
-LDFLAGS_append_dunfell = " -lsyscfg -lsysevent -lbreakpadwrapper -lsafec-3.5.1"
-
-LDFLAGS_remove_dunfell = "-lsafec-3.5"
diff --git a/recipes-common/rdk-logger/files/0001-Add-sys-time-and-select-include.patch b/recipes-common/rdk-logger/files/0001-Add-sys-time-and-select-include.patch
deleted file mode 100644
index 935d37f..0000000
--- a/recipes-common/rdk-logger/files/0001-Add-sys-time-and-select-include.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 5885fbd6a145e12e36b90d0627306a23eface17f Mon Sep 17 00:00:00 2001
-From: Simon Chung <simon.c.chung@accenture.com>
-Date: Fri, 16 Apr 2021 11:47:02 +0100
-Subject: [PATCH] Add sys time and select include
-
-Change-Id: Ia00ff2f15280e564b8ff4af0fb255444292c2855
----
- src/rdk_dynamic_logger.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/rdk_dynamic_logger.c b/src/rdk_dynamic_logger.c
-index 48eb55e..6675dfa 100644
---- a/src/rdk_dynamic_logger.c
-+++ b/src/rdk_dynamic_logger.c
-@@ -28,6 +28,9 @@
- #include <unistd.h>
- #include "rdk_dynamic_logger.h"
- 
-+#include <sys/time.h>
-+#include <sys/select.h>
-+
- #define DL_PORT 12035
- #define DL_SIGNATURE "COMC"
- #define DL_SIGNATURE_LEN 4
--- 
-2.28.0
-
diff --git a/recipes-common/rdk-logger/rdk-logger_git.bbappend b/recipes-common/rdk-logger/rdk-logger_git.bbappend
deleted file mode 100644
index 59b1edb..0000000
--- a/recipes-common/rdk-logger/rdk-logger_git.bbappend
+++ /dev/null
@@ -1,17 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'extender', 'file://0001-Add-sys-time-and-select-include.patch;apply=no', '', d)}"
-
-# we need to patch to code for rdk-logger
-do_rdk_logger_patches() {
-    cd ${S}
-    if [ -f ${WORKDIR}/0001-Add-sys-time-and-select-include.patch ]; then
-        if [ ! -e patch_applied_rdklogger ]; then
-            bbnote "Patching 0001-Add-sys-time-and-select-include.patch"
-            patch -p1 < ${WORKDIR}/0001-Add-sys-time-and-select-include.patch
-
-            touch patch_applied_rdklogger
-        fi
-    fi
-}
-addtask do_rdk_logger_patches after do_unpack before do_configure
diff --git a/recipes-connectivity/hostapd/files/c89daaeca4ee90c8bc158e37acb1b679c823d7ab.patch b/recipes-connectivity/hostapd/files/c89daaeca4ee90c8bc158e37acb1b679c823d7ab.patch
deleted file mode 100644
index 6e2715a..0000000
--- a/recipes-connectivity/hostapd/files/c89daaeca4ee90c8bc158e37acb1b679c823d7ab.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From c89daaeca4ee90c8bc158e37acb1b679c823d7ab Mon Sep 17 00:00:00 2001
-From: Helmut Schaa <helmut.schaa@googlemail.com>
-Date: Tue, 3 Dec 2013 14:51:43 +0100
-Subject: [PATCH] hostapd: Initial OVS support
-
----
- src/drivers/linux_ioctl.c | 67 ++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 66 insertions(+), 1 deletion(-)
-
-diff --git a/src/drivers/linux_ioctl.c b/src/drivers/linux_ioctl.c
-index 837971d2..e54aeb06 100644
---- a/src/drivers/linux_ioctl.c
-+++ b/src/drivers/linux_ioctl.c
-@@ -14,6 +14,62 @@
- #include "utils/common.h"
- #include "linux_ioctl.h"
- 
-+#define OPENVSWITCH
-+#ifdef OPENVSWITCH
-+#include <sys/wait.h>
-+
-+#define run_prog(p, ...) ({ \
-+        int rc = -1, status; \
-+        pid_t pid = fork(); \
-+        if (!pid) \
-+                exit(execl(p, p, ##__VA_ARGS__, NULL)); \
-+        if (pid < 0) {\
-+                rc = -1;\
-+        } else {\
-+                while ((rc = waitpid(pid, &status, 0)) == -1 && errno == EINTR); \
-+		rc = (rc == pid && WIFEXITED(status)) ? WEXITSTATUS(status) : -1; \
-+        }\
-+        rc;\
-+})
-+
-+int ovs_br_get(char *brname, const char *ifname)
-+{
-+	FILE *f;
-+	char cmd[64];
-+	char *c;
-+
-+	brname[0] = '\0';
-+
-+	sprintf(cmd, "/usr/bin/ovs-vsctl iface-to-br %s", ifname);
-+	f = popen(cmd, "r");
-+	if (!f)
-+		return -1;
-+	c = fgets(brname, IFNAMSIZ, f);
-+	pclose(f);
-+	if (c && strlen(brname)) {
-+		/* Ignore newline */
-+		if ((c = strchr(brname, '\n')))
-+			*c = '\0';
-+		return 0;
-+	}
-+	return -1;
-+}
-+
-+int ovs_br_add_if(const char *brname, const char *ifname)
-+{
-+	if (run_prog("/usr/bin/ovs-vsctl", "add-port", brname, ifname))
-+		return -1;
-+	return 0;
-+}
-+
-+int ovs_br_del_if(const char *brname, const char *ifname)
-+{
-+	if (run_prog("/usr/bin/ovs-vsctl", "del-port", brname, ifname))
-+		return -1;
-+	return 0;
-+}
-+
-+#endif
- 
- int linux_set_iface_flags(int sock, const char *ifname, int dev_up)
- {
-@@ -162,6 +217,9 @@ int linux_br_add_if(int sock, const char *brname, const char *ifname)
- 	struct ifreq ifr;
- 	int ifindex;
- 
-+	if (!ovs_br_add_if(brname, ifname))
-+		return 0;
-+
- 	ifindex = if_nametoindex(ifname);
- 	if (ifindex == 0)
- 		return -1;
-@@ -184,6 +242,9 @@ int linux_br_del_if(int sock, const char *brname, const char *ifname)
- 	struct ifreq ifr;
- 	int ifindex;
- 
-+	if (!ovs_br_del_if(brname, ifname))
-+		return 0;
-+
- 	ifindex = if_nametoindex(ifname);
- 	if (ifindex == 0)
- 		return -1;
-@@ -206,6 +267,9 @@ int linux_br_get(char *brname, const char *ifname)
- 	char path[128], brlink[128], *pos;
- 	ssize_t res;
- 
-+	if (!ovs_br_get(brname, ifname))
-+		return 0;
-+
- 	os_snprintf(path, sizeof(path), "/sys/class/net/%s/brport/bridge",
- 		    ifname);
- 	res = readlink(path, brlink, sizeof(brlink));
-@@ -219,3 +283,4 @@ int linux_br_get(char *brname, const char *ifname)
- 	os_strlcpy(brname, pos, IFNAMSIZ);
- 	return 0;
- }
-+
diff --git a/recipes-connectivity/hostapd/files/defconfig b/recipes-connectivity/hostapd/files/defconfig
deleted file mode 100644
index 7b04cc3..0000000
--- a/recipes-connectivity/hostapd/files/defconfig
+++ /dev/null
@@ -1,391 +0,0 @@
-# Example hostapd build time configuration
-#
-# This file lists the configuration options that are used when building the
-# hostapd binary. All lines starting with # are ignored. Configuration option
-# lines must be commented out complete, if they are not to be included, i.e.,
-# just setting VARIABLE=n is not disabling that variable.
-#
-# This file is included in Makefile, so variables like CFLAGS and LIBS can also
-# be modified from here. In most cass, these lines should use += in order not
-# to override previous values of the variables.
-
-# Driver interface for Host AP driver
-CONFIG_DRIVER_HOSTAP=y
-
-# Driver interface for wired authenticator
-CONFIG_DRIVER_WIRED=y
-
-# Driver interface for drivers using the nl80211 kernel interface
-CONFIG_DRIVER_NL80211=y
-
-# QCA vendor extensions to nl80211
-#CONFIG_DRIVER_NL80211_QCA=y
-
-# driver_nl80211.c requires libnl. If you are compiling it yourself
-# you may need to point hostapd to your version of libnl.
-#
-#CFLAGS += -I$<path to libnl include files>
-#LIBS += -L$<path to libnl library files>
-
-# Use libnl v2.0 (or 3.0) libraries.
-#CONFIG_LIBNL20=y
-
-# Use libnl 3.2 libraries (if this is selected, CONFIG_LIBNL20 is ignored)
-CONFIG_LIBNL32=y
-
-
-# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver)
-#CONFIG_DRIVER_BSD=y
-#CFLAGS += -I/usr/local/include
-#LIBS += -L/usr/local/lib
-#LIBS_p += -L/usr/local/lib
-#LIBS_c += -L/usr/local/lib
-
-# Driver interface for no driver (e.g., RADIUS server only)
-#CONFIG_DRIVER_NONE=y
-
-# IEEE 802.11F/IAPP
-CONFIG_IAPP=y
-
-# WPA2/IEEE 802.11i RSN pre-authentication
-CONFIG_RSN_PREAUTH=y
-
-# IEEE 802.11w (management frame protection)
-CONFIG_IEEE80211W=y
-
-# Support Operating Channel Validation
-#CONFIG_OCV=y
-
-# Integrated EAP server
-CONFIG_EAP=y
-
-# EAP Re-authentication Protocol (ERP) in integrated EAP server
-CONFIG_ERP=y
-
-# EAP-MD5 for the integrated EAP server
-CONFIG_EAP_MD5=y
-
-# EAP-TLS for the integrated EAP server
-CONFIG_EAP_TLS=y
-
-# EAP-MSCHAPv2 for the integrated EAP server
-CONFIG_EAP_MSCHAPV2=y
-
-# EAP-PEAP for the integrated EAP server
-CONFIG_EAP_PEAP=y
-
-# EAP-GTC for the integrated EAP server
-CONFIG_EAP_GTC=y
-
-# EAP-TTLS for the integrated EAP server
-CONFIG_EAP_TTLS=y
-
-# EAP-SIM for the integrated EAP server
-#CONFIG_EAP_SIM=y
-
-# EAP-AKA for the integrated EAP server
-#CONFIG_EAP_AKA=y
-
-# EAP-AKA' for the integrated EAP server
-# This requires CONFIG_EAP_AKA to be enabled, too.
-#CONFIG_EAP_AKA_PRIME=y
-
-# EAP-PAX for the integrated EAP server
-#CONFIG_EAP_PAX=y
-
-# EAP-PSK for the integrated EAP server (this is _not_ needed for WPA-PSK)
-#CONFIG_EAP_PSK=y
-
-# EAP-pwd for the integrated EAP server (secure authentication with a password)
-#CONFIG_EAP_PWD=y
-
-# EAP-SAKE for the integrated EAP server
-#CONFIG_EAP_SAKE=y
-
-# EAP-GPSK for the integrated EAP server
-#CONFIG_EAP_GPSK=y
-# Include support for optional SHA256 cipher suite in EAP-GPSK
-#CONFIG_EAP_GPSK_SHA256=y
-
-# EAP-FAST for the integrated EAP server
-#CONFIG_EAP_FAST=y
-
-# EAP-TEAP for the integrated EAP server
-# Note: The current EAP-TEAP implementation is experimental and should not be
-# enabled for production use. The IETF RFC 7170 that defines EAP-TEAP has number
-# of conflicting statements and missing details and the implementation has
-# vendor specific workarounds for those and as such, may not interoperate with
-# any other implementation. This should not be used for anything else than
-# experimentation and interoperability testing until those issues has been
-# resolved.
-#CONFIG_EAP_TEAP=y
-
-# Wi-Fi Protected Setup (WPS)
-CONFIG_WPS=y
-# Enable UPnP support for external WPS Registrars
-CONFIG_WPS_UPNP=y
-# Enable WPS support with NFC config method
-CONFIG_WPS_NFC=y
-
-# EAP-IKEv2
-#CONFIG_EAP_IKEV2=y
-
-# Trusted Network Connect (EAP-TNC)
-#CONFIG_EAP_TNC=y
-
-# EAP-EKE for the integrated EAP server
-#CONFIG_EAP_EKE=y
-
-# PKCS#12 (PFX) support (used to read private key and certificate file from
-# a file that usually has extension .p12 or .pfx)
-CONFIG_PKCS12=y
-
-# RADIUS authentication server. This provides access to the integrated EAP
-# server from external hosts using RADIUS.
-CONFIG_RADIUS_SERVER=y
-
-# Build IPv6 support for RADIUS operations
-CONFIG_IPV6=y
-
-# IEEE Std 802.11r-2008 (Fast BSS Transition)
-CONFIG_IEEE80211R=y
-
-# Use the hostapd's IEEE 802.11 authentication (ACL), but without
-# the IEEE 802.11 Management capability (e.g., FreeBSD/net80211)
-CONFIG_DRIVER_RADIUS_ACL=y
-
-# IEEE 802.11n (High Throughput) support
-CONFIG_IEEE80211N=y
-
-# Wireless Network Management (IEEE Std 802.11v-2011)
-# Note: This is experimental and not complete implementation.
-CONFIG_WNM=y
-
-# IEEE 802.11ac (Very High Throughput) support
-CONFIG_IEEE80211AC=y
-
-# IEEE 802.11ax HE support
-# Note: This is experimental and work in progress. The definitions are still
-# subject to change and this should not be expected to interoperate with the
-# final IEEE 802.11ax version.
-#CONFIG_IEEE80211AX=y
-
-# Remove debugging code that is printing out debug messages to stdout.
-# This can be used to reduce the size of the hostapd considerably if debugging
-# code is not needed.
-#CONFIG_NO_STDOUT_DEBUG=y
-
-# Add support for writing debug log to a file: -f /tmp/hostapd.log
-# Disabled by default.
-CONFIG_DEBUG_FILE=y
-
-# Send debug messages to syslog instead of stdout
-#CONFIG_DEBUG_SYSLOG=y
-
-# Add support for sending all debug messages (regardless of debug verbosity)
-# to the Linux kernel tracing facility. This helps debug the entire stack by
-# making it easy to record everything happening from the driver up into the
-# same file, e.g., using trace-cmd.
-#CONFIG_DEBUG_LINUX_TRACING=y
-
-# Remove support for RADIUS accounting
-#CONFIG_NO_ACCOUNTING=y
-
-# Remove support for RADIUS
-#CONFIG_NO_RADIUS=y
-
-# Remove support for VLANs
-#CONFIG_NO_VLAN=y
-
-# Enable support for fully dynamic VLANs. This enables hostapd to
-# automatically create bridge and VLAN interfaces if necessary.
-#CONFIG_FULL_DYNAMIC_VLAN=y
-
-# Use netlink-based kernel API for VLAN operations instead of ioctl()
-# Note: This requires libnl 3.1 or newer.
-#CONFIG_VLAN_NETLINK=y
-
-# Remove support for dumping internal state through control interface commands
-# This can be used to reduce binary size at the cost of disabling a debugging
-# option.
-#CONFIG_NO_DUMP_STATE=y
-
-# Enable tracing code for developer debugging
-# This tracks use of memory allocations and other registrations and reports
-# incorrect use with a backtrace of call (or allocation) location.
-#CONFIG_WPA_TRACE=y
-# For BSD, comment out these.
-#LIBS += -lexecinfo
-#LIBS_p += -lexecinfo
-#LIBS_c += -lexecinfo
-
-# Use libbfd to get more details for developer debugging
-# This enables use of libbfd to get more detailed symbols for the backtraces
-# generated by CONFIG_WPA_TRACE=y.
-#CONFIG_WPA_TRACE_BFD=y
-# For BSD, comment out these.
-#LIBS += -lbfd -liberty -lz
-#LIBS_p += -lbfd -liberty -lz
-#LIBS_c += -lbfd -liberty -lz
-
-# hostapd depends on strong random number generation being available from the
-# operating system. os_get_random() function is used to fetch random data when
-# needed, e.g., for key generation. On Linux and BSD systems, this works by
-# reading /dev/urandom. It should be noted that the OS entropy pool needs to be
-# properly initialized before hostapd is started. This is important especially
-# on embedded devices that do not have a hardware random number generator and
-# may by default start up with minimal entropy available for random number
-# generation.
-#
-# As a safety net, hostapd is by default trying to internally collect
-# additional entropy for generating random data to mix in with the data
-# fetched from the OS. This by itself is not considered to be very strong, but
-# it may help in cases where the system pool is not initialized properly.
-# However, it is very strongly recommended that the system pool is initialized
-# with enough entropy either by using hardware assisted random number
-# generator or by storing state over device reboots.
-#
-# hostapd can be configured to maintain its own entropy store over restarts to
-# enhance random number generation. This is not perfect, but it is much more
-# secure than using the same sequence of random numbers after every reboot.
-# This can be enabled with -e<entropy file> command line option. The specified
-# file needs to be readable and writable by hostapd.
-#
-# If the os_get_random() is known to provide strong random data (e.g., on
-# Linux/BSD, the board in question is known to have reliable source of random
-# data from /dev/urandom), the internal hostapd random pool can be disabled.
-# This will save some in binary size and CPU use. However, this should only be
-# considered for builds that are known to be used on devices that meet the
-# requirements described above.
-#CONFIG_NO_RANDOM_POOL=y
-
-# Should we attempt to use the getrandom(2) call that provides more reliable
-# yet secure randomness source than /dev/random on Linux 3.17 and newer.
-# Requires glibc 2.25 to build, falls back to /dev/random if unavailable.
-#CONFIG_GETRANDOM=y
-
-# Should we use poll instead of select? Select is used by default.
-#CONFIG_ELOOP_POLL=y
-
-# Should we use epoll instead of select? Select is used by default.
-#CONFIG_ELOOP_EPOLL=y
-
-# Should we use kqueue instead of select? Select is used by default.
-#CONFIG_ELOOP_KQUEUE=y
-
-# Select TLS implementation
-# openssl = OpenSSL (default)
-# gnutls = GnuTLS
-# internal = Internal TLSv1 implementation (experimental)
-# linux = Linux kernel AF_ALG and internal TLSv1 implementation (experimental)
-# none = Empty template
-#CONFIG_TLS=openssl
-
-# TLS-based EAP methods require at least TLS v1.0. Newer version of TLS (v1.1)
-# can be enabled to get a stronger construction of messages when block ciphers
-# are used.
-#CONFIG_TLSV11=y
-
-# TLS-based EAP methods require at least TLS v1.0. Newer version of TLS (v1.2)
-# can be enabled to enable use of stronger crypto algorithms.
-#CONFIG_TLSV12=y
-
-# Select which ciphers to use by default with OpenSSL if the user does not
-# specify them.
-#CONFIG_TLS_DEFAULT_CIPHERS="DEFAULT:!EXP:!LOW"
-
-# If CONFIG_TLS=internal is used, additional library and include paths are
-# needed for LibTomMath. Alternatively, an integrated, minimal version of
-# LibTomMath can be used. See beginning of libtommath.c for details on benefits
-# and drawbacks of this option.
-#CONFIG_INTERNAL_LIBTOMMATH=y
-#ifndef CONFIG_INTERNAL_LIBTOMMATH
-#LTM_PATH=/usr/src/libtommath-0.39
-#CFLAGS += -I$(LTM_PATH)
-#LIBS += -L$(LTM_PATH)
-#LIBS_p += -L$(LTM_PATH)
-#endif
-# At the cost of about 4 kB of additional binary size, the internal LibTomMath
-# can be configured to include faster routines for exptmod, sqr, and div to
-# speed up DH and RSA calculation considerably
-#CONFIG_INTERNAL_LIBTOMMATH_FAST=y
-
-# Interworking (IEEE 802.11u)
-# This can be used to enable functionality to improve interworking with
-# external networks.
-#CONFIG_INTERWORKING=y
-
-# Hotspot 2.0
-#CONFIG_HS20=y
-
-# Enable SQLite database support in hlr_auc_gw, EAP-SIM DB, and eap_user_file
-#CONFIG_SQLITE=y
-
-# Enable Fast Session Transfer (FST)
-#CONFIG_FST=y
-
-# Enable CLI commands for FST testing
-#CONFIG_FST_TEST=y
-
-# Testing options
-# This can be used to enable some testing options (see also the example
-# configuration file) that are really useful only for testing clients that
-# connect to this hostapd. These options allow, for example, to drop a
-# certain percentage of probe requests or auth/(re)assoc frames.
-#
-#CONFIG_TESTING_OPTIONS=y
-
-# Automatic Channel Selection
-# This will allow hostapd to pick the channel automatically when channel is set
-# to "acs_survey" or "0". Eventually, other ACS algorithms can be added in
-# similar way.
-#
-# Automatic selection is currently only done through initialization, later on
-# we hope to do background checks to keep us moving to more ideal channels as
-# time goes by. ACS is currently only supported through the nl80211 driver and
-# your driver must have survey dump capability that is filled by the driver
-# during scanning.
-#
-# You can customize the ACS survey algorithm with the hostapd.conf variable
-# acs_num_scans.
-#
-# Supported ACS drivers:
-# * ath9k
-# * ath5k
-# * ath10k
-#
-# For more details refer to:
-# http://wireless.kernel.org/en/users/Documentation/acs
-#
-CONFIG_ACS=y
-
-# Multiband Operation support
-# These extentions facilitate efficient use of multiple frequency bands
-# available to the AP and the devices that may associate with it.
-CONFIG_MBO=y
-
-# Client Taxonomy
-# Has the AP retain the Probe Request and (Re)Association Request frames from
-# a client, from which a signature can be produced which can identify the model
-# of client device like "Nexus 6P" or "iPhone 5s".
-CONFIG_TAXONOMY=y
-
-# Fast Initial Link Setup (FILS) (IEEE 802.11ai)
-#CONFIG_FILS=y
-# FILS shared key authentication with PFS
-#CONFIG_FILS_SK_PFS=y
-
-# Include internal line edit mode in hostapd_cli. This can be used to provide
-# limited command line editing and history support.
-#CONFIG_WPA_CLI_EDIT=y
-
-# Opportunistic Wireless Encryption (OWE)
-# Experimental implementation of draft-harkins-owe-07.txt
-#CONFIG_OWE=y
-
-# Airtime policy support
-CONFIG_AIRTIME_POLICY=y
-
-# Override default value for the wpa_disable_eapol_key_retries configuration
-# parameter. See that parameter in hostapd.conf for more details.
-#CFLAGS += -DDEFAULT_WPA_DISABLE_EAPOL_KEY_RETRIES=1
diff --git a/recipes-connectivity/hostapd/files/hostapd-2G.conf b/recipes-connectivity/hostapd/files/hostapd-2G.conf
deleted file mode 100644
index 14cf67b..0000000
--- a/recipes-connectivity/hostapd/files/hostapd-2G.conf
+++ /dev/null
@@ -1,48 +0,0 @@
-driver=nl80211
-interface=wifi0
-bridge=brlan0
-ssid=TurrisOmnia
-
-country_code=US
-ieee80211d=1
-hw_mode=g
-beacon_int=100
-channel=11
-
-ieee80211n=1
-ht_capab=[SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1]
-
-ap_isolate=1
-bss_load_update_period=60
-#chan_util_avg_period=600
-disassoc_low_ack=1
-preamble=1
-wmm_enabled=1
-ignore_broadcast_ssid=0
-uapsd_advertisement_enabled=1
-auth_algs=1
-rrm_neighbor_report=1
-bss_transition=1
-macaddr_acl=0
-bssid=
-
-#Security parameters
-wpa=2
-wpa_pairwise=CCMP
-wpa_key_mgmt=WPA-PSK
-wpa_passphrase=rdk@1234
-
-#WPS configuration lines
-wps_state=0
-ap_setup_locked=1
-config_methods=virtual_push_button keypad
-wps_pin_requests=/var/run/hostapd_wps_pin_requests.log
-eap_server=1
-
-#Interface for separate control program. hostapd_cli command will use it when trying to connect with hostapd.
-ctrl_interface=/var/run/hostapd
-
-logger_syslog=127
-logger_syslog_level=2
-logger_stdout=127
-logger_stdout_level=2
diff --git a/recipes-connectivity/hostapd/files/hostapd-5G.conf b/recipes-connectivity/hostapd/files/hostapd-5G.conf
deleted file mode 100644
index d3b6117..0000000
--- a/recipes-connectivity/hostapd/files/hostapd-5G.conf
+++ /dev/null
@@ -1,54 +0,0 @@
-driver=nl80211
-interface=wifi1
-bridge=brlan0
-ssid=TurrisOmnia
-
-country_code=US
-ieee80211d=1
-hw_mode=a
-beacon_int=100
-channel=36
-
-#ieee80211h=1
-ieee80211n=1
-ht_capab=[SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][DSSS_CCK-40]
-
-ieee80211ac=1
-#vht_oper_chwidth=1
-#vht_oper_centr_freq_seg0_idx=42
-vht_capab=[RXLDPC][SHORT-GI-80][TX-STBC-2BY1][RX-ANTENNA-PATTERN][TX-ANTENNA-PATTERN][RX-STBC-1][MAX-MPDU-11454][MAX-A-MPDU-LEN-EXP7]
-
-ap_isolate=1
-bss_load_update_period=60
-#chan_util_avg_period=600
-disassoc_low_ack=1
-preamble=1
-wmm_enabled=1
-ignore_broadcast_ssid=0
-uapsd_advertisement_enabled=1
-auth_algs=1
-rrm_neighbor_report=1
-bss_transition=1
-macaddr_acl=0
-bssid=
-
-#Security parameters
-wpa=2
-wpa_pairwise=CCMP
-wpa_key_mgmt=WPA-PSK
-wpa_passphrase=rdk@1234
-
-#WPS configuration lines, but WPS disabled by default
-wps_state=0
-ap_setup_locked=1
-config_methods=virtual_push_button keypad
-wps_pin_requests=/var/run/hostapd_wps_pin_requests.log
-eap_server=1
-
-#Interface for separate control program. hostapd_cli command will use it when trying to connect with hostapd.
-ctrl_interface=/var/run/hostapd
-
-logger_syslog=127
-logger_syslog_level=2
-logger_stdout=127
-logger_stdout_level=2
diff --git a/recipes-connectivity/hostapd/files/hostapd-bhaul2G.conf b/recipes-connectivity/hostapd/files/hostapd-bhaul2G.conf
deleted file mode 100644
index 38cafc5..0000000
--- a/recipes-connectivity/hostapd/files/hostapd-bhaul2G.conf
+++ /dev/null
@@ -1,35 +0,0 @@
-driver=nl80211
-logger_syslog=127
-logger_syslog_level=2
-logger_stdout=127
-logger_stdout_level=2
-country_code=US
-ieee80211d=1
-hw_mode=g
-beacon_int=100
-channel=11
-
-ieee80211n=1
-#ht_coex=0
-ht_capab=[SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][DSSS_CCK-40]
-
-interface=wifi2
-ctrl_interface=/var/run/hostapd
-ap_isolate=1
-bss_load_update_period=60
-#chan_util_avg_period=600
-disassoc_low_ack=1
-preamble=1
-wmm_enabled=1
-ignore_broadcast_ssid=1
-uapsd_advertisement_enabled=1
-auth_algs=1
-wpa=2
-bssid=
-wpa_pairwise=CCMP
-rrm_neighbor_report=1
-wpa_key_mgmt=WPA-PSK
-bss_transition=1
-
-macaddr_acl=1
-accept_mac_file=/tmp/hostapd-acl2
diff --git a/recipes-connectivity/hostapd/files/hostapd-bhaul5G.conf b/recipes-connectivity/hostapd/files/hostapd-bhaul5G.conf
deleted file mode 100644
index 8c5d9e0..0000000
--- a/recipes-connectivity/hostapd/files/hostapd-bhaul5G.conf
+++ /dev/null
@@ -1,35 +0,0 @@
-driver=nl80211
-logger_syslog=127
-logger_syslog_level=2
-logger_stdout=127
-logger_stdout_level=2
-country_code=US
-ieee80211d=1
-hw_mode=a
-beacon_int=100
-channel=36
-
-ieee80211n=1
-#ht_coex=0
-ht_capab=[SHORT-GI-20][SHORT-GI-40][TX-STBC][RX-STBC1][DSSS_CCK-40]
-
-interface=wifi3
-ctrl_interface=/var/run/hostapd
-ap_isolate=1
-bss_load_update_period=60
-#chan_util_avg_period=600
-disassoc_low_ack=1
-preamble=1
-wmm_enabled=1
-ignore_broadcast_ssid=1
-uapsd_advertisement_enabled=1
-auth_algs=1
-wpa=2
-bssid=
-wpa_pairwise=CCMP
-rrm_neighbor_report=1
-wpa_key_mgmt=WPA-PSK
-bss_transition=1
-
-macaddr_acl=1
-accept_mac_file=/tmp/hostapd-acl3
diff --git a/recipes-connectivity/hostapd/files/hostapd-enable-80211ac.patch b/recipes-connectivity/hostapd/files/hostapd-enable-80211ac.patch
deleted file mode 100644
index 824233d..0000000
--- a/recipes-connectivity/hostapd/files/hostapd-enable-80211ac.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -Naur 2.5-r0-orig/defconfig 2.5-r0/defconfig
---- 2.5-r0-orig/defconfig	2019-07-15 11:06:28.150942350 +0000
-+++ 2.5-r0/defconfig	2019-07-15 10:58:17.959429890 +0000
-@@ -139,6 +139,9 @@
- # IEEE 802.11n (High Throughput) support
- CONFIG_IEEE80211N=y
- 
-+CONFIG_IEEE80211AC=y
-+CONFIG_ACS=y
-+
- # Remove debugging code that is printing out debug messages to stdout.
- # This can be used to reduce the size of the hostapd considerably if debugging
- # code is not needed.
-File 2.5-r0-orig/pseudo/pseudo.socket is a socket while file 2.5-r0/pseudo/pseudo.socket is a socket
diff --git a/recipes-connectivity/hostapd/files/hostapd-init.sh b/recipes-connectivity/hostapd/files/hostapd-init.sh
deleted file mode 100644
index fd5532d..0000000
--- a/recipes-connectivity/hostapd/files/hostapd-init.sh
+++ /dev/null
@@ -1,222 +0,0 @@
-# If not stated otherwise in this file or this component's LICENSE
-# file the following copyright and licenses apply:
-#
-#Copyright [2019] [RDK Management]
-#
-#Licensed under the Apache License, Version 2.0 (the "License");
-#you may not use this file except in compliance with the License.
-#You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-#Unless required by applicable law or agreed to in writing, software
-#distributed under the License is distributed on an "AS IS" BASIS,
-#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#See the License for the specific language governing permissions and
-#limitations under the License.
-
-#!/bin/sh
-
-device_type=`cat /version.txt | grep imagename | cut -d':' -f2 | cut -d'-' -f3`
-echo "device_type: $device_type"
-if [ $device_type == "extender" ];
-then
-#Workaround: allowing devices initialization
-sleep 5;
-fi
-
-nvram_mounted=`mount | grep nvram -wc`
-if [ $nvram_mounted == 0 ]; then
-	mkdir -p /nvram
-	if [ -b /dev/mmcblk0p6 ]; then
-		#for Older Turris Omnia
-		mount /dev/mmcblk0p6 /nvram
-	else
-		#for Omnia2019 and  Omnia2020
-		mount /dev/mmcblk0p5 /nvram
-	fi
-fi
-
-WIFI0_MAC=`cat /sys/class/net/wlan0/address`
-WIFI1_MAC=`cat /sys/class/net/wlan1/address`
-echo "2.4GHz Radio MAC: $WIFI0_MAC"
-echo "5GHz   Radio MAC: $WIFI1_MAC"
-
-if [ ! -f /nvram/hostapd0.conf ]
-then
-	cp /etc/hostapd-2G.conf /nvram/hostapd0.conf
-	#Set bssid for wifi0
-        NEW_MAC=$(echo 0x$WIFI0_MAC| awk -F: '{printf "%02x:%s:%s:%s:%s:%s", strtonum($1)+2, $2, $3, $4 ,$5, $6}')
-	sed -i "/^bssid=/c\bssid=$NEW_MAC" /nvram/hostapd0.conf
-        echo "wpa_psk_file=/tmp/hostapd0.psk" >> /nvram/hostapd0.conf
-fi
-
-if [ ! -f /nvram/hostapd1.conf ]
-then
-	cp /etc/hostapd-5G.conf /nvram/hostapd1.conf
-	#Set bssid for wifi1
-        NEW_MAC=$(echo 0x$WIFI1_MAC| awk -F: '{printf "%02x:%s:%s:%s:%s:%s", strtonum($1)+2, $2, $3, $4 ,$5, $6}')
-        sed -i "/^bssid=/c\bssid=$NEW_MAC" /nvram/hostapd1.conf
-        echo "wpa_psk_file=/tmp/hostapd1.psk" >> /nvram/hostapd1.conf
-fi
-
-if [ ! -f /nvram/hostapd2.conf ]
-then
-	cp /etc/hostapd-bhaul2G.conf /nvram/hostapd2.conf
-	#Set bssid for wifi2
-        NEW_MAC=$(echo 0x$WIFI0_MAC| awk -F: '{printf "%02x:%s:%s:%s:%s:%s", strtonum($1)+4, $2, $3, $4 ,$5, $6}')
-        sed -i "/^bssid=/c\bssid=$NEW_MAC" /nvram/hostapd2.conf
-        echo "wpa_psk_file=/tmp/hostapd2.psk" >> /nvram/hostapd2.conf
-fi
-
-if [ ! -f /nvram/hostapd3.conf ]
-then
-	cp /etc/hostapd-bhaul5G.conf /nvram/hostapd3.conf
-	#Set bssid for wifi3
-        NEW_MAC=$(echo 0x$WIFI1_MAC| awk -F: '{printf "%02x:%s:%s:%s:%s:%s", strtonum($1)+4, $2, $3, $4 ,$5, $6}')
-        sed -i "/^bssid=/c\bssid=$NEW_MAC" /nvram/hostapd3.conf
-        echo "wpa_psk_file=/tmp/hostapd3.psk" >> /nvram/hostapd3.conf
-fi
-
-if [ ! -f /nvram/hostapd4.conf ]
-then
-	cp /etc/hostapd-bhaul2G.conf /nvram/hostapd4.conf
-	#Set bssid for wifi4
-        NEW_MAC=$(echo 0x$WIFI0_MAC| awk -F: '{printf "%02x:%s:%s:%s:%s:%s", strtonum($1)+6, $2, $3, $4 ,$5, $6}')
-        sed -i "/^bssid=/c\bssid=$NEW_MAC" /nvram/hostapd4.conf
-        sed -i "/^interface=/c\interface=wifi4" /nvram/hostapd4.conf
-        sed -i "/^accept_mac/c\accept_mac_file=/tmp/hostapd-acl4"  /nvram/hostapd4.conf
-        echo "wpa_psk_file=/tmp/hostapd4.psk" >> /nvram/hostapd4.conf
-fi
-
-if [ ! -f /nvram/hostapd5.conf ]
-then
-	cp /etc/hostapd-bhaul5G.conf /nvram/hostapd5.conf
-	#Set bssid for wifi5
-        NEW_MAC=$(echo 0x$WIFI1_MAC| awk -F: '{printf "%02x:%s:%s:%s:%s:%s", strtonum($1)+6, $2, $3, $4 ,$5, $6}')
-        sed -i "/^bssid=/c\bssid=$NEW_MAC" /nvram/hostapd5.conf
-        sed -i "/^interface=/c\interface=wifi5" /nvram/hostapd5.conf
-        sed -i "/^accept_mac/c\accept_mac_file=/tmp/hostapd-acl5" /nvram/hostapd5.conf
-        echo "wpa_psk_file=/tmp/hostapd5.psk" >> /nvram/hostapd5.conf
-fi
-
-if [ ! -f /nvram/hostapd6.conf ]
-then
-	cp /etc/hostapd-bhaul2G.conf /nvram/hostapd6.conf
-	#Set bssid for wifi6
-        NEW_MAC=$(echo 0x$WIFI1_MAC| awk -F: '{printf "%02x:%s:%s:%s:%s:%s", strtonum($1)+8, $2, $3, $4 ,$5, $6}')
-        sed -i "/^bssid=/c\bssid=$NEW_MAC" /nvram/hostapd6.conf
-        sed -i "/^interface=/c\interface=wifi6" /nvram/hostapd6.conf
-        sed -i "/^accept_mac/c\accept_mac_file=/tmp/hostapd-acl6"  /nvram/hostapd6.conf
-        echo "wpa_psk_file=/tmp/hostapd6.psk" >> /nvram/hostapd6.conf
-fi
-
-if [ ! -f /nvram/hostapd7.conf ]
-then
-	cp /etc/hostapd-bhaul5G.conf /nvram/hostapd7.conf
-	#Set bssid for wifi7
-        NEW_MAC=$(echo 0x$WIFI1_MAC| awk -F: '{printf "%02x:%s:%s:%s:%s:%s", strtonum($1)+8, $2, $3, $4 ,$5, $6}')
-        sed -i "/^bssid=/c\bssid=$NEW_MAC" /nvram/hostapd7.conf
-        sed -i "/^interface=/c\interface=wifi7" /nvram/hostapd7.conf
-        sed -i "/^accept_mac/c\accept_mac_file=/tmp/hostapd-acl7"  /nvram/hostapd7.conf
-        echo "wpa_psk_file=/tmp/hostapd7.psk" >> /nvram/hostapd7.conf
-fi
-
-#Setting up VAP status file
-echo -e "wifi0=1\nwifi1=1\nwifi2=0\nwifi3=0\nwifi4=0\nwifi5=0\nwifi6=0\nwifi7=0" >/tmp/vap-status
-
-#Creating files for tracking AssociatedDevices
-touch /tmp/AllAssociated_Devices_2G.txt
-touch /tmp/AllAssociated_Devices_5G.txt
-
-if [ $device_type == "extender" ];
-then
-        ifconfig wlan0 down                                     
-        ifconfig wlan1 down 
-        exit 0;
-fi
-
-#Creating virtual interfaces wifi0 and wifi1 for Home APs
-iw dev wlan0 interface add wifi0 type __ap
-iw dev wlan1 interface add wifi1 type __ap
-
-#2.4GHz Virtual Access Points for backhaul connection
-iw dev wlan0 interface add wifi2 type __ap
-ip addr add 169.254.0.1/25 dev wifi2
-ifconfig wifi2 mtu 1600
-
-#5GHz Virtual Access Points for backhaul connection
-iw dev wlan1 interface add wifi3 type __ap
-ip addr add 169.254.1.1/25 dev wifi3
-ifconfig wifi3 mtu 1600
-
-#Creating virtual interfaces wifi4 and wifi5 for Guest APs
-iw dev wlan0 interface add wifi4 type __ap
-iw dev wlan1 interface add wifi5 type __ap
-
-#2.4GHz Virtual Access Points for Secure Onboard connection
-iw dev wlan0 interface add wifi6 type __ap
-ip addr add 169.254.0.129/25 dev wifi6
-ifconfig wifi6 mtu 1600
-
-#5GHz Virtual Access Points for onboard connection
-iw dev wlan1 interface add wifi7 type __ap
-ip addr add 169.254.1.129/25 dev wifi7
-ifconfig wifi7 mtu 1600
-
-#Creating virtual interfaces wifi8 and wifi9 for Service APs
-iw dev wlan0 interface add wifi8 type __ap
-iw dev wlan1 interface add wifi9 type __ap
-
-#Create empty acl list for hostapd
-touch /tmp/hostapd-acl0
-touch /tmp/hostapd-acl1
-touch /tmp/hostapd-acl2
-touch /tmp/hostapd-acl3
-touch /tmp/hostapd-acl4
-touch /tmp/hostapd-acl5
-touch /tmp/hostapd-acl6
-touch /tmp/hostapd-acl7
-touch /tmp/hostapd-acl8
-touch /tmp/hostapd-acl9
-
-#create empty psk files
-touch /tmp/hostapd0.psk
-touch /tmp/hostapd1.psk
-touch /tmp/hostapd2.psk
-touch /tmp/hostapd3.psk
-touch /tmp/hostapd6.psk
-touch /tmp/hostapd7.psk
-touch /tmp/hostapd8.psk
-touch /tmp/hostapd9.psk
-
-#Create wps pin request log file
-touch /var/run/hostapd_wps_pin_requests.log
-
-#Setting brlan0 bridge
-if [ ! -f /sys/class/net/brlan0 ]
-then
-    brctl addbr brlan0
-    ip link set brlan0 address `cat /sys/class/net/eth1/address`
-    ifconfig brlan0 10.0.0.1 netmask 255.255.255.0 up
-fi
-
-#Work around for Ethernet connected clients
-brctl addif brlan0 lan0
-brctl addif brlan0 lan1
-brctl addif brlan0 lan2
-brctl addif brlan0 lan3
-brctl addif brlan0 lan4
-
-ifconfig eth1 up
-ifconfig lan0 up
-ifconfig lan1 up
-ifconfig lan2 up
-ifconfig lan3 up
-ifconfig lan4 up
-
-#workaround: creating /opt/secure folder for ssh service
-mkdir /opt/secure
-
-exit 0
-
diff --git a/recipes-connectivity/hostapd/files/hostapd.service b/recipes-connectivity/hostapd/files/hostapd.service
deleted file mode 100644
index 7df478f..0000000
--- a/recipes-connectivity/hostapd/files/hostapd.service
+++ /dev/null
@@ -1,17 +0,0 @@
-[Unit]
-Description=Hostapd IEEE 802.11n AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
-After=CcspPandMSsp.service
-StartLimitIntervalSec=120
-
-[Service]
-Type=forking
-ExecStartPre=/bin/sh -c '(/lib/rdk/hostapd-init.sh)'
-PIDFile=/var/run/hostapd-global.pid
-ExecStart=/usr/sbin/hostapd -g /var/run/hostapd/global -B -P /var/run/hostapd-global.pid
-ExecStartPost=hostapd_cli -i global raw ADD bss_config=phy0:/nvram/hostapd0.conf
-ExecStartPost=hostapd_cli -i global raw ADD bss_config=phy1:/nvram/hostapd1.conf
-Restart=always
-
-[Install]
-WantedBy=multi-user.target
-
diff --git a/recipes-connectivity/hostapd/files/hostapd_turris.patch b/recipes-connectivity/hostapd/files/hostapd_turris.patch
deleted file mode 100644
index 20b0885..0000000
--- a/recipes-connectivity/hostapd/files/hostapd_turris.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- hostapd-2.5/src/crypto/crypto_openssl.c	2015-09-27 19:02:05.000000000 +0000
-+++ hostapd-2.5_mod/src/crypto/crypto_openssl.c	2019-03-12 12:38:40.032066497 +0000
-@@ -96,7 +96,8 @@
- #ifndef CONFIG_FIPS
- int md4_vector(size_t num_elem, const u8 *addr[], const size_t *len, u8 *mac)
- {
--	return openssl_digest_vector(EVP_md4(), num_elem, addr, len, mac);
-+	//return openssl_digest_vector(EVP_md4(), num_elem, addr, len, mac);
-+	 fprintf(stderr,"##################### We have commented the md4_vector implementation #################\n");
- }
- #endif /* CONFIG_FIPS */
- 
diff --git a/recipes-connectivity/hostapd/files/nl80211-relax-bridge-setup.patch b/recipes-connectivity/hostapd/files/nl80211-relax-bridge-setup.patch
deleted file mode 100644
index ff63ccd..0000000
--- a/recipes-connectivity/hostapd/files/nl80211-relax-bridge-setup.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
-index 96fd0aadd..77dbf94b5 100644
---- a/src/drivers/driver_nl80211.c
-+++ b/src/drivers/driver_nl80211.c
-@@ -6923,10 +6923,10 @@ static int i802_check_bridge(struct wpa_driver_nl80211_data *drv,
- 	wpa_printf(MSG_DEBUG, "nl80211: Adding interface %s into bridge %s",
- 		   ifname, brname);
- 	if (linux_br_add_if(drv->global->ioctl_sock, brname, ifname) < 0) {
--		wpa_printf(MSG_ERROR, "nl80211: Failed to add interface %s "
-+		wpa_printf(MSG_WARNING, "nl80211: Failed to add interface %s "
- 			   "into bridge %s: %s",
- 			   ifname, brname, strerror(errno));
--		return -1;
-+		return 0;
- 	}
- 	bss->added_if_into_bridge = 1;
- 
diff --git a/recipes-connectivity/hostapd/files/ut.py b/recipes-connectivity/hostapd/files/ut.py
deleted file mode 100644
index e183c90..0000000
--- a/recipes-connectivity/hostapd/files/ut.py
+++ /dev/null
@@ -1,426 +0,0 @@
-
-# This Program
-import os
-import unittest
-import time
-from ctypes import *
-
-so_file = "/usr/lib/libhal_wifi.so.0.0.0"
-lib = CDLL(so_file)
-print ("Load Library is : " + str(lib))
-
-class HalTestCases(unittest.TestCase):
-    def test_wifi_getHalVersion(self):
-        ver = c_char_p("")
-        lib.wifi_getHalVersion(ver)
-        self.assertEqual(ver.value, "3.0.0",
-                         'incorrect HAL version')
-        self.assertEqual(ver.value,
-                         "3.0.0",
-                         'incorrect HAL version')
-
-
-class wifiBasicConfigTests(unittest.TestCase):
-    # Set up envirnment var by $ export AP_IDX=0 before running this script
-    def setUp(self):
-        self.ap_index = 0
-        self.ap_index = int(os.environ["AP_IDX"])
-    """
-    def test_wifi_getCountryCode(self):
-        code = c_char_p("")
-        lib.wifi_getRadioCountryCode(self.ap_index, code)
-        self.assertEqual(code.value.rstrip(), "US",
-                         'incorrect Country Code %s' %code.value)
-
-    def test_wifi_setAndgetCountryCode(self):
-        tw_code = c_char_p("TW")
-        lib.wifi_setRadioCountryCode(self.ap_index, tw_code)
-        time.sleep(1)
-
-        code = c_char_p("")
-        lib.wifi_getRadioCountryCode(self.ap_index, code)
-        self.assertEqual(code.value.rstrip(), "TW",
-                         'incorrect Country Code %s' %code.value)
-
-        tw_code = c_char_p("US")
-        lib.wifi_setRadioCountryCode(self.ap_index, tw_code)
-        time.sleep(1)
-
-        code = c_char_p("")
-        lib.wifi_getRadioCountryCode(self.ap_index, code)
-        self.assertEqual(code.value.rstrip(), "US",
-                         'incorrect Country Code %s' %code.value)
-
-    def test_wifi_getRadioChannel(self):
-        radio_channel_p = (c_ulong*2)()
-        lib.wifi_getRadioChannel(self.ap_index, radio_channel_p)
-        channel_str = str(radio_channel_p[0])
-        channel_int = int(channel_str)
-
-        # set radio channel as 1
-        lib.wifi_setRadioChannel(self.ap_index, 1)
-        lib.wifi_reset()
-
-        radio_channel_p = (c_ulong*2)()
-        lib.wifi_getRadioChannel(self.ap_index, radio_channel_p)
-        _radio_channel_str = str(radio_channel_p[0])
-
-        self.assertEqual(_radio_channel_str, "1",
-                         'Radio channel has to be 1 for wlan%s. Current channel is %s'
-                         %(self.ap_index, _radio_channel_str))
-
-        lib.wifi_setRadioChannel(self.ap_index, channel_str)
-        time.sleep(1)
-        lib.wifi_reset()
-        time.sleep(1)
-
-        radio_channel_p = (c_ulong*2)()
-        lib.wifi_getRadioChannel(self.ap_index, radio_channel_p)
-        _radio_channel_str = str(radio_channel_p[0])
-
-        self.assertEqual(_radio_channel_str, channel_str,
-                         'Radio channel has to be %s for wlan%s. Current channel is %s'
-                         %(channel_str, self.ap_index, _radio_channel_str))
-    """
-    def test_wifi_ApEnable(self):
-        lib.wifi_setApEnable(self.ap_index, 0)
-        ap_en = (c_ubyte*4)()
-        lib.wifi_getApEnable(self.ap_index, ap_en)
-        _ap_en_str = str(ap_en[0])
-
-        self.assertEqual(_ap_en_str, "0",
-                         'AP Enable has to be False. Current is %s.' %(_ap_en_str))
-
-        _ap_en_p = create_string_buffer(32)
-        lib.wifi_getApStatus(self.ap_index, _ap_en_p)
-        self.assertEqual(_ap_en_p.value, "Disabled")
-
-
-        lib.wifi_setApEnable(self.ap_index, 1)
-        ap_en[0] = 0
-        lib.wifi_getApEnable(self.ap_index, ap_en)
-        _ap_en_str = str(ap_en[0])
-
-        self.assertEqual(_ap_en_str, "1",
-                         'AP Enable has to be True. Current is %s.' %(_ap_en_str))
-
-        _ap_en_p = create_string_buffer(32)
-        lib.wifi_getApStatus(self.ap_index, _ap_en_p)
-        self.assertEqual(_ap_en_p.value, "Enabled")
-    """
-    def test_wifi_SecurityMFPConfig(self):
-        config = c_char_p("")
-        lib.wifi_getApSecurityMFPConfig(self.ap_index, config)
-        self.assertEqual(config.value.rstrip(), "Disabled",
-                         'MFP Config(ieee80211w) has to be Disabled, but current value is %s' %config.value)
-
-        lib.wifi_setApSecurityMFPConfig(self.ap_index, "Required")
-
-        config = c_char_p("")
-        lib.wifi_getApSecurityMFPConfig(self.ap_index, config)
-        self.assertEqual(config.value.rstrip(), "Required",
-                         'MFP Config(ieee80211w) has to be Required, but current value is %s' %config.value)
-
-        lib.wifi_setApSecurityMFPConfig(self.ap_index, "Disabled")
-        config = c_char_p("")
-        lib.wifi_getApSecurityMFPConfig(self.ap_index, config)
-        self.assertEqual(config.value.rstrip(), "Disabled",
-                         'MFP Config(ieee80211w) has to be Disabled, but current value is %s' %config.value)
-
-    def test_wifi_ApMaxAssociatedDevicesAndWatermark(self):
-        lib.wifi_setApMaxAssociatedDevices(self.ap_index, 45)
-        time.sleep(1)
-
-        device_num = (c_uint*2)()
-        lib.wifi_getApMaxAssociatedDevices(self.ap_index, device_num)
-        device_num_str = str(device_num[0])
-        self.assertEqual(device_num_str, "45",
-                         'max_num_sta has to be 45, but current value is %s'
-                         %device_num_str)
-
-        lib.wifi_setApMaxAssociatedDevices(self.ap_index, 0)
-        time.sleep(1)
-
-        device_num = (c_uint*2)()
-        lib.wifi_getApMaxAssociatedDevices(self.ap_index, device_num)
-        device_num_str = str(device_num[0])
-        self.assertEqual(device_num_str, "0",
-                         'max_num_sta has to be 0, but current value is %s'
-                         %device_num_str)
-
-        device_watermark = (c_uint*2)()
-        lib.wifi_getApAssociatedDevicesHighWatermarkThreshold(self.ap_index,
-                                                              device_watermark)
-        device_watermark_str = str(device_watermark[0])
-        self.assertEqual(device_watermark_str, "50",
-                         'ApAssociatedDevicesHighWatermarkThreshold has to be 50, but'\
-                         'current value is %s' %(device_watermark_str))
-
-    def test_wifi_WmmEnabled(self):
-
-        init_wmm_enabled = (c_ubyte*2)()
-        lib.wifi_getApWmmEnable(self.ap_index, init_wmm_enabled)
-        init_wmm_enabled_str = str(init_wmm_enabled[0])
-
-        lib.wifi_setApWmmEnable(self.ap_index, 1)
-        wmm_enabled = (c_ubyte*2)()
-        lib.wifi_getApWmmEnable(self.ap_index, wmm_enabled)
-        wmm_enabled_str = str(wmm_enabled[0])
-
-        self.assertEqual(wmm_enabled_str, "1",
-                         'wmm_enabled has to be True. Current is %s.' %(wmm_enabled_str))
-
-        lib.wifi_setApWmmEnable(self.ap_index, int(init_wmm_enabled_str))
-
-
-    def test_wifi_UapsdAdvertisementEnabled(self):
-
-        init_uapsd_enabled = (c_ubyte*2)()
-        lib.wifi_getApWmmUapsdEnable(self.ap_index, init_uapsd_enabled)
-        init_uapsd_enabled_str = str(init_uapsd_enabled[0])
-
-        lib.wifi_setApWmmUapsdEnable(self.ap_index, 1)
-        uapsd_enabled = (c_ubyte*2)()
-        lib.wifi_getApWmmUapsdEnable(self.ap_index, uapsd_enabled)
-        uapsd_enabled_str = str(uapsd_enabled[0])
-
-        self.assertEqual(uapsd_enabled_str, "1",
-                         'uapsd_enabled has to be True. Current is %s.' %(uapsd_enabled_str))
-
-        lib.wifi_setApWmmUapsdEnable(self.ap_index, int(init_uapsd_enabled_str))
-    """
-    def test_wifi_getApRadiIndex(self):
-        index = (c_int*2)()
-        lib.wifi_getApRadioIndex(3, index)
-        self.assertEqual(index[0], 1)
-
-        index = (c_int*2)()
-        lib.wifi_getApRadioIndex(4, index)
-        self.assertEqual(index[0], 0)
-
-    def test_wifi_ApIsolation(self):
-        ap_isolation_enabled = (c_ubyte*2)()
-        lib.wifi_getApIsolationEnable(self.ap_index, ap_isolation_enabled)
-        ori_ap_isolation_str = str(ap_isolation_enabled[0])
-
-        lib.wifi_setApIsolationEnable(self.ap_index, 0)
-        lib.wifi_reset()
-        time.sleep(1)
-        ap_isolation_enabled = (c_ubyte*2)()
-        lib.wifi_getApIsolationEnable(self.ap_index, ap_isolation_enabled)
-        ap_isolation_str = str(ap_isolation_enabled[0])
-        self.assertEqual(ap_isolation_str, "0",
-                         'ap_isolate shall be false, but current is %s.'
-                         %(ap_isolation_enabled))
-
-
-        lib.wifi_setApIsolationEnable(self.ap_index, 1)
-        lib.wifi_reset()
-        time.sleep(1)
-        ap_isolation_enabled = (c_ubyte*2)()
-        lib.wifi_getApIsolationEnable(self.ap_index, ap_isolation_enabled)
-        ap_isolation_str = str(ap_isolation_enabled[0])
-        self.assertEqual(ap_isolation_str, "1",
-                         'ap_isolate shall be true, but current is %s.'
-                         %(ap_isolation_enabled))
-
-        lib.wifi_setApIsolationEnable(self.ap_index, ori_ap_isolation_str)
-        lib.wifi_reset()
-        time.sleep(1)
-
-    def test_wifi_ApMacAddressControlMode(self):
-         ori_mode = (c_ubyte*2)()
-         lib.wifi_getApMacAddressControlMode(self.ap_index, ori_mode)
-         ori_mode_str = str(ori_mode[0])
-
-         lib.wifi_setApMacAddressControlMode(self.ap_index, 2)
-         mac_address_mode = (c_ubyte*2)()
-         lib.wifi_getApMacAddressControlMode(self.ap_index, mac_address_mode)
-         mac_address_mode_str = str(mac_address_mode[0])
-         self.assertEqual(mac_address_mode_str, "2",
-                         'MacAddressControlMode shall be 2, but current is %s'
-                          %(mac_address_mode_str))
-
-
-         lib.wifi_setApMacAddressControlMode(self.ap_index, 0)
-         mac_address_mode = (c_ubyte*2)()
-         lib.wifi_getApMacAddressControlMode(self.ap_index, mac_address_mode)
-         mac_address_mode_str = str(mac_address_mode[0])
-         self.assertEqual(mac_address_mode_str, "0",
-                         'MacAddressControlMode shall be 0, but current is %s'
-                          %(mac_address_mode_str))
-
-         lib.wifi_setApMacAddressControlMode(self.ap_index, ori_mode_str)
-
-    def test_wifi_getApName(self):
-        name = c_char_p("")
-        lib.wifi_getApName(0, name)
-        self.assertEqual(name.value.rstrip(), "wifi0",
-                         'AP Name shall be wifi0, but current is %s' %name.value.rstrip())
-
-        name = c_char_p("")
-        lib.wifi_getApName(10, name)
-        self.assertEqual(name.value.rstrip(), "wifi10",
-                         'AP Name shall be wifi10, but current is %s' %name.value.rstrip())
-
-
-    def test_wifi_ApSsidAdvertisementEnable(self):
-
-        init_ssidAdvertisement_enabled = (c_ubyte*2)()
-        lib.wifi_getApSsidAdvertisementEnable(self.ap_index, init_ssidAdvertisement_enabled)
-
-        lib.wifi_setApSsidAdvertisementEnable(self.ap_index, 1)
-        ssid_enabled = (c_ubyte*2)()
-        lib.wifi_getApSsidAdvertisementEnable(self.ap_index, ssid_enabled)
-        ssid_enabled_str = str(ssid_enabled[0])
-
-        self.assertEqual(ssid_enabled_str, "1",
-                         'ssid_enabled has to be True. Current is %s.' %(ssid_enabled_str))
-
-        lib.wifi_setApSsidAdvertisementEnable(self.ap_index, init_ssidAdvertisement_enabled[0])
-
-class wifiWPSTests(unittest.TestCase):
-    def setUp(self):
-        self.ap_index = 0
-        self.ap_index = int(os.environ["AP_IDX"])
-    """
-    def test_wifi_getApWpsEnable(self):
-        # at least 2 bytes
-        wps_en = (c_ubyte*2)()
-        lib.wifi_getApWpsEnable(self.ap_index, wps_en)
-        wps_en_str = str(wps_en[0])
-
-        self.assertEqual(wps_en_str, "0",
-                         'WPS state has to be unconfigured. Current state is %s.' %(wps_en_str))
-
-    def test_wifi_setAndGetApWpsEnable(self):
-        lib.wifi_setApWpsEnable(self.ap_index, 1)
-
-        wps_en = (c_ubyte*2)()
-        lib.wifi_getApWpsEnable(self.ap_index, wps_en)
-        wps_en_str = str(wps_en[0])
-
-        self.assertEqual(wps_en_str, "1",
-                         'WPS state has to be configured. Current state is %s.' %(wps_en_str))
-    """
-    def test_wifi_getApWpsConfigurationState(self):
-        lib.wifi_setApWpsEnable(self.ap_index, 1)
-
-        wps_state = create_string_buffer(32)
-        lib.wifi_getApWpsConfigurationState(self.ap_index, wps_state)
-        self.assertEqual(wps_state.value, "Configured",
-                         'WPS state has to be Configured. Current state is %s'
-                         %wps_state.value)
-
-    def test_wifi_ApWpsButtonPush(self):
-        lib.wifi_setApWpsEnable(self.ap_index, 1)
-
-        lib.wifi_setApWpsButtonPush(self.ap_index)
-        cmd= "hostapd_cli -i wifi%s wps_get_status | grep 'PBC Status' | cut -d ' ' -f3" %(str(self.ap_index))
-
-        pbc_status = os.popen(cmd).read()
-        self.assertEqual(pbc_status.rstrip(), "Active", 'wps status shall be Active, but'\
-                         'current is %s' %(pbc_status.rstrip()))
-
-        lib.wifi_cancelApWPS(self.ap_index)
-
-        pbc_status = os.popen(cmd).read()
-        self.assertEqual(pbc_status.rstrip(), "Timed-out", 'wps status shall be Timed-out, but'\
-                         ' current is %s' %(pbc_status.rstrip()))
-
-
-
-    def tearDown(self):
-        lib.wifi_setApWpsEnable(self.ap_index, 0)
-
-class wifiClientMgmt(unittest.TestCase):
-    def setUp(self):
-        self.ap_index = 0
-        self.ap_index = int(os.environ["AP_IDX"])
-
-    def test_wifi_BSSTransitionActivation(self):
-        init_bss_transition = (c_ubyte*2)()
-        lib.wifi_getBSSTransitionActivation(self.ap_index, init_bss_transition)
-
-        lib.wifi_setBSSTransitionActivation(self.ap_index, 1)
-        bss_transition = (c_ubyte*2)()
-        lib.wifi_getBSSTransitionActivation(self.ap_index, bss_transition)
-        bss_transition_str = str(bss_transition[0])
-        self.assertEqual(bss_transition_str, "1",
-                         'bss_transition shall be True, but current is %s'
-                         %(bss_transition_str))
-
-        lib.wifi_setBSSTransitionActivation(self.ap_index, init_bss_transition[0])
-
-    def test_wifi_NeighborReportActivation(self):
-        init_rrm = (c_ubyte*2)()
-        lib.wifi_getNeighborReportActivation(self.ap_index, init_rrm)
-
-        lib.wifi_setNeighborReportActivation(self.ap_index, 1)
-        rrm = (c_ubyte*2)()
-        lib.wifi_getNeighborReportActivation(self.ap_index, rrm)
-        rrm_str = str(rrm[0])
-        self.assertEqual(rrm_str, "1",
-                         'rrm_neighbor_report shall be true, but current is %s'
-                         %(rrm_str))
-
-        lib.wifi_setNeighborReportActivation(self.ap_index, init_rrm[0])
-
-class wifiExtender(unittest.TestCase):
-    def setUp(self):
-        self.ap_index = 0
-        self.ap_index = int(os.environ["AP_IDX"])
-
-    def test_wifi_getSSIDRadioIndex(self):
-        index = (c_int*2)()
-        lib.wifi_getSSIDRadioIndex(3, index)
-        self.assertEqual(index[0], 1)
-
-        index = (c_int*2)()
-        lib.wifi_getSSIDRadioIndex(6, index)
-        self.assertEqual(index[0], 0)
-
-class wifiRadio(unittest.TestCase):
-    def setUp(self):
-        self.ap_index = 0
-        self.ap_index = int(os.environ["AP_IDX"])
-
-    def test_wifi_getRadioIfName(self):
-        radio_name = create_string_buffer(64)
-        lib.wifi_getRadioIfName(1, radio_name)
-        self.assertEqual(radio_name.value, "wlan1",
-                         'Radio name shall be wifi1, but current is %s' %(radio_name.value))
-
-        rtn_val = lib.wifi_getRadioIfName(4, radio_name)
-        self.assertEqual(rtn_val, -1, 'The return value of wifi_getRadioIfName() shall'\
-                         'be -1, but current is %d.' %(rtn_val))
-
-    def test_wifi_RadioEnable(self):
-        init_radio = (c_ubyte*2)()
-        lib.wifi_getRadioEnable(self.ap_index, init_radio)
-
-        lib.wifi_setRadioEnable(self.ap_index, 0)
-        time.sleep(2)
-
-        radio_enable = (c_ubyte*2)()
-        lib.wifi_getRadioEnable(self.ap_index, radio_enable)
-        self.assertEqual(str(radio_enable[0]), "0", 'Radio%d shall be disabled, but'\
-                         'current is %s' %(self.ap_index,str(radio_enable[0])))
-
-
-        lib.wifi_setRadioEnable(self.ap_index, 1)
-        time.sleep(2)
-
-        radio_enable = (c_ubyte*2)()
-        lib.wifi_getRadioEnable(self.ap_index, radio_enable)
-        self.assertEqual(str(radio_enable[0]), "1", 'Radio%d shall be enabled, but'\
-                         ' current is %s' %(self.ap_index,str(radio_enable[0])))
-
-
-        lib.wifi_setRadioEnable(self.ap_index, init_radio[0])
-        time.sleep(2)
-
-if __name__ == '__main__':
-
-    unittest.main(verbosity=2)
-
diff --git a/recipes-connectivity/hostapd/hostapd_2.9.bb b/recipes-connectivity/hostapd/hostapd_2.9.bb
deleted file mode 100644
index b1fae81..0000000
--- a/recipes-connectivity/hostapd/hostapd_2.9.bb
+++ /dev/null
@@ -1,86 +0,0 @@
-SUMMARY = "User space daemon for extended IEEE 802.11 management"
-HOMEPAGE = "http://w1.fi/hostapd/"
-SECTION = "kernel/userland"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://hostapd/README;md5=1ec986bec88070e2a59c68c95d763f89"
-
-DEPENDS = "libnl openssl"
-DEPENDS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'telemetry2_0', 'telemetry', '', d)}"
-LDFLAGS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'telemetry2_0', ' -ltelemetry_msgsender ', '', d)}"
-RDEPENDS_${PN} += "gawk"
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-SRC_URI = " \
-    http://w1.fi/releases/hostapd-${PV}.tar.gz \
-    file://hostapd-enable-80211ac.patch;patchdir=${WORKDIR}/ \
-    file://hostapd_turris.patch \
-    file://defconfig \
-    file://hostapd-2G.conf \
-    file://hostapd-5G.conf \
-    file://hostapd-bhaul2G.conf \
-    file://hostapd-bhaul5G.conf \
-    file://hostapd.service \
-    file://hostapd-init.sh \
-    file://ut.py \
-"
-
-SRC_URI += "file://nl80211-relax-bridge-setup.patch"
-
-SRC_URI[md5sum] = "f188fc53a495fe7af3b6d77d3c31dee8"
-SRC_URI[sha256sum] = "881d7d6a90b2428479288d64233151448f8990ab4958e0ecaca7eeb3c9db2bd7"
-
-S = "${WORKDIR}/hostapd-${PV}"
-B = "${WORKDIR}/hostapd-${PV}/hostapd"
-
-inherit update-rc.d systemd
-INITSCRIPT_NAME = "hostapd"
-
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
-SYSTEMD_SERVICE_${PN} = "hostapd.service"
-
-do_configure_append() {
-    install -m 0644 ${WORKDIR}/defconfig ${B}/.config
-}
-
-do_compile() {
-    export CFLAGS="-MMD -O2 -Wall -g -I${STAGING_INCDIR}/libnl3"
-    export EXTRA_CFLAGS="${CFLAGS}"
-    make V=1
-}
-
-do_install() {
-         install -d ${D}${sbindir} ${D}${sysconfdir} ${D}${systemd_unitdir}/system/ ${D}${base_libdir}/rdk
-         install -m 0755 ${B}/hostapd ${D}${sbindir}
-         install -m 0755 ${B}/hostapd_cli ${D}${sbindir}
-         install -m 0644 ${WORKDIR}/hostapd-2G.conf ${D}${sysconfdir}
-         install -m 0644 ${WORKDIR}/hostapd-5G.conf ${D}${sysconfdir}
-         install -m 0644 ${WORKDIR}/hostapd-bhaul2G.conf ${D}${sysconfdir}
-         install -m 0644 ${WORKDIR}/hostapd-bhaul5G.conf ${D}${sysconfdir}
-         install -m 0644 ${WORKDIR}/hostapd.service ${D}${systemd_unitdir}/system
-         install -m 0755 ${WORKDIR}/hostapd-init.sh ${D}${base_libdir}/rdk
-         install -m 0755 ${WORKDIR}/ut.py ${D}${sysconfdir}
-}
-
-do_install_turris-extender() {
-         install -d ${D}${sbindir} ${D}${sysconfdir} ${D}${systemd_unitdir}/system/ ${D}${base_libdir}/rdk
-         install -m 0755 ${B}/hostapd ${D}${sbindir}
-         install -m 0755 ${B}/hostapd_cli ${D}${sbindir}
-         sed -i '/^After=CcspPandMSsp.service/d' ${WORKDIR}/hostapd.service
-         sed -i '/^ExecStart=/c\ExecStart=/usr/sbin/hostapd -g /var/run/hostapd/global -B -P /var/run/hostapd-global.pid' ${WORKDIR}/hostapd.service
-         install -m 0644 ${WORKDIR}/hostapd-2G.conf ${D}${sysconfdir}
-         install -m 0644 ${WORKDIR}/hostapd-5G.conf ${D}${sysconfdir}
-         install -m 0644 ${WORKDIR}/hostapd-bhaul2G.conf ${D}${sysconfdir}
-         install -m 0644 ${WORKDIR}/hostapd-bhaul5G.conf ${D}${sysconfdir}
-         install -m 0644 ${WORKDIR}/hostapd.service ${D}${systemd_unitdir}/system
-         install -m 0755 ${WORKDIR}/hostapd-init.sh ${D}${base_libdir}/rdk
-}
-
-FILES_${PN} += " \
-                ${systemd_unitdir}/system/hostapd.service \
-                ${sysconfdir}/hostapd-2G.conf \
-                ${sysconfdir}/hostapd-5G.conf \
-                ${sysconfdir}/hostapd-bhaul2G.conf \
-                ${sysconfdir}/hostapd-bhaul5G.conf \
-                ${base_libdir}/rdk/hostapd-init.sh \
-                ${sysconfdir}/ut.py \
-"
diff --git a/recipes-connectivity/multiap-agent/multiap-agent_git.bb b/recipes-connectivity/multiap-agent/multiap-agent_git.bb
deleted file mode 100644
index c137bb7..0000000
--- a/recipes-connectivity/multiap-agent/multiap-agent_git.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "OpenSource MultiAP Agent implementation"
-LICENSE = "BSD-2-Clause-Patent"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e1988ff7324cb957bcbf231f1bc6486c"
-
-S = "${WORKDIR}/git"
-
-SRC_URI = "git://github.com/TechnicolorEDGM/multiap_agent.git;protocol=https"
-
-SRCREV = "${AUTOREV}"
-
-S = "${WORKDIR}/git"
-
-#CFLAGS_append = " "
-
-#LDFLAGS_append = " "
-
-do_install () {
-    install -d ${D}/usr/bin
-}
diff --git a/recipes-connectivity/multiap-controller/multiap-controller_git.bb b/recipes-connectivity/multiap-controller/multiap-controller_git.bb
deleted file mode 100644
index 04a676e..0000000
--- a/recipes-connectivity/multiap-controller/multiap-controller_git.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "OpenSource Multiapcontroller implementation"
-LICENSE = "BSD-2-Clause-Patent"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d5d0e19d5fa4af3f7d9817fb77a9bfb1"
-
-DEPENDS = "openssl libpcap"
-S = "${WORKDIR}/git"
-
-SRC_URI = "git://github.com/TechnicolorEDGM/multiap_controller.git;protocol=https"
-
-SRCREV = "${AUTOREV}"
-
-S = "${WORKDIR}/git"
-
-CFLAGS_append = " \
-                "
-
-LDFLAGS_append = " \
-    -lpthread \
-    -lpcap \
-    -lcrypto \
-    -lrt \
-    "
-
-do_install () {
-    # Config files and scripts
-    install -d ${D}/usr/bin
-}
diff --git a/recipes-connectivity/multiap-platform/files/0001-Makefile-changes.patch b/recipes-connectivity/multiap-platform/files/0001-Makefile-changes.patch
deleted file mode 100644
index dc418e8..0000000
--- a/recipes-connectivity/multiap-platform/files/0001-Makefile-changes.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/Makefile b/Makefile
-index bd88d31..5ddf08f 100755
---- a/Makefile
-+++ b/Makefile
-@@ -29,7 +29,7 @@ endif
- 
- LIBINCLUDE_FLAGS=$(foreach includedir, $(LIBINCLUDE_DIRS), -I$(includedir))
- 
--LIBOBJFILES = $(LIBSRC:.c=.o)
-+LIBOBJFILES = $(patsubst %c,%o,$(wildcard src/*.c))
- UBUS_LIBOBJFILES = $(UBUSLIBSRC:.c=.o)
- 
- LIBCFLAGS+=$(EXTRA_FLAGS)
diff --git a/recipes-connectivity/multiap-platform/multiap-platform_git.bb b/recipes-connectivity/multiap-platform/multiap-platform_git.bb
deleted file mode 100644
index cb63a2d..0000000
--- a/recipes-connectivity/multiap-platform/multiap-platform_git.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "OpenSource MultiAP Agent implementation"
-LICENSE = "BSD-2-Clause-Patent"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e1988ff7324cb957bcbf231f1bc6486c"
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-SRC_URI = "git://github.com/TechnicolorEDGM/libmultiap_platform.git;protocol=https \
-           file://0001-Makefile-changes.patch \
-          "
-
-SRCREV = "${AUTOREV}"
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "libuv"
-
-CFLAGS_append = " -I./include"
-
-LDFLAGS_append = " "
-
-do_install () {
-    # installing headers and libraries
-    install -d ${D}/usr/lib
-}
diff --git a/recipes-connectivity/nfs-utils/nfs-utils_%.bbappend b/recipes-connectivity/nfs-utils/nfs-utils_%.bbappend
deleted file mode 100644
index 8366ca6..0000000
--- a/recipes-connectivity/nfs-utils/nfs-utils_%.bbappend
+++ /dev/null
@@ -1,5 +0,0 @@
-DEPENDS_append = " libevent"
-
-CFLAGS_append = " \
-    -I${STAGING_INCDIR}/libevent \
-"
diff --git a/recipes-connectivity/opensync/files/0001-add-mesh-header-file.patch b/recipes-connectivity/opensync/files/0001-add-mesh-header-file.patch
deleted file mode 100644
index 6b6cdef..0000000
--- a/recipes-connectivity/opensync/files/0001-add-mesh-header-file.patch
+++ /dev/null
@@ -1,322 +0,0 @@
-diff --git a/src/lib/target/inc/mesh/meshsync_msgs.h b/src/lib/target/inc/mesh/meshsync_msgs.h
-new file mode 100644
-index 0000000..03d5c6a
---- /dev/null
-+++ b/src/lib/target/inc/mesh/meshsync_msgs.h
-@@ -0,0 +1,316 @@
-+/*
-+ * If not stated otherwise in this file or this component's Licenses.txt file the
-+ * following copyright and licenses apply:
-+ *
-+ * Copyright 2018 RDK Management
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the "License");
-+ * you may not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an "AS IS" BASIS,
-+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+*/
-+
-+/*
-+ * meshcfg.h
-+ *
-+ */
-+
-+#ifndef MESHCFG_H_
-+#define MESHCFG_H_
-+
-+#include <sys/types.h>
-+#include <inttypes.h>
-+
-+#define MAX_SSID_LEN         65
-+#define MAX_PASS_LEN         65
-+#define MAX_MODE_LEN         25
-+#define MAX_SUBNET_LEN       25
-+#define MAX_IP_LEN           64
-+#define MAX_URL_LEN          256
-+#define MAX_TXRATE_LEN       256
-+#define MAX_CHANNEL_MODE_LEN 32
-+#define MAX_MAC_ADDR_LEN     18
-+#define MAX_HOSTNAME_LEN     256
-+
-+#if defined(ENABLE_MESH_SOCKETS)
-+/**************************************************************************/
-+/*      Unix Domain Socket Name                                           */
-+/**************************************************************************/
-+#define MESH_SOCKET_PATH_NAME   "\0/tmp/mesh-socket-queue" // MeshAgent Server message socket
-+#else
-+/**************************************************************************/
-+/*      Posix Message Queue Names                                         */
-+/**************************************************************************/
-+#define MESH_SERVER_QUEUE_NAME   "/mqueue-mesh-server" // Message traffic from Mesh Application Layer to RDKB
-+#define MESH_CLIENT_QUEUE_NAME   "/mqueue-mesh-client" // Message traffic from RDKB to Mesh Application Layer
-+#endif
-+
-+#define MAX_FINGERPRINT_LEN 512
-+/**************************************************************************/
-+/*      Mesh sync message types                                         */
-+/**************************************************************************/
-+typedef enum {
-+    MESH_WIFI_RESET,
-+    MESH_WIFI_RADIO_CHANNEL,
-+    MESH_WIFI_RADIO_CHANNEL_MODE,
-+    MESH_WIFI_SSID_NAME,
-+    MESH_WIFI_SSID_ADVERTISE,
-+    MESH_WIFI_AP_SECURITY,
-+    MESH_WIFI_AP_KICK_ASSOC_DEVICE,
-+    MESH_WIFI_AP_KICK_ALL_ASSOC_DEVICES,
-+    MESH_WIFI_AP_ADD_ACL_DEVICE,
-+    MESH_WIFI_AP_DEL_ACL_DEVICE,
-+    MESH_WIFI_MAC_ADDR_CONTROL_MODE,
-+    MESH_SUBNET_CHANGE,
-+    MESH_URL_CHANGE,
-+    MESH_WIFI_STATUS,
-+    MESH_WIFI_ENABLE,
-+    MESH_STATE_CHANGE,
-+    MESH_WIFI_TXRATE,
-+    MESH_CLIENT_CONNECT,
-+    MESH_DHCP_RESYNC_LEASES,
-+    MESH_DHCP_ADD_LEASE,
-+    MESH_DHCP_REMOVE_LEASE,
-+    MESH_DHCP_UPDATE_LEASE,
-+    MESH_WIFI_RADIO_CHANNEL_BW,
-+    MESH_SYNC_MSG_TOTAL
-+} eMeshSyncType;
-+
-+/**
-+ * Mesh States
-+ */
-+typedef enum {
-+    MESH_STATE_FULL = 0,
-+    MESH_STATE_MONITOR,
-+    MESH_STATE_WIFI_RESET,
-+    MESH_STATE_TOTAL
-+} eMeshStateType;
-+
-+/**
-+ * Mesh Status states
-+ */
-+typedef enum {
-+    MESH_WIFI_STATUS_OFF = 0,
-+    MESH_WIFI_STATUS_INIT,
-+    MESH_WIFI_STATUS_MONITOR,
-+    MESH_WIFI_STATUS_FULL,
-+    MESH_WIFI_STATUS_TOTAL
-+} eMeshWifiStatusType;
-+
-+/**
-+ * Mesh Connected Client Interfaces
-+ */
-+typedef enum {
-+    MESH_IFACE_NONE = 0,
-+    MESH_IFACE_ETHERNET,
-+    MESH_IFACE_MOCA,
-+    MESH_IFACE_WIFI,
-+    MESH_IFACE_OTHER,
-+    MESH_IFACE_TOTAL
-+} eMeshIfaceType;
-+
-+/**
-+ * Mesh Sync Wifi Reset/Init message
-+ */
-+typedef struct _MeshWifiReset {
-+    uint8_t reset; // boolean dummy value for structure set to true.
-+} MeshWifiReset;
-+
-+/**
-+ * Mesh Sync Wifi SSID name change message
-+ */
-+typedef struct _MeshWifiSSIDName {
-+    uint32_t  index;                    // index [0-15]
-+    char      ssid[MAX_SSID_LEN];       // SSID
-+} MeshWifiSSIDName;
-+
-+/**
-+ * Mesh Sync Wifi SSID Advertise change message
-+ */
-+typedef struct _MeshWifiSSIDAdvertise {
-+    uint32_t  index;                    // index [0-15]
-+    uint8_t   enable;                   // boolean enable
-+} MeshWifiSSIDAdvertise;
-+
-+/**
-+ * Mesh Sync Wifi Radio channel change
-+ */
-+typedef struct _MeshWifiRadioChannel {
-+    uint32_t index;                // Radio index
-+    uint32_t channel;              // Channel
-+} MeshWifiRadioChannel;
-+
-+/**
-+ * Mesh Sync Wifi Radio channel mode change
-+ */
-+typedef struct _MeshWifiRadioChannelMode {
-+    uint32_t index;                             // Radio index
-+    char     channelMode[MAX_CHANNEL_MODE_LEN]; // ChannelMode
-+    uint8_t  gOnlyFlag;            // Is this g only?
-+    uint8_t  nOnlyFlag;            // Is this n only?
-+    uint8_t  acOnlyFlag;           // Is this ac only?
-+} MeshWifiRadioChannelMode;
-+
-+
-+/**
-+ * Mesh Sync Wifi configuration change message
-+ */
-+typedef struct _MeshWifiAPSecurity {
-+    uint32_t  index;                    // AP index [0-15]
-+    char      passphrase[MAX_PASS_LEN]; // AP Passphrase
-+    char      secMode[MAX_MODE_LEN];    // Security mode
-+    char      encryptMode[MAX_MODE_LEN];    // Encryption mode
-+} MeshWifiAPSecurity;
-+
-+
-+/**
-+ * Mesh Sync Wifi Kick AP Associated Device based on device mac
-+ */
-+typedef struct _MeshWifiAPKickAssocDevice {
-+    uint32_t  index;                    // AP index [0-15]
-+    char      mac[MAX_MAC_ADDR_LEN];    // Mac Address
-+} MeshWifiAPKickAssocDevice;
-+
-+/**
-+ * Mesh Sync Wifi Kick All AP Associated Devices
-+ */
-+typedef struct _MeshWifiAPKickAllAssocDevices {
-+    uint32_t  index;                    // AP index [0-15]
-+} MeshWifiAPKickAllAssocDevices;
-+
-+
-+/**
-+ * Mesh Sync Wifi AP Add Acl Device
-+ */
-+typedef struct _MeshWifiAPAddAclDevice {
-+    uint32_t  index;                    // AP index [0-15]
-+    char      mac[MAX_MAC_ADDR_LEN];    // Mac Address
-+} MeshWifiAPAddAclDevice;
-+
-+
-+/**
-+ * Mesh Sync Wifi AP Delete Acl Device
-+ */
-+typedef struct _MeshWifiAPDelAclDevice {
-+    uint32_t  index;                    // AP index [0-15]
-+    char      mac[MAX_MAC_ADDR_LEN];    // Mac Address
-+} MeshWifiAPDelAclDevice;
-+
-+/**
-+ * Mesh Sync Wifi Mac Address Control Mode
-+ */
-+typedef struct _MeshWifiMacAddrControlMode {
-+    uint32_t  index;                        // AP index [0-15]
-+    uint8_t   isEnabled;   // Filter Enabled bool
-+    uint8_t   isBlacklist; // blacklist=1; whitelist=0
-+} MeshWifiMacAddrControlMode;
-+
-+
-+/**
-+ * Mesh Sync Subnet configuration change message
-+ */
-+typedef struct _MeshSubnetChange {
-+    char gwIP[MAX_IP_LEN];   // GW IP value
-+    char netmask[MAX_SUBNET_LEN];   // Subnet value
-+} MeshSubnetChange;
-+
-+/**
-+ * Mesh Sync URL configuration change message
-+ */
-+typedef struct _MeshUrlChange {
-+    char url[MAX_URL_LEN];  // url
-+} MeshUrlChange;
-+
-+/**
-+ * Mesh Network Status message
-+ */
-+typedef struct _MeshWifiStatus {
-+    eMeshWifiStatusType status; // Status of mesh network
-+} MeshWifiStatus;
-+
-+/**
-+ * Mesh State message
-+ */
-+typedef struct _MeshStateChange {
-+    eMeshStateType state; // State of mesh network
-+} MeshStateChange;
-+
-+/**
-+ * Mesh WiFi TxRate
-+ */
-+typedef struct _MeshWifiTxRate {
-+    uint32_t  index;                        // AP index [0-15]
-+    char      basicRates[MAX_TXRATE_LEN];   // Basic Rates
-+    char      opRates   [MAX_TXRATE_LEN];   // Operational Rates
-+} MeshWifiTxRate;
-+
-+/**
-+ * Mesh Client Connect
-+ */
-+typedef struct _MeshClientConnect {
-+    eMeshIfaceType  iface;                  // Interface
-+    char            mac[MAX_MAC_ADDR_LEN];  // MAC address
-+    char            host[MAX_HOSTNAME_LEN];  // Hostname
-+    uint8_t         isConnected;            // true=connected; false=offline/disconnected
-+} MeshClientConnect;
-+
-+/**
-+ * DHCP lease notification
-+ */
-+typedef struct _MeshWifiDhcpLease {
-+    char        mac[MAX_MAC_ADDR_LEN];
-+    char        ipaddr[MAX_IP_LEN];
-+    char        hostname[MAX_HOSTNAME_LEN];
-+    char        fingerprint[MAX_FINGERPRINT_LEN];
-+} MeshWifiDhcpLease;
-+
-+/**
-+ * Channel Bandwidth change notification
-+ */
-+typedef struct _MeshWifiRadioChannelBw {
-+    int index;
-+    int bw;
-+} MeshWifiRadioChannelBw;
-+
-+/**
-+ * Mesh Sync message
-+ */
-+typedef struct _MeshSync {
-+    eMeshSyncType msgType;
-+
-+    union {
-+        MeshWifiReset                   wifiReset;
-+        MeshWifiRadioChannel            wifiRadioChannel;
-+        MeshWifiRadioChannelMode        wifiRadioChannelMode;
-+        MeshWifiSSIDName                wifiSSIDName;
-+        MeshWifiSSIDAdvertise           wifiSSIDAdvertise;
-+        MeshWifiAPSecurity              wifiAPSecurity;
-+        MeshWifiAPKickAssocDevice       wifiAPKickAssocDevice;
-+        MeshWifiAPKickAllAssocDevices   wifiAPKickAllAssocDevices;
-+        MeshWifiAPAddAclDevice          wifiAPAddAclDevice;
-+        MeshWifiAPDelAclDevice          wifiAPDelAclDevice;
-+        MeshWifiMacAddrControlMode      wifiMacAddrControlMode;
-+        MeshSubnetChange                subnet;
-+        MeshUrlChange                   url;
-+        MeshWifiStatus                  wifiStatus;
-+        MeshStateChange                 meshState;
-+        MeshWifiTxRate                  wifiTxRate;
-+        MeshClientConnect               meshConnect;
-+        MeshWifiDhcpLease               meshLease;
-+        MeshWifiRadioChannelBw          wifiRadioChannelBw; 
-+    } data;
-+} MeshSync;
-+
-+typedef struct _LeaseNotify {
-+    MeshWifiDhcpLease        lease;
-+    eMeshSyncType msgType;
-+} LeaseNotify;
-+
-+#endif /* MESHCFG_H_ */
diff --git a/recipes-connectivity/opensync/files/MeshAgentSync.patch b/recipes-connectivity/opensync/files/MeshAgentSync.patch
deleted file mode 100644
index a704bb7..0000000
--- a/recipes-connectivity/opensync/files/MeshAgentSync.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-diff --git a/src/lib/target/inc/target_internal.h b/src/lib/target/inc/target_internal.h
-index 1608b03..c520ad2 100644
---- a/src/lib/target/inc/target_internal.h
-+++ b/src/lib/target/inc/target_internal.h
-@@ -171,6 +171,9 @@ bool                 maclearn_update(maclearn_type_t type,
- bool                 radio_cloud_mode_set(radio_cloud_mode_t mode);
- radio_cloud_mode_t   radio_cloud_mode_get(void);
- bool                 radio_rops_vstate(struct schema_Wifi_VIF_State *vstate);
-+#if defined(_PLATFORM_TURRIS_)
-+bool                 radio_rops_vconfig(struct schema_Wifi_VIF_Config *vconfig,const char *ifname);
-+#endif
- void                 radio_trigger_resync(void);
- 
- void                 clients_connection(INT apIndex,
-diff --git a/src/lib/target/src/radio.c b/src/lib/target/src/radio.c
-index 9bedd00..b0cbe33 100644
---- a/src/lib/target/src/radio.c
-+++ b/src/lib/target/src/radio.c
-@@ -786,6 +786,20 @@ void radio_trigger_resync()
-     }
- }
- 
-+#if defined(_PLATFORM_TURRIS_)
-+bool radio_rops_vconfig(struct schema_Wifi_VIF_Config *vconfig , const char *ifname)
-+{
-+    if (!g_rops.op_vconf)
-+    {
-+        LOGE("%s: op_vconfig not set", __func__);
-+        return false;
-+    }
-+
-+    g_rops.op_vconf(vconfig, ifname);
-+    return true;
-+}
-+#endif
-+
- bool radio_rops_vstate(struct schema_Wifi_VIF_State *vstate)
- {
-     if (!g_rops.op_vstate)
-diff --git a/src/lib/target/src/vif.c b/src/lib/target/src/vif.c
-index aaecbf9..4e6b4ed 100644
---- a/src/lib/target/src/vif.c
-+++ b/src/lib/target/src/vif.c
-@@ -1071,7 +1071,17 @@ bool vif_state_update(INT ssidIndex)
-         LOGE("%s: cannot update VIF state for SSID index %d", __func__, ssidIndex);
-         return false;
-     }
-+#if defined(_PLATFORM_TURRIS_)
-+    /*  After setting Wifi_VIF_State, updating Wifi_VIF_Config table also in order to avoid overwritting content from Wifi_VIF_Config    */
- 
-+    struct schema_Wifi_VIF_Config vconfig;
-+
-+    if (vif_copy_to_config(ssidIndex, &vstate, &vconfig))
-+    {
-+        LOGE("%s: copying VIF state to config for SSID index %d", __func__, ssidIndex);
-+        radio_rops_vconfig(&vconfig, vconfig.if_name);
-+    }
-+#endif
-     LOGN("Updating VIF state for SSID index %d", ssidIndex);
-     return radio_rops_vstate(&vstate);
- }
-
diff --git a/recipes-connectivity/opensync/files/absolute-value-glibc-dunfell-fix.patch b/recipes-connectivity/opensync/files/absolute-value-glibc-dunfell-fix.patch
deleted file mode 100644
index 0348ebb..0000000
--- a/recipes-connectivity/opensync/files/absolute-value-glibc-dunfell-fix.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff --git a/src/bm/src/bm_events.c b/src/bm/src/bm_events.c
-index 19bcd47..dfdf33c 100644
---- a/src/bm/src/bm_events.c
-+++ b/src/bm/src/bm_events.c
-@@ -315,14 +315,14 @@ bm_events_handle_event(bsal_event_t *event)
-         }
- 
-         /* This one managed by cloud */
--        if (abs(stats->probe.last_snr - event->data.probe_req.rssi) < client->preq_snr_thr) {
-+        if (abs((int32_t)(stats->probe.last_snr - event->data.probe_req.rssi)) < client->preq_snr_thr) {
-             LOGD("[%s] %s: %s skip preq report (%d %d)", bandstr, ifname, client->mac_addr,
-                  stats->probe.last_snr, event->data.probe_req.rssi);
-             break;
-         }
- 
-         /* This is short time probe report filtering/limitation */
--        if (abs(stats->probe.last_snr - event->data.probe_req.rssi) <= BM_CLIENT_PREQ_SNR_TH &&
-+        if (abs((int32_t)(stats->probe.last_snr - event->data.probe_req.rssi)) <= BM_CLIENT_PREQ_SNR_TH &&
-             (now - last_probe) < BM_CLIENT_PREQ_TIME_TH) {
-             LOGD("[%s] %s: %s skip preq report (%d %d) short time", bandstr, ifname, client->mac_addr,
-                  stats->probe.last_snr, event->data.probe_req.rssi);
-@@ -790,7 +790,7 @@ bm_events_handle_rssi_xing(bm_client_t *client, bsal_event_t *event)
- {
-     if (event->data.rssi_change.low_xing == client->xing_low &&
-         event->data.rssi_change.high_xing == client->xing_high &&
--        (abs(event->data.rssi_change.rssi - client->xing_snr) <= BM_CLIENT_SNR_XING_DIFF)) {
-+        (abs((int32_t)(event->data.rssi_change.rssi - client->xing_snr)) <= BM_CLIENT_SNR_XING_DIFF)) {
-         LOGT("%s same xing skip (%d, %d) snr %d old %d", client->mac_addr, client->xing_low, client->xing_high,
-              event->data.rssi_change.rssi, client->xing_snr);
-         return;
diff --git a/recipes-connectivity/opensync/files/disable-dry-run.patch b/recipes-connectivity/opensync/files/disable-dry-run.patch
deleted file mode 100644
index a493102..0000000
--- a/recipes-connectivity/opensync/files/disable-dry-run.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-commit 61e04f8186c734312e0641a198f96a59f049f666
-Author: Mateusz Bajorski <mbajorski@plume.com>
-Date:   Thu Jan 30 16:46:33 2020 +0000
-
-    disable dry run
-
-diff --git a/src/cm2/unit.mk b/src/cm2/unit.mk
-index 8abe642..922e1fd 100644
---- a/src/cm2/unit.mk
-+++ b/src/cm2/unit.mk
-@@ -52,6 +52,8 @@ UNIT_LDFLAGS += -ldl
- UNIT_LDFLAGS += -lev
- UNIT_LDFLAGS += -lrt
- 
-+UNIT_CFLAGS += -DCONFIG_PLUME_CM2_DISABLE_DRYRUN_ON_GRE
-+
- ifneq ($(CONFIG_USE_KCONFIG),y)
- # Disable dryrun on GRE by default for all platforms without KConfig
- UNIT_CFLAGS += -DCONFIG_PLUME_CM2_DISABLE_DRYRUN_ON_GRE
diff --git a/recipes-connectivity/opensync/files/dunfell-nm-crash-fix.patch b/recipes-connectivity/opensync/files/dunfell-nm-crash-fix.patch
deleted file mode 100644
index 78a53b6..0000000
--- a/recipes-connectivity/opensync/files/dunfell-nm-crash-fix.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/src/lib/inet/src/inet_base.c b/src/lib/inet/src/inet_base.c
-index a93cefc..db66cf2 100644
---- a/src/lib/inet/src/inet_base.c
-+++ b/src/lib/inet/src/inet_base.c
-@@ -1080,7 +1080,7 @@ bool inet_base_dhcpc_option_set(inet_t *super, enum osn_dhcp_option opt, const c
- {
-     inet_base_t *self = (void *)super;
-     bool _req;
--    const char *_value;
-+    const char *_value=NULL;
- 
-     if (!osn_dhcp_client_opt_get(self->in_dhcpc, opt, &_req, &_value))
-     {
diff --git a/recipes-connectivity/opensync/files/get-used-link-type.patch b/recipes-connectivity/opensync/files/get-used-link-type.patch
deleted file mode 100644
index 20eebf6..0000000
--- a/recipes-connectivity/opensync/files/get-used-link-type.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: core/src/cm2/src/cm2_ovsdb.c
-===================================================================
---- core.orig/src/cm2/src/cm2_ovsdb.c	2020-01-27 15:10:38.435076332 +0000
-+++ core/src/cm2/src/cm2_ovsdb.c	2020-01-27 15:11:01.481520930 +0000
-@@ -861,7 +861,7 @@
- }
- 
- bool cm2_connection_get_used_link(struct schema_Connection_Manager_Uplink *uplink) {
--    return ovsdb_table_select_one(&table_Connection_Manager_Uplink, SCHEMA_COLUMN(Connection_Manager_Uplink, is_used), "true", uplink);
-+    return ovsdb_table_select_one_where(&table_Connection_Manager_Uplink, ovsdb_where_simple_typed(SCHEMA_COLUMN(Connection_Manager_Uplink, is_used), "true",OCLM_BOOL), uplink);
- }
- 
- static void cm2_connection_clear_used(void)
diff --git a/recipes-connectivity/opensync/files/opensync.service b/recipes-connectivity/opensync/files/opensync.service
deleted file mode 100644
index f58393e..0000000
--- a/recipes-connectivity/opensync/files/opensync.service
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=OpenSync service
-After=hostapd.service
-
-[Service]
-Type=forking
-ExecStart=/usr/opensync/scripts/managers.init start
-Restart=always
-StartLimitIntervalSec=120
-
-[Install]
-WantedBy=multi-user.target
-
diff --git a/recipes-connectivity/opensync/files/rdk-ext-support.patch b/recipes-connectivity/opensync/files/rdk-ext-support.patch
deleted file mode 100644
index fc6ddf9..0000000
--- a/recipes-connectivity/opensync/files/rdk-ext-support.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-diff --git a/ovsdb/inet.json b/ovsdb/inet.json
-index af2994e..4adb651 100644
---- a/ovsdb/inet.json
-+++ b/ovsdb/inet.json
-@@ -19,6 +19,32 @@
-             "if_type": "bridge",
-             "enabled": true
-        }
-+    },
-+    {
-+        "op":"insert",
-+        "table":"Wifi_Inet_Config",
-+        "row": {
-+            "if_name": "bhaul-sta-24",
-+            "ip_assign_scheme": "dhcp",
-+            "mtu": 1600,
-+            "if_type": "vif",
-+            "enabled" : true,
-+            "network" : true,
-+            "NAT": false
-+        }
-+    },
-+    {
-+        "op":"insert",
-+        "table":"Wifi_Inet_Config",
-+        "row": {
-+            "if_name": "bhaul-sta-50",
-+            "ip_assign_scheme": "dhcp",
-+            "mtu": 1600,
-+            "if_type": "vif",
-+            "enabled" : true,
-+            "network" : true,
-+            "NAT": false
-+        }
-     }
- ]
- 
-diff --git a/src/lib/target/src/map.c b/src/lib/target/src/map.c
-index 55af881..fa535f9 100644
---- a/src/lib/target/src/map.c
-+++ b/src/lib/target/src/map.c
-@@ -20,10 +20,12 @@ typedef struct
- 
- static ifmap_t  ifmap[] = {
- //    idx   cloud-ifname     dev-ifname  bridge    gre-br            vlan     description
--    { 1,    "wifi2",   "wifi2",    "brlan0", "wifi2", 0 },  // 2G Backhaul
--    { 1,    "wifi3",   "wifi3",    "brlan0", "wifi3",  0 },  // 5G Backhaul
--    { 2,    "wifi0",    "wifi0",    "brlan0",  NULL,            0 },  // 2G User SSID
--    { 2,    "wifi1",    "wifi1",    "brlan0",  NULL,            0 },  // 5G User SSID
-+    { 0,    "bhaul-sta-24",   "bhaul-sta-24",    "br-wan", "bhaul-sta-24", 0 },  // 2G Backhaul
-+    { 0,    "bhaul-sta-50",   "bhaul-sta-50",    "br-wan", "bhaul-sta-50", 0 },  // 2G Backhaul
-+    { 1,    "wifi2",   "wifi2",    "br-home", "wifi2", 0 },  // 2G Backhaul
-+    { 1,    "wifi3",   "wifi3",    "br-home", "wifi3",  0 },  // 5G Backhaul
-+    { 2,    "wifi0",    "wifi0",    "br-home",  NULL,            0 },  // 2G User SSID
-+    { 2,    "wifi1",    "wifi1",    "br-home",  NULL,            0 },  // 5G User SSID
-     { 0,    NULL,            NULL,        NULL,     NULL,            0 }
- };
- 
-diff --git a/src/lib/target/src/target.c b/src/lib/target/src/target.c
-index de884b5..59c1b59 100644
---- a/src/lib/target/src/target.c
-+++ b/src/lib/target/src/target.c
-@@ -5,3 +5,23 @@ const char* target_tls_privkey_filename(void)
- {
-     return "/usr/plume/etc/certs/client_dec.key";
- }
-+
-+bool target_device_connectivity_check(const char *ifname,
-+                                      target_connectivity_check_t *cstate,
-+                                      target_connectivity_check_option_t opts)
-+{
-+    cstate->ntp_state = true;
-+    cstate->link_state = true;
-+    cstate->router_state = true;
-+    cstate->internet_state = true;
-+    return true;
-+}
-+
-+int target_device_capabilities_get()
-+{
-+#if defined(CONFIG_RDK_EXTENDER)
-+    return TARGET_EXTENDER_TYPE;
-+#else
-+    return 0;
-+#endif
-+}
diff --git a/recipes-connectivity/opensync/files/rdk-extender.patch b/recipes-connectivity/opensync/files/rdk-extender.patch
deleted file mode 100644
index 56c99ad..0000000
--- a/recipes-connectivity/opensync/files/rdk-extender.patch
+++ /dev/null
@@ -1,563 +0,0 @@
-diff --git a/kconfig/Kconfig.platform b/kconfig/Kconfig.platform
-new file mode 100644
-index 0000000..4a045b2
---- /dev/null
-+++ b/kconfig/Kconfig.platform
-@@ -0,0 +1,15 @@
-+menuconfig PLATFORM_IS_RDK
-+    bool "RDK"
-+    help
-+        Support for RDK-based platforms
-+
-+
-+if PLATFORM_IS_RDK
-+
-+config RDK_EXTENDER
-+    bool "RDK Extender device (EXPERIMENTAL)"
-+    default n
-+
-+
-+endif
-+
-diff --git a/src/lib/osn/override.mk b/src/lib/osn/override.mk
-index bf128b7..ff210ed 100644
---- a/src/lib/osn/override.mk
-+++ b/src/lib/osn/override.mk
-@@ -33,11 +33,22 @@ UNIT_EXPORT_CFLAGS := -I$(UNIT_PATH)/inc
- UNIT_SRC := src/osn_inet.c
- UNIT_SRC += src/osn_types.c
- 
-+#if extender
-+ifeq ($(CONFIG_RDK_EXTENDER),y)
-+UNIT_SRC += src/osn_dnsmasq.c
-+UNIT_SRC += src/osn_udhcpc.c
-+UNIT_SRC += src/osn_route.c
-+endif
-+
- UNIT_SRC_DIR := $(OVERRIDE_DIR)/src
- UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_upnpd.c
-+
-+ifneq ($(CONFIG_RDK_EXTENDER),y)
- UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_dhcpc.c
- UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_route.c
- UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_dhcps.c
-+endif
-+
- UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_dhcps6.c
- UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_odhcp6c.c
- UNIT_SRC_TOP += $(UNIT_SRC_DIR)/osn_inet6.c
-diff --git a/src/lib/osn/src/osn_dhcps.c b/src/lib/osn/src/osn_dhcps.c
-index d183172..f2885fd 100644
---- a/src/lib/osn/src/osn_dhcps.c
-+++ b/src/lib/osn/src/osn_dhcps.c
-@@ -284,11 +284,13 @@ static bool dhcp_server_init(osn_dhcp_server_t *self, const char *ifname)
-         return false;
-     }
- 
-+#ifndef CONFIG_RDK_EXTENDER
-     if (!sync_init(SYNC_MGR_NM))
-     {
-         LOGE("Cannot init sync manager for NM");
-         return false;
-     }
-+#endif
- 
-     /* Initialize this instance */
-     memset(self, 0 ,sizeof(*self));
-diff --git a/src/lib/osync_hal/src/inet.c b/src/lib/osync_hal/src/inet.c
-index b221667..580ff83 100644
---- a/src/lib/osync_hal/src/inet.c
-+++ b/src/lib/osync_hal/src/inet.c
-@@ -304,7 +304,11 @@ osync_hal_return_t osync_hal_inet_add_to_bridge(
- 
-     memset(cmd, 0, sizeof(cmd));
- 
-+#ifdef CONFIG_RDK_EXTENDER
-+    snprintf(cmd, sizeof(cmd), "ovs-vsctl add-port %s %s", br_name, if_name);
-+#else
-     snprintf(cmd, sizeof(cmd), "brctl addif %s %s", br_name, if_name);
-+#endif
-     LOGD("%s: Adding to bridge with \"%s\"", if_name, cmd);
-     rc = system(cmd);
-     if (!WIFEXITED(rc) || WEXITSTATUS(rc) != 0)
-diff --git a/src/lib/target/inc/target_internal.h b/src/lib/target/inc/target_internal.h
-index 1608b03..61f0f06 100644
---- a/src/lib/target/inc/target_internal.h
-+++ b/src/lib/target/inc/target_internal.h
-@@ -35,7 +35,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #include "osync_hal.h"
- #include "osn_dhcp.h"
- 
-+#if !defined(CONFIG_RDK_EXTENDER)
- #include <mesh/meshsync_msgs.h>  // needed only by sync_send_security_change()
-+#endif
- 
- #ifndef __WIFI_HAL_H__
- #include "ccsp/wifi_hal.h"
-@@ -182,12 +184,15 @@ bool                 sync_init(sync_mgr_t mgr);
- bool                 sync_cleanup(void);
- bool                 sync_send_ssid_change(INT ssid_index, const char *ssid_ifname,
-                                     const char *new_ssid);
-+#if !defined(CONFIG_RDK_EXTENDER)
- bool                 sync_send_security_change(INT ssid_index, const char *ssid_ifname,
-                                     MeshWifiAPSecurity *sec);
-+#endif
- bool                 sync_send_status(radio_cloud_mode_t mode);
- 
- bool                 vif_state_update(INT ssidIndex);
- bool                 vif_state_get(INT ssidIndex, struct schema_Wifi_VIF_State *vstate);
-+bool                 vif_state_sta_get(INT ssidIndex, struct schema_Wifi_VIF_State *vstate);
- bool                 vif_copy_to_config(INT ssidIndex, struct schema_Wifi_VIF_State *vstate,
-                                         struct schema_Wifi_VIF_Config *vconf);
- struct               target_radio_ops;
-diff --git a/src/lib/target/override.mk b/src/lib/target/override.mk
-index 8c37835..369d2a5 100644
---- a/src/lib/target/override.mk
-+++ b/src/lib/target/override.mk
-@@ -44,7 +44,11 @@ UNIT_SRC_TOP += $(UNIT_SRC_DIR)/radio.c
- UNIT_SRC_TOP += $(UNIT_SRC_DIR)/vif.c
- UNIT_SRC_TOP += $(UNIT_SRC_DIR)/stats.c
- UNIT_SRC_TOP += $(UNIT_SRC_DIR)/log.c
-+
-+ifneq ($(CONFIG_RDK_EXTENDER),y)
- UNIT_SRC_TOP += $(UNIT_SRC_DIR)/sync.c
-+endif
-+
- UNIT_SRC_TOP += $(UNIT_SRC_DIR)/maclearn.c
- UNIT_SRC_TOP += $(UNIT_SRC_DIR)/bsal.c
- 
-@@ -53,6 +57,8 @@ UNIT_CFLAGS  += -DENABLE_MESH_SOCKETS
- 
- UNIT_DEPS    := $(PLATFORM_DIR)/src/lib/devinfo
- UNIT_DEPS    += $(PLATFORM_DIR)/src/lib/osync_hal
-+
-+#UNIT_DEPS    += src/lib/kconfig
- UNIT_DEPS    += src/lib/evsched
- UNIT_DEPS    += src/lib/schema
- UNIT_DEPS    += src/lib/const
-@@ -66,6 +72,7 @@ endif
- 
- UNIT_LDFLAGS := $(SDK_LIB_DIR)  -lhal_wifi -lrt
- UNIT_CFLAGS += -DCONTROLLER_ADDR="\"$(shell echo -n $(CONTROLLER_ADDR))\""
-+UNIT_CFLAGS += -include "$(KCONFIG_WORK).h" 
- 
- UNIT_EXPORT_CFLAGS  := $(UNIT_CFLAGS)
- UNIT_EXPORT_LDFLAGS := $(UNIT_LDFLAGS)
-diff --git a/src/lib/target/src/radio.c b/src/lib/target/src/radio.c
-index 9bedd00..33a2032 100644
---- a/src/lib/target/src/radio.c
-+++ b/src/lib/target/src/radio.c
-@@ -72,6 +72,7 @@ static c_item_t map_country_str[] =
- {
-     C_ITEM_STR_STR("826",                       "UK"),  // ISO 3166-1
-     C_ITEM_STR_STR("840",                       "US"),
-+    C_ITEM_STR_STR("705",                       "SI"),  // (non-standard)
-     C_ITEM_STR_STR("841",                       "US"),  // (non-standard)
- };
- 
-@@ -620,6 +621,62 @@ bool target_radio_config_init2()
-             g_rops.op_vconf(&vconfig, rconfig.if_name);
-             g_rops.op_vstate(&vstate);
-         }
-+#ifdef CONFIG_RDK_EXTENDER
-+        /* CLIENT-API */
-+        ret = wifi_getSTANumberOfEntries(&snum);
-+        if (ret != RETURN_OK)
-+        {
-+            LOGE("%s: failed to get SSID count", __func__);
-+            return false;
-+        }
-+
-+        for (s = 0; s < snum; s++)
-+        {
-+            memset(ssid_ifname, 0, sizeof(ssid_ifname));
-+            ret = wifi_getSTAName(s, ssid_ifname);
-+            if (ret != RETURN_OK)
-+            {
-+                LOGW("%s: failed to get STA name for index %lu. Skipping.\n", __func__, s);
-+                continue;
-+            }
-+            // Filter SSID's that we don't have mappings for
-+            if (!target_unmap_ifname_exists(ssid_ifname))
-+            {
-+                LOGW("%s: STA %s not in map. Skipping.\n", __func__, ssid_ifname);
-+                continue;
-+            }
-+
-+            ret = wifi_getSTARadioIndex(s, &ssid_radio_idx);
-+            if (ret != RETURN_OK)
-+            {
-+                LOGW("Cannot get radio index for SSID %lu", s);
-+                continue;
-+            }
-+
-+            if ((ULONG)ssid_radio_idx != r)
-+            {
-+                continue;
-+            }
-+
-+            LOGI("Found STA index %lu: %s", s, ssid_ifname);
-+            if (!vif_state_sta_get(s, &vstate))
-+            {
-+                LOGE("%s: cannot get vif state for STA index %lu", __func__, s);
-+                continue;
-+            }
-+            if (!vif_copy_to_config(s, &vstate, &vconfig))
-+            {
-+                LOGE("%s: cannot copy VIF state to config for STA index %lu", __func__, s);
-+                continue;
-+            }
-+            g_rops.op_vconf(&vconfig, rconfig.if_name);
-+            g_rops.op_vstate(&vstate);
-+
-+
-+        }
-+
-+        /* END CLIENT-API */
-+#endif
- 
-     }
- 
-@@ -807,6 +864,9 @@ bool
- radio_cloud_mode_set(radio_cloud_mode_t mode)
- {
-     radio_cloud_mode = mode;
--
-+#ifdef CONFIG_RDK_EXTENDER
-+    return true;
-+#else
-     return sync_send_status(radio_cloud_mode);
-+#endif
- }
-diff --git a/src/lib/target/src/sync.c b/src/lib/target/src/sync.c
-index 5b4337d..b8dfc17 100644
---- a/src/lib/target/src/sync.c
-+++ b/src/lib/target/src/sync.c
-@@ -43,7 +43,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- #include <sys/socket.h>
- #include <sys/un.h>
- 
-+#ifndef CONFIG_RDK_EXTENDER
- #include <mesh/meshsync_msgs.h>  // this file is included by vendor
-+#endif
- 
- #include "os.h"
- #include "log.h"
-@@ -146,6 +148,7 @@ static char* sync_iface_name(int iface_type)
-     return tmp;
- }
- 
-+#ifndef CONFIG_RDK_EXTENDER
- static int wiifhal_sync_iface_mltype(int iface_type)
- {
-     c_item_t            *citem;
-@@ -157,7 +160,7 @@ static int wiifhal_sync_iface_mltype(int iface_type)
- 
-     return -1;
- }
--
-+#endif
- static void sync_process_msg(MeshSync *mp)
- {
-     radio_cloud_mode_t              cloud_mode;
-diff --git a/src/lib/target/src/target.c b/src/lib/target/src/target.c
-index ffaaf6a..ef20eda 100644
---- a/src/lib/target/src/target.c
-+++ b/src/lib/target/src/target.c
-@@ -281,12 +281,13 @@ bool target_init(target_init_opt_t opt, struct ev_loop *loop)
-                         "(Failed to initialize EVSCHED)");
-                 return -1;
-             }
--
-+            #ifndef CONFIG_RDK_EXTENDER
-             if (!sync_init(SYNC_MGR_WM))
-             {
-                 // It reports the error
-                 return false;
-             }
-+            #endif
-             if (!set_deauth_and_scan_filter_flags())
-             {
-                 LOGE("Failed to set csa_deauth and scan filter flags");
-@@ -296,11 +297,13 @@ bool target_init(target_init_opt_t opt, struct ev_loop *loop)
-             break;
- 
-         case TARGET_INIT_MGR_CM:
-+            #ifndef CONFIG_RDK_EXTENDER
-             if (!sync_init(SYNC_MGR_CM))
-             {
-                 // It reports the error
-                 return false;
-             }
-+            #endif
-             break;
- 
-         case TARGET_INIT_MGR_BM:
-@@ -323,7 +326,9 @@ bool target_close(target_init_opt_t opt, struct ev_loop *loop)
-     switch (opt)
-     {
-         case TARGET_INIT_MGR_WM:
-+            #ifndef CONFIG_RDK_EXTENDER
-             sync_cleanup();
-+            #endif
-             /* fall through */
- 
-         case TARGET_INIT_MGR_SM:
-diff --git a/src/lib/target/src/vif.c b/src/lib/target/src/vif.c
-index aaecbf9..a987aa3 100644
---- a/src/lib/target/src/vif.c
-+++ b/src/lib/target/src/vif.c
-@@ -262,7 +262,8 @@ static bool acl_apply(
- 
-     return true;
- }
--
-+//FIXME: is this needed only for mesh something?
-+#if !defined(CONFIG_RDK_EXTENDER) 
- static const char* security_conf_find_by_key(
-         const struct schema_Wifi_VIF_Config *vconf,
-         char *key)
-@@ -279,6 +280,7 @@ static const char* security_conf_find_by_key(
- 
-     return NULL;
- }
-+#endif
- 
- static bool security_to_state(
-         INT ssid_index,
-@@ -449,7 +451,7 @@ static bool security_to_state(
-     vstate->security_len = n;
-     return true;
- }
--
-+#if !defined(CONFIG_RDK_EXTENDER)
- static bool security_to_syncmsg(
-         const struct schema_Wifi_VIF_Config *vconf,
-         MeshWifiAPSecurity *dest)
-@@ -527,7 +529,7 @@ static bool security_to_syncmsg(
- 
-     return true;
- }
--
-+#endif
- static bool vif_is_enabled(INT ssid_index)
- {
-     BOOL        enabled = false;
-@@ -602,10 +604,177 @@ bool vif_copy_to_config(
-         STRSCPY(vconf->mac_list[i], vstate->mac_list[i]);
-     }
-     vconf->mac_list_len = vstate->mac_list_len;
-+    /* CLIENT-API */
-+    SCHEMA_SET_STR(vconf->parent, vstate->parent);
-+    LOGT("vconf->parent = %s", vconf->parent);
-+    SCHEMA_SET_INT(vconf->uapsd_enable, vstate->uapsd_enable);
-+    LOGT("vconf->uapsd_enable = %d", vconf->uapsd_enable);
-+
- 
-     return true;
- }
- 
-+#if defined(CONFIG_RDK_EXTENDER)
-+/* CLIENT-API */
-+
-+bool vif_state_sta_get(INT ssidIndex, struct schema_Wifi_VIF_State *vstate)
-+{
-+    CHAR                            buf[WIFIHAL_MAX_BUFFER];
-+    INT                             ret;
-+    char                            ssid_ifname[128];
-+    hw_mode_t                       min_hw_mode;
-+    INT                             radio_idx;
-+    char                            band[128];
-+    BOOL                            gOnly, nOnly, acOnly;
-+    char                            *str;
-+    ULONG                           lval;
-+    int                             n = 0;
-+
-+    memset(vstate, 0, sizeof(*vstate));
-+    schema_Wifi_VIF_State_mark_all_present(vstate);
-+    vstate->_partial_update = true;
-+    vstate->associated_clients_present = false;
-+    vstate->vif_config_present = false;
-+    memset(ssid_ifname, 0, sizeof(ssid_ifname));
-+
-+    ret = wifi_getSTAName(ssidIndex, ssid_ifname);
-+    if (ret != RETURN_OK)
-+    {
-+        LOGE("%s: cannot get sta name for index %d", __func__, ssidIndex);
-+        return false;
-+    }
-+
-+    SCHEMA_SET_STR(vstate->if_name, target_unmap_ifname(ssid_ifname));
-+
-+    SCHEMA_SET_STR(vstate->mode, "sta");
-+    SCHEMA_SET_INT(vstate->enabled, true);
-+    SCHEMA_SET_INT(vstate->uapsd_enable, false);
-+    SCHEMA_SET_INT(vstate->vif_radio_idx, target_map_ifname_to_vif_radio_idx(vstate->if_name));
-+
-+    // mac (w/ exists)
-+    memset(buf, 0, sizeof(buf));
-+    ret = wifi_getSTAMAC(ssidIndex, buf);
-+    if (ret != RETURN_OK)
-+    {
-+        LOGW("%s: Failed to get STA (mac)", ssid_ifname);
-+    }
-+    else
-+    {
-+        SCHEMA_SET_STR(vstate->mac, buf);
-+    }
-+
-+    // mac (w/ exists)
-+    memset(buf, 0, sizeof(buf));
-+    ret = wifi_getSTABSSID(ssidIndex, buf);
-+    if (ret != RETURN_OK)
-+    {
-+        LOGW("%s: Failed to get STA (parent)", ssid_ifname);
-+    }
-+    else
-+    {
-+        SCHEMA_SET_STR(vstate->parent, buf);
-+    }
-+
-+
-+    ret = wifi_getSSIDRadioIndex(ssidIndex, &radio_idx);
-+    if (ret != RETURN_OK)
-+    {
-+        LOGE("%s: cannot get radio idx for SSID %s\n", __func__, ssid_ifname);
-+        return false;
-+    }
-+
-+
-+    memset(band, 0, sizeof(band));
-+    ret = wifi_getRadioOperatingFrequencyBand(radio_idx, band);
-+    if (ret != RETURN_OK)
-+    {
-+        LOGE("%s: cannot get radio band for idx %d", __func__, radio_idx);
-+        return false;
-+    }
-+
-+
-+    // min_hw_mode (w/ exists)
-+    if (band[0] == '5')
-+    {
-+        min_hw_mode = HW_MODE_11A;
-+    } else
-+    {
-+        min_hw_mode = HW_MODE_11B;
-+    }
-+    ret = wifi_getRadioStandard(radio_idx, buf, &gOnly, &nOnly, &acOnly);
-+    if (ret != RETURN_OK)
-+    {
-+        LOGW("%s: Failed to get min_hw_mode from %d", ssid_ifname, radio_idx);
-+    }
-+    else
-+    {
-+        if (gOnly)
-+        {
-+            min_hw_mode = HW_MODE_11G;
-+        }
-+        else if (nOnly)
-+        {
-+            min_hw_mode = HW_MODE_11N;
-+        }
-+        else if (acOnly)
-+        {
-+            min_hw_mode = HW_MODE_11AC;
-+        }
-+    }
-+
-+    str = c_get_str_by_key(map_hw_mode, min_hw_mode);
-+    if (strlen(str) == 0)
-+    {
-+        LOGW("%s: failed to encode min_hw_mode (%d)",
-+             ssid_ifname, min_hw_mode);
-+    }
-+    else
-+    {
-+        SCHEMA_SET_STR(vstate->min_hw_mode, str);
-+    }
-+    // channel (w/ exists)
-+    ret = wifi_getRadioChannel(radio_idx, &lval);
-+    if (ret != RETURN_OK)
-+    {
-+        LOGW("%s: Failed to get channel from radio idx %d", ssid_ifname, radio_idx);
-+    }
-+    else
-+    {
-+        SCHEMA_SET_INT(vstate->channel, lval);
-+    }
-+
-+
-+    SCHEMA_SET_STR(vstate->ssid_broadcast, "disabled");
-+    SCHEMA_SET_STR(vstate->mac_list_type, "none");
-+    SCHEMA_SET_INT(vstate->btm, 0);
-+    SCHEMA_SET_INT(vstate->rrm, 0);
-+    SCHEMA_SET_INT(vstate->wds, 0);
-+    SCHEMA_SET_INT(vstate->ap_bridge, false);
-+    //Wifi credentials
-+    SCHEMA_SET_STR(vstate->ssid, "opensync.onboard");
-+
-+    strncpy(vstate->security_keys[n],
-+            OVSDB_SECURITY_ENCRYPTION,
-+            sizeof(vstate->security_keys[n]) - 1);
-+
-+    strncpy(vstate->security[n],
-+            OVSDB_SECURITY_ENCRYPTION_WPA_PSK,
-+            sizeof(vstate->security[n]) - 1);
-+    n++;
-+    strncpy(vstate->security_keys[n],
-+            OVSDB_SECURITY_KEY,
-+            sizeof(vstate->security_keys[n]) - 1);
-+    strncpy(vstate->security[n],
-+            "7eCyoqETHiJzKBBALPFP9X8mVy4dwCga",
-+            sizeof(vstate->security[n]) - 1);
-+
-+    n++;
-+    vstate->security_len = n;
-+    return true;
-+
-+}
-+#endif
-+
- bool vif_state_get(INT ssidIndex, struct schema_Wifi_VIF_State *vstate)
- {
-     ULONG                           lval;
-@@ -888,7 +1055,9 @@ bool target_vif_config_set2(
-     INT ret;
-     c_item_t *citem;
-     char tmp[256];
-+#if !defined(CONFIG_RDK_EXTENDER)
-     MeshWifiAPSecurity sec;
-+#endif
-     const char *ssid_ifname = target_map_ifname((char *)vconf->if_name);
- 
-     if (!vif_ifname_to_idx(ssid_ifname, &ssid_index))
-@@ -966,10 +1135,12 @@ bool target_vif_config_set2(
-             else
-             {
-                 LOGI("%s: SSID updated to '%s'", ssid_ifname, tmp);
-+                #if !defined(CONFIG_RDK_EXTENDER)
-                 if (!sync_send_ssid_change(ssid_index, ssid_ifname, vconf->ssid))
-                 {
-                     LOGE("%s: Failed to sync SSID change to '%s'", ssid_ifname, vconf->ssid);
-                 }
-+                #endif
-             }
-         }
-     }
-@@ -977,6 +1148,8 @@ bool target_vif_config_set2(
- 
-     if (changed->security && vconf->security_len)
-     {
-+	//TODO: add proper WA
-+	#if !defined(CONFIG_RDK_EXTENDER)
-         memset(&sec, 0, sizeof(sec));
-         if (!security_to_syncmsg(vconf, &sec))
-         {
-@@ -1018,6 +1191,7 @@ bool target_vif_config_set2(
-                 }
-             }
-         }
-+	#endif
-     }
- 
- 
diff --git a/recipes-connectivity/opensync/files/remove-log-dup.patch b/recipes-connectivity/opensync/files/remove-log-dup.patch
deleted file mode 100644
index 8890e94..0000000
--- a/recipes-connectivity/opensync/files/remove-log-dup.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Index: rdk/rootfs/common/usr/plume/scripts/managers.init
-===================================================================
---- rdk.orig/rootfs/common/usr/plume/scripts/managers.init	2020-01-27 15:26:13.921034680 +0000
-+++ rdk/rootfs/common/usr/plume/scripts/managers.init	2020-01-27 15:27:04.707089802 +0000
-@@ -133,15 +133,6 @@
- 
-     echo "Starting OpenSync managers"
-     start-stop-daemon -c ${RUN_USER} -S -b -x ${PLUME_BIN_DIR}/dm
--    sleep 10
--    managers="DM WM SM CM LM BM QM OM FSM"
--    ${PLUME_OVSH} d AW_Debug
--    for m in $managers
--    do
--        ${PLUME_OVSH} i AW_Debug name:=$m log_severity:=CRIT
--    done
--    sleep 3
--    ${PLUME_OVSH} i AW_Debug name:=NM log_severity:=CRIT
- }
- 
- plume_stop() {
diff --git a/recipes-connectivity/opensync/files/service.patch b/recipes-connectivity/opensync/files/service.patch
deleted file mode 100644
index 582703a..0000000
--- a/recipes-connectivity/opensync/files/service.patch
+++ /dev/null
@@ -1,10 +0,0 @@
-diff --git a/service-provider/academy/build/provider.mk b/service-provider/academy/build/provider.mk
-new file mode 100644
-index 0000000..c81cafd
---- /dev/null
-+++ b/service-provider/academy/build/provider.mk
-@@ -0,0 +1,4 @@
-+VALID_IMAGE_DEPLOYMENT_PROFILES += dev-academy prod-academy
-+
-+CONTROLLER_ADDR="ssl:wildfire.plume.tech:443"
-+PROVIDER_BACKHAUL_CREDS = bhaul-ssid:bhaul-password
diff --git a/recipes-connectivity/opensync/files/update-format-specifier-for-time_t.patch b/recipes-connectivity/opensync/files/update-format-specifier-for-time_t.patch
deleted file mode 100644
index 9c4bedf..0000000
--- a/recipes-connectivity/opensync/files/update-format-specifier-for-time_t.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/src/sm/src/sm_survey_report.c b/src/sm/src/sm_survey_report.c
-index 3e464e8..c94008c 100644
---- a/src/sm/src/sm_survey_report.c
-+++ b/src/sm/src/sm_survey_report.c
-@@ -967,7 +967,7 @@ bool sm_survey_threshold_util_cb (
-     survey_ctx->threshold_record = *survey_entry;
- 
-     int threshold_util = result_entry.chan_tx + result_entry.chan_self;
--    LOGD("Checking %s %s survey threshold util: %d/%d delay: %ld/%d count: %d/%d",
-+    LOGD("Checking %s %s survey threshold util: %d/%d delay: %lld/%d count: %d/%d",
-          radio_get_name_from_cfg(radio_cfg_ctx),
-          radio_get_scan_name_from_type(scan_type),
-          threshold_util, request_ctx->threshold_util,
-@@ -1099,7 +1099,7 @@ bool sm_survey_stats_update (
-             scan_interval = SURVEY_MIN_SCAN_INTERVAL;
- 
-             // always scan if max_delay exceeded
--            LOGI("Force processing %s %s survey delay: %ld/%d count: %d/%d",
-+            LOGI("Force processing %s %s survey delay: %lld/%d count: %d/%d",
-                  radio_get_name_from_cfg(radio_cfg_ctx),
-                  radio_get_scan_name_from_type(scan_type),
-                  survey_ctx->threshold_time_delta, request_ctx->threshold_max_delay,
diff --git a/recipes-connectivity/opensync/opensync_2.0.5.bbappend b/recipes-connectivity/opensync/opensync_2.0.5.bbappend
deleted file mode 100644
index 596c6ae..0000000
--- a/recipes-connectivity/opensync/opensync_2.0.5.bbappend
+++ /dev/null
@@ -1,15 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-CORE_URI_remove = "${@bb.utils.contains('DISTRO_FEATURES', 'extender', 'file://0002-Use-osync_hal-in-inet_gretap.patch', '', d)}"
-
-CORE_URI_append_dunfell = " file://absolute-value-glibc-dunfell-fix.patch"
-CORE_URI_append_dunfell = " file://dunfell-nm-crash-fix.patch"
-CORE_URI_append_dunfell = " ${@bb.utils.contains('DISTRO_FEATURES', 'extender', 'file://update-format-specifier-for-time_t.patch', '', d)}"
-
-VENDOR_URI = "git://git@github.com/rdkcentral/opensync-vendor-rdk-turris.git;protocol=${CMF_GIT_PROTOCOL};branch=${CMF_GITHUB_MASTER_BRANCH};name=vendor;destsuffix=git/vendor/turris"
-VENDOR_URI += "file://service.patch;patchdir=${WORKDIR}/git/"
-VENDOR_URI += "file://opensync.service"
-
-DEPENDS_append = " rdk-logger hal-wifi-cfg80211"
-
-RDK_CFLAGS += " -D_PLATFORM_TURRIS_"
diff --git a/recipes-core/images/core-image-minimal.bbappend b/recipes-core/images/core-image-minimal.bbappend
deleted file mode 100644
index d8af638..0000000
--- a/recipes-core/images/core-image-minimal.bbappend
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "Marvell RFS"
-
-inherit rdk-image
-
-MACHINE_IMAGE_NAME = "core-image-minimal"
-
-IMAGE_FEATURES_remove = "read-only-rootfs"
-
-IMAGE_INSTALL_append = " \
-    packagegroup-turris-core \
-    "
-ROOTFS_PKGMANAGE_BOOTSTRAP  = "run-postinsts"
-
-IMAGE_INSTALL += " ${ROOTFS_PKGMANAGE_BOOTSTRAP} \
-		   ${CORE_IMAGE_EXTRA_INSTALL} \
-		"
-
-BB_HASH_IGNORE_MISMATCH = "1"
-
-IMAGE_NAME[vardepsexclude] = "DATETIME"
diff --git a/recipes-core/images/rdk-generic-broadband-5.10-kernel-image.bb b/recipes-core/images/rdk-generic-broadband-5.10-kernel-image.bb
deleted file mode 100644
index 065d62d..0000000
--- a/recipes-core/images/rdk-generic-broadband-5.10-kernel-image.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-inherit rdk-image
-
-IMAGE_FEATURES_remove = "read-only-rootfs"
-
-SYSTEMD_TOOLS = "systemd-analyze systemd-bootchart"
-# systemd-bootchart doesn't currently build with musl libc
-SYSTEMD_TOOLS_remove_libc-musl = "systemd-bootchart"
-
-IMAGE_INSTALL += " packagegroup-turris-core \
-    ${SYSTEMD_TOOLS} \
-    linux-firmware-ath10k \
-    network-hotplug \
-    libmcrypt \
-    bzip2 \
-    nmap \
-    libpcap \
-    tcpdump \
-    ebtables \
-    iw \
-    ethtool \
-    bc \
-    mesh-agent \
-    opensync \
-    openvswitch \
-    "
-
-BB_HASH_IGNORE_MISMATCH = "1"
-IMAGE_NAME[vardepsexclude] = "DATETIME"
-
-require image-exclude-files.inc
-
-remove_unused_file() {
-   for i in ${REMOVED_FILE_LIST} ; do rm -rf ${IMAGE_ROOTFS}/$i ; done
-}
-
-ROOTFS_POSTPROCESS_COMMAND_append = "remove_unused_file; "
-
-MACHINE_IMAGE_NAME = "rdk-generic-broadband-5.10-kernel-image"
diff --git a/recipes-core/images/rdk-generic-broadband-image.bbappend b/recipes-core/images/rdk-generic-broadband-image.bbappend
index 0781f60..c2f40b6 100644
--- a/recipes-core/images/rdk-generic-broadband-image.bbappend
+++ b/recipes-core/images/rdk-generic-broadband-image.bbappend
@@ -6,29 +6,18 @@
 # systemd-bootchart doesn't currently build with musl libc
 SYSTEMD_TOOLS_remove_libc-musl = "systemd-bootchart"
 
-IMAGE_INSTALL += " packagegroup-turris-core \
+IMAGE_INSTALL += " packagegroup-filogic-core \
     ${SYSTEMD_TOOLS} \
-    linux-mac80211 \
-    kernel-module-compat \
-    kernel-module-cfg80211 \
-    kernel-module-mac80211 \
-    linux-mt76 \
-    kernel-module-mt76 \
-    kernel-module-mt7915e \
-    regs \
-    mii-mgr \
     network-hotplug \
     libmcrypt \
-    bzip2 \
-    libpcap \
-    tcpdump \
-    ebtables \
-    iw \
-    ethtool \
-    bc \
-    mesh-agent \
-    openvswitch \
-    opensync \
+    coreutils \
+    util-linux-readprofile \    
+    iputils \ 
+    bc \ 
+    python-core \
+    dosfstools \
+    pptp-linux \
+    rp-pppoe  \  
     "
 
 BB_HASH_IGNORE_MISMATCH = "1"
diff --git a/recipes-core/images/rdk-generic-broadband-tdk-image.bbappend b/recipes-core/images/rdk-generic-broadband-tdk-image.bbappend
index 935fab3..4fca211 100644
--- a/recipes-core/images/rdk-generic-broadband-tdk-image.bbappend
+++ b/recipes-core/images/rdk-generic-broadband-tdk-image.bbappend
@@ -6,31 +6,18 @@
 # systemd-bootchart doesn't currently build with musl libc
 SYSTEMD_TOOLS_remove_libc-musl = "systemd-bootchart"
 
-IMAGE_INSTALL += " packagegroup-turris-core \
+IMAGE_INSTALL += " packagegroup-filogic-core \
     ${SYSTEMD_TOOLS} \
-    linux-mac80211 \
-    kernel-module-compat \
-    kernel-module-cfg80211 \
-    kernel-module-mac80211 \
-    linux-mt76 \
-    kernel-module-mt76 \
-    kernel-module-mt7915e \
-    regs \
-    mii-mgr \
     network-hotplug \
     libmcrypt \
-    bzip2 \
-    nmap \
-    libpcap \
-    tcpdump \
-    ebtables \
-    iw \
-    ethtool \
-    bc \
+    coreutils \
+    util-linux-readprofile \    
+    iputils \ 
+    bc \ 
+    python-core \
+    pptp-linux \
+    rp-pppoe  \
     procps \
-    mesh-agent \
-    opensync \
-    openvswitch \
     "
 
 BB_HASH_IGNORE_MISMATCH = "1"
diff --git a/recipes-core/images/rdk-generic-extender-image.bb b/recipes-core/images/rdk-generic-extender-image.bb
deleted file mode 100644
index 32e9b09..0000000
--- a/recipes-core/images/rdk-generic-extender-image.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "A image for the RDK extender yocto build"
-
-inherit rdk-image
-
-IMAGE_FEATURES_remove = "read-only-rootfs"
-
-IMAGE_ROOTFS_SIZE = "8192"
-
-IMAGE_INSTALL += " packagegroup-turris-core \
-    rdk-logger \
-    ${SYSTEMD_TOOLS} \
-    linux-firmware-ath10k \
-    libmcrypt \
-    bzip2 \
-    libpcap \
-    tcpdump \
-    ebtables \
-    dropbear \
-    iw \
-    opensync \
-    openvswitch \
-    libcap \
-    bridge-utils \
-    strace \
-    wpa-supplicant \
-    "
-IMAGE_INSTALL_append_dunfell += " network-hotplug"
-
-SYSTEMD_TOOLS = "systemd-analyze systemd-bootchart"
-# systemd-bootchart doesn't currently build with musl libc
-SYSTEMD_TOOLS_remove_libc-musl = "systemd-bootchart"
-
-do_rootfs[nostamp] = "1"
-
-remove_unused_file() {
- rm -rf ${IMAGE_ROOTFS}/usr/lib/python* ;
-}
-
-ROOTFS_POSTPROCESS_COMMAND_append = "remove_unused_file; "
diff --git a/recipes-core/packagegroups/packagegroup-filogic-core.bb b/recipes-core/packagegroups/packagegroup-filogic-core.bb
new file mode 100644
index 0000000..49ff893
--- /dev/null
+++ b/recipes-core/packagegroups/packagegroup-filogic-core.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Custom core image package group for filogic boards"
+
+LICENSE = "MIT"
+
+inherit packagegroup
+
+DEPENDS = "libnl"
+
+PACKAGES = " \
+	  packagegroup-filogic-core \
+	"
+
+RDEPENDS_packagegroup-filogic-core = " \
+    packagegroup-core-boot \
+    wireless-tools \
+    hostapd \
+    wpa-supplicant \
+    wireless-regdb-static \
+    linux-mac80211 \
+    kernel-module-compat \
+    kernel-module-cfg80211 \
+    kernel-module-mac80211 \
+    linux-mt76 \
+    kernel-module-mt76 \
+    kernel-module-mt7915e \
+    iw \
+    ethtool \
+    ebtables \
+    regs \
+    mii-mgr \
+    "
diff --git a/recipes-core/packagegroups/packagegroup-filogic-extra.bb b/recipes-core/packagegroups/packagegroup-filogic-extra.bb
new file mode 100644
index 0000000..9de87ef
--- /dev/null
+++ b/recipes-core/packagegroups/packagegroup-filogic-extra.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Custom extra package group for filogic boards"
+
+LICENSE = "MIT"
+
+inherit packagegroup
+
+DEPENDS = "libnl"
+
+PACKAGES = " \
+	  packagegroup-filogic-extra \
+	"
+
+RDEPENDS_packagegroup-filogic-extra = " \
+    bzip2 \
+    nmap \
+    devmem2 \
+    cryptsetup \
+    dosfstools \
+    e2fsprogs \
+    squashfs-tools \
+    btrfs-tools \    
+    fftw \
+    nfs-utils \
+    rpcbind \
+    sg3-utils \
+    libpcap \
+    tcpdump \
+    valgrind \
+    testfloat \
+    lttng-tools \
+    mesh-agent \
+    opensync \
+    openvswitch \
+    "
diff --git a/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend b/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend
index 92af54b..a1923ff 100644
--- a/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend
+++ b/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend
@@ -3,6 +3,15 @@
 RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "sys-resource"
 RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ccsp-cm-agent-ccsp"
 RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ccsp-cm-agent"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ccsp-mta-agent-ccsp"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ccsp-mta-agent"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ccsp-tr069-pa"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ccsp-tr069-pa-ccsp"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ccsp-epon-agent"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ovs-agent"
+RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "harvester"
+#RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ccsp-hotspot"
+#RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "ccsp-hotspot-kmod"
 
 #removing memstress for now following a build issue
 RDEPENDS_packagegroup-rdk-ccsp-broadband_remove = "memstress"
diff --git a/recipes-core/packagegroups/packagegroup-turris-core.bb b/recipes-core/packagegroups/packagegroup-turris-core.bb
deleted file mode 100644
index 87a44fe..0000000
--- a/recipes-core/packagegroups/packagegroup-turris-core.bb
+++ /dev/null
@@ -1,57 +0,0 @@
-SUMMARY = "Custom core image package group for marvell boards"
-
-LICENSE = "MIT"
-
-inherit packagegroup
-
-DEPENDS = "libnl"
-
-PACKAGES = " \
-	  packagegroup-turris-core \
-	"
-
-RDEPENDS_packagegroup-turris-core = " \
-   packagegroup-core-boot \
-   devmem2 \
-   lttng-tools \
-   pptp-linux \
-   rp-pppoe  \
-   iputils \
-   btrfs-tools \
-   util-linux-readprofile \
-   wireless-tools \
-   trace-cmd \
-   cryptsetup \
-   coreutils \
-   dosfstools \
-   e2fsprogs \
-   fftw \
-   hostapd \
-   wpa-supplicant \
-   iproute2 \
-   libpcap \
-   nfs-utils \
-   openssh \
-   openssl \
-   rpcbind \
-   python-core \
-   sg3-utils \
-   squashfs-tools \
-   valgrind \
-   testfloat \
-   iperf \
-   dhcp-server \
-   iptables \
-   dnsmasq \
-   dt \
-   wireless-regdb-static \
-    "
-RDEPENDS_packagegroup-turris-core_remove = "\
-dt \
-"
-
-#turris omnia uses dropbear, so removing openssh
-RDEPENDS_packagegroup-turris-core_remove = "openssh"
-
-#for yocto 3.1 migration, the following components are removed
-RDEPENDS_packagegroup-turris-core_remove_dunfell = " iperf trace-cmd"
diff --git a/recipes-devtools/dt/dt_18.32.bbappend b/recipes-devtools/dt/dt_18.32.bbappend
deleted file mode 100644
index 1ce5a77..0000000
--- a/recipes-devtools/dt/dt_18.32.bbappend
+++ /dev/null
@@ -1,3 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-SRC_URI_append = "file://dt-turris.patch \
-		"
diff --git a/recipes-devtools/dt/files/dt-turris.patch b/recipes-devtools/dt/files/dt-turris.patch
deleted file mode 100644
index 44884f3..0000000
--- a/recipes-devtools/dt/files/dt-turris.patch
+++ /dev/null
@@ -1,51 +0,0 @@
---- dt.v18.32/common.h	2019-03-11 14:38:35.873070718 +0000
-+++ dt.v18.32_orig/common.h	2019-03-11 14:48:52.257169390 +0000
-@@ -169,6 +169,18 @@
- #define LXF	 "0x%I64x"
- #define FUF	 LUF 
- #define FXF	 LXF 
-+#elif defined(__GNUC__)
-+
-+#define QuadIsLongLong
-+typedef unsigned long long int	large_t;
-+typedef signed long long int	slarge_t;
-+typedef volatile large_t	v_large;
-+typedef volatile slarge_t	v_slarge;
-+#  define LUF   "%llu"
-+#  define LDF   "%lld"
-+#  define LXF   "%#llx"
-+#  define FUF	LUF
-+#  define FXF	LXF
- 
- #else /* !defined(MACHINE_64BITS) && !defined(__GNUC__) */
- 
-@@ -283,6 +295,8 @@
- #endif /* defined(sun) */
- #endif /* 0 */
- 
-+typedef unsigned long           daddr_t;
-+
- #define ulong64		large_t
- #define long64		slarge_t
- 
---- dt.v18.32/dtunix.c	2013-04-04 13:29:02.000000000 +0000
-+++ dt.v18.32_orig/dtunix.c	2019-03-11 14:52:39.579755590 +0000
-@@ -30,6 +30,7 @@
-  *	This module contains *unix OS specific functions.
-  */
- #include "dt.h"
-+#include "paths.h"
- 
- /*
-  * SHIT! Another area of incompatability between *nix OS's! :-(
---- dt.v18.32/dtutil.c	2019-03-11 14:51:24.176217843 +0000
-+++ dt.v18.32_orig/dtutil.c	2019-03-11 14:54:29.631084150 +0000
-@@ -53,7 +53,7 @@
- #if defined(sun)
- #  define strtoul	strtol
- #endif /* defined(sun) */
--
-+#  define strtouq       strtoull
- /*
-  * Modification History:
-  *
diff --git a/recipes-devtools/valgrind/valgrind_3.15.0.bbbappend b/recipes-devtools/valgrind/valgrind_3.15.0.bbbappend
deleted file mode 100644
index ac1b17f..0000000
--- a/recipes-devtools/valgrind/valgrind_3.15.0.bbbappend
+++ /dev/null
@@ -1 +0,0 @@
-CFLAGS += "-fno-stack-protector"
diff --git a/recipes-networking/openvswitch/openvswitch_git.bbappend b/recipes-networking/openvswitch/openvswitch_git.bbappend
deleted file mode 100644
index ccc2920..0000000
--- a/recipes-networking/openvswitch/openvswitch_git.bbappend
+++ /dev/null
@@ -1,14 +0,0 @@
-DEPENDS_remove_dunfell = "virtual/kernel bridge-utils"
-DEPENDS_append_class-target_dunfell = " virtual/kernel kernel-devsrc"
-DEPENDS_append_class-target_dunfell = " bridge-utils"
-EXTRA_OECONF += "--enable-ssl"
-
-EXTRA_OECONF_class-target_dunfell += "--with-linux=${STAGING_KERNEL_BUILDDIR} --with-linux-source=${STAGING_KERNEL_DIR} KARCH=${UBOOT_ARCH} PYTHON=python3 PYTHON3=python3 PERL=${bindir}/perl "
-
-#disable openvswitch autostart
-SYSTEMD_SERVICE_${PN}-switch = ""
-do_compile_prepend() {
-        export CROSS_COMPILE=`echo '${TARGET_PREFIX}'`
-}
-
-PACKAGECONFIG[ssl] = " "
diff --git a/recipes-protocols/ieee1905/files/0001-Added-support-for-RDK-flavour-compilation.patch b/recipes-protocols/ieee1905/files/0001-Added-support-for-RDK-flavour-compilation.patch
deleted file mode 100644
index 6d4f038..0000000
--- a/recipes-protocols/ieee1905/files/0001-Added-support-for-RDK-flavour-compilation.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 869cc8dec87571972c487aa3c948ed2ba6b94fb2 Mon Sep 17 00:00:00 2001
-From: GuruVinayak P <gp@synamedia.com>
-Date: Tue, 3 Nov 2020 19:07:28 +0530
-Subject: [PATCH 1/2] Added support for RDK flavour compilation
-
----
- Makefile | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/Makefile b/Makefile
-index 0f5c0f0..3750cf9 100644
---- a/Makefile
-+++ b/Makefile
-@@ -86,6 +86,12 @@ ifeq ($(PLATFORM),linux)
- 
-         AL_SUPPORTED  := yes
-         HLE_SUPPORTED := yes
-+    else ifeq ($(FLAVOUR), RDK)
-+	# AR, CC, LDFLAGS and CFLAGS should come from the recipe
-+        CCFLAGS   := $(CFLAGS)
-+
-+        AL_SUPPORTED  := yes
-+        HLE_SUPPORTED := yes
-     else ifeq ($(FLAVOUR), arm_wrt1900acx)
-         CC        := $(WRT1900_CROSS)gcc
-         AR        := $(WRT1900_CROSS)ar
--- 
-2.7.4
-
diff --git a/recipes-protocols/ieee1905/files/0002-Added-support-for-openssl-1.1.0-compilation.patch b/recipes-protocols/ieee1905/files/0002-Added-support-for-openssl-1.1.0-compilation.patch
deleted file mode 100644
index 6855241..0000000
--- a/recipes-protocols/ieee1905/files/0002-Added-support-for-openssl-1.1.0-compilation.patch
+++ /dev/null
@@ -1,255 +0,0 @@
-From 0063be96a810fad52ac5dff12a7117da6b58099e Mon Sep 17 00:00:00 2001
-From: GuruVinayak P <gp@synamedia.com>
-Date: Wed, 4 Nov 2020 11:41:24 +0530
-Subject: [PATCH] Added support for openssl 1.1.0 compilation
-
----
- src/al/src_linux/platform_crypto.c | 149 ++++++++++++++++++++++++++---
- src/al/src_linux/platform_os.c     |   1 +
- 2 files changed, 138 insertions(+), 12 deletions(-)
-
-diff --git a/src/al/src_linux/platform_crypto.c b/src/al/src_linux/platform_crypto.c
-index 209febd..ae4eb5e 100644
---- a/src/al/src_linux/platform_crypto.c
-+++ b/src/al/src_linux/platform_crypto.c
-@@ -144,6 +144,53 @@ INT8U PLATFORM_GENERATE_DH_KEY_PAIR(INT8U **priv, INT16U *priv_len, INT8U **pub,
-         return 0;
-     }
- 
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
-+    BIGNUM *dhp_bn, *dhg_bn;
-+    if (NULL == (dhp_bn = BN_bin2bn(dh1536_p,sizeof(dh1536_p),NULL)))
-+    {
-+        DH_free(dh);
-+        return 0;
-+    }
-+    if (NULL == (dhg_bn = BN_bin2bn(dh1536_g,sizeof(dh1536_g),NULL)))
-+    {
-+        DH_free(dh);
-+        BN_free(dhp_bn);
-+        return 0;
-+    }
-+    if (!DH_set0_pqg(dh, dhp_bn, NULL, dhg_bn)) {
-+        DH_free(dh);
-+        BN_free(dhp_bn);
-+        BN_free(dhg_bn);
-+        return 0;
-+    }
-+
-+    // Obtain key pair
-+    //
-+    if (0 == DH_generate_key(dh))
-+    {
-+        DH_free(dh);
-+        BN_free(dhp_bn);
-+        BN_free(dhg_bn);
-+        return 0;
-+    }
-+
-+    const BIGNUM *priv_key, *pub_key;
-+    DH_get0_key(dh, &priv_key, &pub_key);
-+
-+    *priv_len = BN_num_bytes(priv_key);
-+    *priv     = (INT8U *)malloc(*priv_len);
-+    BN_bn2bin(priv_key, *priv);
-+
-+    *pub_len = BN_num_bytes(pub_key);
-+    *pub     = (INT8U *)malloc(*pub_len);
-+    BN_bn2bin(pub_key, *pub);
-+
-+    DH_set0_key(dh, (BIGNUM *) priv_key, (BIGNUM *) pub_key);
-+
-+    DH_free(dh);
-+    BN_free(dhp_bn);
-+    BN_free(dhg_bn);
-+#else
-     // Convert binary to BIGNUM format
-     //
-     if (NULL == (dh->p = BN_bin2bn(dh1536_p,sizeof(dh1536_p),NULL)))
-@@ -174,6 +221,7 @@ INT8U PLATFORM_GENERATE_DH_KEY_PAIR(INT8U **priv, INT16U *priv_len, INT8U **pub,
-     BN_bn2bin(dh->pub_key, *pub);
- 
-     DH_free(dh);
-+#endif
-       // NOTE: This internally frees "dh->p" and "dh->q", thus no need for us
-       // to do anything else.
- 
-@@ -206,6 +254,41 @@ INT8U PLATFORM_COMPUTE_DH_SHARED_SECRET(INT8U **shared_secret, INT16U *shared_se
- 
-     // Convert binary to BIGNUM format
-     //
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
-+    BIGNUM *dhp_bn, *dhg_bn;
-+    if (NULL == (dhp_bn = BN_bin2bn(dh1536_p,sizeof(dh1536_p),NULL)))
-+    {
-+        DH_free(dh);
-+        return 0;
-+    }
-+    if (NULL == (dhg_bn = BN_bin2bn(dh1536_g,sizeof(dh1536_g),NULL)))
-+    {
-+        DH_free(dh);
-+        BN_free(dhp_bn);
-+        return 0;
-+    }
-+    if (!DH_set0_pqg(dh, dhp_bn, NULL, dhg_bn)) {
-+        DH_free(dh);
-+        BN_free(dhp_bn);
-+        BN_free(dhg_bn);
-+        return 0;
-+    }
-+    if (NULL == (pub_key = BN_bin2bn(remote_pub, remote_pub_len, NULL)))
-+    {
-+        DH_free(dh);
-+        return 0;
-+    }
-+
-+    BIGNUM *priv_key;
-+
-+    if (NULL == (priv_key = BN_bin2bn(local_priv, local_priv_len, NULL)))
-+    {
-+        BN_clear_free(pub_key);
-+        DH_free(dh);
-+        return 0;
-+    }
-+    DH_set0_key(dh, (BIGNUM *) priv_key, NULL);
-+#else
-     if (NULL == (dh->p = BN_bin2bn(dh1536_p,sizeof(dh1536_p),NULL)))
-     {
-         DH_free(dh);
-@@ -227,6 +310,7 @@ INT8U PLATFORM_COMPUTE_DH_SHARED_SECRET(INT8U **shared_secret, INT16U *shared_se
-         DH_free(dh);
-         return 0;
-     }
-+#endif
- 
-     // Allocate output buffer
-     //
-@@ -354,60 +438,101 @@ INT8U PLATFORM_HMAC_SHA256(INT8U *key, INT32U keylen, INT8U num_elem, INT8U **ad
- 
- INT8U PLATFORM_AES_ENCRYPT(INT8U *key, INT8U *iv, INT8U *data, INT32U data_len)
- {
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
-+    EVP_CIPHER_CTX * pCtx = EVP_CIPHER_CTX_new();
-+    if (!pCtx) {
-+        return 0;
-+    }
-+#else
-     EVP_CIPHER_CTX ctx;
-+    EVP_CIPHER_CTX * pCtx = &ctx;
-+#endif
-+
- 
-     int clen, len;
-     INT8U buf[AES_BLOCK_SIZE];
- 
--    EVP_CIPHER_CTX_init(&ctx);
--    if (EVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key, iv) != 1)
-+    EVP_CIPHER_CTX_init(pCtx);
-+    if (EVP_EncryptInit_ex(pCtx, EVP_aes_128_cbc(), NULL, key, iv) != 1)
-     {
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
-+        EVP_CIPHER_CTX_free(pCtx);
-+#endif
-         return 0;
-     }
--    EVP_CIPHER_CTX_set_padding(&ctx, 0);
-+    EVP_CIPHER_CTX_set_padding(pCtx, 0);
- 
-     clen = data_len;
--    if (EVP_EncryptUpdate(&ctx, data, &clen, data, data_len) != 1 || clen != (int) data_len)
-+    if (EVP_EncryptUpdate(pCtx, data, &clen, data, data_len) != 1 || clen != (int) data_len)
-     {
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
-+        EVP_CIPHER_CTX_free(pCtx);
-+#endif
-         return 0;
-     }
- 
-     len = sizeof(buf);
--    if (EVP_EncryptFinal_ex(&ctx, buf, &len) != 1 || len != 0)
-+    if (EVP_EncryptFinal_ex(pCtx, buf, &len) != 1 || len != 0)
-     {
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
-+        EVP_CIPHER_CTX_free(pCtx);
-+#endif
-         return 0;
-     }
--    EVP_CIPHER_CTX_cleanup(&ctx);
-+    EVP_CIPHER_CTX_cleanup(pCtx);
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
-+    EVP_CIPHER_CTX_free(pCtx);
-+#endif
- 
-     return 1;
- }
- 
- INT8U PLATFORM_AES_DECRYPT(INT8U *key, INT8U *iv, INT8U *data, INT32U data_len)
- {
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
-+    EVP_CIPHER_CTX * pCtx = EVP_CIPHER_CTX_new();
-+    if (!pCtx) {
-+        return 0;
-+    }
-+#else
-     EVP_CIPHER_CTX ctx;
-+    EVP_CIPHER_CTX * pCtx = &ctx;
-+#endif
- 
-     int plen, len;
-     INT8U buf[AES_BLOCK_SIZE];
- 
--    EVP_CIPHER_CTX_init(&ctx);
--    if (EVP_DecryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key, iv) != 1)
-+    EVP_CIPHER_CTX_init(pCtx);
-+    if (EVP_DecryptInit_ex(pCtx, EVP_aes_128_cbc(), NULL, key, iv) != 1)
-     {
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
-+        EVP_CIPHER_CTX_free(pCtx);
-+#endif
-         return 0;
-     }
--    EVP_CIPHER_CTX_set_padding(&ctx, 0);
-+    EVP_CIPHER_CTX_set_padding(pCtx, 0);
- 
-     plen = data_len;
--    if (EVP_DecryptUpdate(&ctx, data, &plen, data, data_len) != 1 || plen != (int) data_len)
-+    if (EVP_DecryptUpdate(pCtx, data, &plen, data, data_len) != 1 || plen != (int) data_len)
-     {
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
-+        EVP_CIPHER_CTX_free(pCtx);
-+#endif
-         return 0;
-     }
- 
-     len = sizeof(buf);
--    if (EVP_DecryptFinal_ex(&ctx, buf, &len) != 1 || len != 0)
-+    if (EVP_DecryptFinal_ex(pCtx, buf, &len) != 1 || len != 0)
-     {
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
-+        EVP_CIPHER_CTX_free(pCtx);
-+#endif
-         return 0;
-     }
--    EVP_CIPHER_CTX_cleanup(&ctx);
-+    EVP_CIPHER_CTX_cleanup(pCtx);
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
-+    EVP_CIPHER_CTX_free(pCtx);
-+#endif
- 
-     return 1;
- }
-diff --git a/src/al/src_linux/platform_os.c b/src/al/src_linux/platform_os.c
-index 9a04988..1ef1687 100644
---- a/src/al/src_linux/platform_os.c
-+++ b/src/al/src_linux/platform_os.c
-@@ -61,6 +61,7 @@
- #include "platform_alme_server_priv.h"
- #include "1905_l2.h"
- 
-+#include <signal.h>      // SEGEV_THREAD
- #include <stdlib.h>      // free(), malloc(), ...
- #include <string.h>      // memcpy(), memcmp(), ...
- #include <pthread.h>     // threads and mutex functions
--- 
-2.24.3 (Apple Git-128)
-
diff --git a/recipes-protocols/ieee1905/ieee1905_git.bb b/recipes-protocols/ieee1905/ieee1905_git.bb
deleted file mode 100644
index 4815540..0000000
--- a/recipes-protocols/ieee1905/ieee1905_git.bb
+++ /dev/null
@@ -1,48 +0,0 @@
-SUMMARY = "OpenSource IEEE1905.1a implementation"
-LICENSE = "BSD-2-Clause-Patent"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=9cbc6eb40e7e82d67fbbce1734e6622b"
-
-DEPENDS = "openssl libpcap multiap-platform"
-S = "${WORKDIR}/git"
-
-SRC_URI = "git://github.com/TechnicolorEDGM/ieee1905.git;protocol=https \
-           file://0001-Added-support-for-RDK-flavour-compilation.patch \
-          "
-#rdk-port: <TBD> need to apply following patch accordingly
-#           file://0002-Added-support-for-openssl-1.1.0-compilation.patch
-
-SRC_URI[md5sum] = "d0ca2c6f7cdc80102f404b75f8563b0f"
-SRC_URI[sha256sum] = "f9c8b5c3eba68b6cd4c8a92b07061487680d7d2ca93f1dcfe0093aa968e80389"
-
-SRCREV = "${AUTOREV}"
-
-S = "${WORKDIR}/git"
-
-CFLAGS_append = " \
-                "
-
-LDFLAGS_append = " \
-    -lpthread \
-    -lpcap \
-    -lcrypto \
-    -lrt \
-    "
-
-do_compile () {
-    PLATFORM=linux FLAVOUR=RDK make
-}
-
-do_install () {
-    # Installing header files and binaries
-    install -d ${D}${includedir}
-    install -m 0644 ${B}/src/al/src_independent/extensions/map/1905_lib.h ${D}${includedir}/1905_lib.h
-    install -d ${D}${bindir}
-    install -m 555 ${S}/output/al_entity ${D}/${bindir}/al_entity
-    install -m 555 ${S}/output/hle_entity ${D}/${bindir}/hle_entity
-}
-
-#Not installing for now
-#IMAGE_INSTALL += " ieee1905"
-
-FILES_${PN} += "${bindir}/al_entity"
-FILES_${PN} += "${bindir}/hle_entity"
diff --git a/recipes-rdkb/sysint-broadband/files/TurrisFwUpgrade.sh b/recipes-rdkb/sysint-broadband/files/TurrisFwUpgrade.sh
deleted file mode 100755
index e24e244..0000000
--- a/recipes-rdkb/sysint-broadband/files/TurrisFwUpgrade.sh
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/bash
-
-if [ $1 ] ; then
-  echo "Usage '/lib/rdk/FwUgrade.sh'"
-  echo "Note: New images should be downloaded in /tmp directory"
-  exit 1
-fi
-
-check ()
-{
-  if [ $? != 0 ]; then
-    echo $*
-    exit 1
-  fi
-}
-
-ls /tmp/zImage* >/dev/null
-check "No new image present in /tmp directory"
-
-BootPartition="/dev/mmcblk0p1"
-NewTurrisModel=1
-
-ActiveRootPartition=`mount | grep "/" -w | cut -d' ' -f1`
-if [ $ActiveRootPartition == "/dev/mmcblk0p2" ]; then
-  TargetRootPartition="/dev/mmcblk0p3"
-elif [ $ActiveRootPartition == "/dev/mmcblk0p3" ]; then
-  TargetRootPartition="/dev/mmcblk0p2"
-elif [ $ActiveRootPartition == "/dev/mmcblk0p5" ]; then
-  TargetRootPartition="/dev/mmcblk0p7"
-  BootPartition="/dev/mmcblk0p3"
-  NewTurrisModel=0
-else ##if $ActiveRootPartition is "/dev/mmcblk0p7"
-  TargetRootPartition="/dev/mmcblk0p5"
-  BootPartition="/dev/mmcblk0p3"
-  NewTurrisMode=0
-fi
-echo "ActiveRootPartition: $ActiveRootPartition"
-echo "TargetRootPartition: $TargetRootPartition"
-echo "BootPartition: $BootPartition"
-
-umount /mnt 2>/dev/null
-echo y | mkfs.ext2 $TargetRootPartition
-check "Error in formatting $TargetRootPartition"
-
-mount $TargetRootPartition /mnt
-check "Error in mounting $TargetRootPartition"
-
-tar -xzf /tmp/*.tar.gz -C /mnt
-check "Error in unpacking new rootfs"
-
-umount /mnt
-check "Error in unmounting"
-echo "New rootfs is loaded in $TargetRootPartition"
-
-mount $BootPartition /mnt/
-check "Error in mounting $BootPartition"
-
-mv /mnt/zImage /zImage_old
-cp /tmp/zImage* /mnt/zImage
-if [ $? != 0 ]; then
-echo "Error in copying zImage. Falling back."
-mv /zImage_old /mnt/zImage
-exit 1
-fi
-
-if [ $NewTurrisModel -eq 1 ]; then
-  if [ $TargetRootPartition == "/dev/mmcblk0p2" ]; then
-    cp /boot-main.scr /mnt/boot.scr
-  else
-    cp /boot-alt.scr /mnt/boot.scr
-  fi
-else
-  fw_setenv yocto_bootargs earlyprintk console=ttyS0,115200 root=$TargetRootPartition rootfstype=ext2 rw rootwait
-fi
diff --git a/recipes-rdkb/sysint-broadband/sysint-broadband.bbappend b/recipes-rdkb/sysint-broadband/sysint-broadband.bbappend
index 2a599ce..8ce6332 100644
--- a/recipes-rdkb/sysint-broadband/sysint-broadband.bbappend
+++ b/recipes-rdkb/sysint-broadband/sysint-broadband.bbappend
@@ -10,7 +10,6 @@
 
 SRC_URI_remove = "${CMF_GIT_ROOT}/rdkb/devices/intel-x86-pc/emulator/sysint;module=.;protocol=${CMF_GIT_PROTOCOL};branch=${CMF_GIT_BRANCH};destsuffix=git/device;name=sysintdevice"
 
-SRC_URI += "file://TurrisFwUpgrade.sh"
 SRC_URI += "file://swupdate_utility.sh"
 SRC_URI += "file://swupdate.service"
 SRC_URI += "file://commonUtils.sh \
@@ -30,11 +29,10 @@
 SYSTEMD_SERVICE_${PN} = "dcm-log.service"
 
 do_install_append() {
-    echo "BOX_TYPE=turris" >> ${D}${sysconfdir}/device.properties
+    echo "BOX_TYPE=Filogic" >> ${D}${sysconfdir}/device.properties
     echo "ARM_INTERFACE=erouter0" >> ${D}${sysconfdir}/device.properties
     install -d ${D}${base_libdir}/rdk
     install -d ${D}${systemd_unitdir}/system
-    install -m 0755 ${WORKDIR}/TurrisFwUpgrade.sh ${D}${base_libdir}/rdk
     install -m 0755 ${WORKDIR}/swupdate_utility.sh ${D}${base_libdir}/rdk
     install -m 0644 ${WORKDIR}/swupdate.service ${D}${systemd_unitdir}/system
     echo "CLOUDURL="http://35.155.171.121:9092/xconf/swu/stb?eStbMac="" >> ${D}${sysconfdir}/include.properties
@@ -57,7 +55,7 @@
     echo "DCM_HTTP_SERVER_URL="http://35.155.171.121/xconf/telemetry_upload.php"" >> ${D}${sysconfdir}/dcm.properties
     echo "DCM_LA_SERVER_URL="http://35.155.171.121/xconf/logupload.php"" >> ${D}${sysconfdir}/dcm.properties
     echo "TFTP_SERVER_IP=35.155.171.121" >> ${D}${sysconfdir}/device.properties
-    echo "MODEL_NAME=Turris" >> ${D}${sysconfdir}/device.properties
+    echo "MODEL_NAME=Filogic" >> ${D}${sysconfdir}/device.properties
 
     #Log Rotate Support
     sed -i "/if \[ \! -f \/usr\/bin\/GetConfigFile \]\;then/,+4d" ${D}/rdklogger/logfiles.sh
diff --git a/recipes-support/dnsmasq/dnsmasq_2.78.bbappend b/recipes-support/dnsmasq/dnsmasq_2.78.bbappend
deleted file mode 100644
index 336fad1..0000000
--- a/recipes-support/dnsmasq/dnsmasq_2.78.bbappend
+++ /dev/null
@@ -1,3 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'extender', 'file://300-vendor-class-dhcp-lease-file.patch', '', d)}"
diff --git a/recipes-support/dnsmasq/files/300-vendor-class-dhcp-lease-file.patch b/recipes-support/dnsmasq/files/300-vendor-class-dhcp-lease-file.patch
deleted file mode 100644
index efa8a87..0000000
--- a/recipes-support/dnsmasq/files/300-vendor-class-dhcp-lease-file.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-Index: dnsmasq-2.78/src/dnsmasq.h
-===================================================================
---- dnsmasq-2.78.orig/src/dnsmasq.h	2020-09-09 12:04:48.512772429 +0000
-+++ dnsmasq-2.78/src/dnsmasq.h	2020-09-09 12:08:18.441392007 +0000
-@@ -670,6 +670,7 @@
-   char *hostname, *fqdn; /* name from client-hostname option or config */
-   char *old_hostname;    /* hostname before it moved to another lease */
-   char *fingerprint;     /* DHCP fingerprint                         */
-+  char *vendor_class;    /* DHCP vendor class                         */
-   int flags;
-   time_t expires;        /* lease expiry */
- #ifdef HAVE_BROKEN_RTC
-@@ -1349,6 +1350,7 @@
- 			 unsigned int len, int delim);
- #endif
- void lease_add_fingerprint(struct dhcp_lease *lease, unsigned char *req_options);
-+void lease_add_vendor_class(struct dhcp_lease *lease, unsigned char *data, unsigned int len);
- #endif
- 
- /* rfc2131.c */
-Index: dnsmasq-2.78/src/lease.c
-===================================================================
---- dnsmasq-2.78.orig/src/lease.c	2020-09-09 12:04:48.512772429 +0000
-+++ dnsmasq-2.78/src/lease.c	2020-09-09 12:14:20.482344455 +0000
-@@ -35,6 +35,7 @@
-   int items;
-   char *domain = NULL;
-   char *dhcp_fingerprint = NULL;
-+  char vendor_buf[256];
- 
-   *daemon->dhcp_buff3 = *daemon->dhcp_buff2 = '\0';
- 
-@@ -76,8 +77,8 @@
- 	  }
- #endif
- 	
--	if (fscanf(leasestream, " %64s %255s %255s %764s",
--		   daemon->namebuff, daemon->dhcp_buff, dhcp_fingerprint, daemon->packet) != 4)
-+	if (fscanf(leasestream, " %64s %255s %255s \"%255[^\"]\" %764s",
-+		   daemon->namebuff, daemon->dhcp_buff, dhcp_fingerprint, vendor_buf, daemon->packet) != 5)
-         {
-             if (NULL != dhcp_fingerprint)
-                 free(dhcp_fingerprint);
-@@ -135,6 +136,9 @@
-         if (strcmp(dhcp_fingerprint, "*") != 0)
-           lease->fingerprint = strdup(dhcp_fingerprint);
- 
-+	if (strcmp(vendor_buf, "*") != 0)
-+	  lease->vendor_class = strdup(vendor_buf);
-+
- 	ei = atol(daemon->dhcp_buff3);
- 
- #ifdef HAVE_BROKEN_RTC
-@@ -313,6 +317,8 @@
- 	  ourprintf(&err, "%s ", lease->hostname ? lease->hostname : "*");
- 
-           ourprintf(&err, "%s ", lease->fingerprint ? lease->fingerprint : "*");
-+	  // Here we use double quotes since vendor-class can contain spaces
-+	  ourprintf(&err, "\"%s\" ", lease->vendor_class ? lease->vendor_class : "*");
- 	  	  
- 	  if (lease->clid && lease->clid_len != 0)
- 	    {
-@@ -594,6 +600,12 @@
-              free(lease->fingerprint);
-               lease->fingerprint = NULL;
-             }
-+
-+          if (lease->vendor_class)
-+            {
-+             free(lease->vendor_class);
-+              lease->vendor_class = NULL;
-+            }
- 	  
-  	  *up = lease->next; /* unlink */
- 	  
-@@ -1291,4 +1303,27 @@
-   }
- }
- 
-+void lease_add_vendor_class(struct dhcp_lease *lease, unsigned char *data, unsigned int len)
-+{
-+  unsigned int i;
-+  if (lease->vendor_class != NULL)
-+  {
-+    free(lease->vendor_class);
-+  }
-+
-+  if (len > 0)
-+  {
-+    lease->vendor_class = whine_malloc(len);
-+    memcpy(lease->vendor_class, data, len);
-+    lease->vendor_class[len]    = '\0';
-+
-+    // Escape quotes (") and 0 in vendor-class by replacing them with space just to be safe
-+    for (i = 0; i < len; i++)
-+    {
-+       if (lease->vendor_class[i] == '\"' || lease->vendor_class[i] == '\0')
-+            lease->vendor_class[i] = ' ';
-+   }
-+ }
-+}
-+
- #endif
-Index: dnsmasq-2.78/src/rfc2131.c
-===================================================================
---- dnsmasq-2.78.orig/src/rfc2131.c	2020-09-09 12:04:48.512772429 +0000
-+++ dnsmasq-2.78/src/rfc2131.c	2020-09-09 12:15:34.021860806 +0000
-@@ -1253,6 +1253,13 @@
- 		}
- 	    }
- 	}
-+
-+      /* get vendor-class information           */
-+      if (lease && (opt = option_find(mess, sz, OPTION_VENDOR_ID, 1)))
-+        {
-+          lease_add_vendor_class(lease, option_ptr(opt, 0), option_len(opt));
-+        }
-+
-       /* get options information                */
-       if (lease)
-         {
diff --git a/recipes-support/fftw/fftw_3.3.4.bbappend b/recipes-support/fftw/fftw_3.3.4.bbappend
deleted file mode 100644
index afe3e9c..0000000
--- a/recipes-support/fftw/fftw_3.3.4.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-ALLOW_EMPTY_${PN} = "1"
diff --git a/recipes-support/fftw/fftw_3.3.8.bbappend b/recipes-support/fftw/fftw_3.3.8.bbappend
deleted file mode 100644
index afe3e9c..0000000
--- a/recipes-support/fftw/fftw_3.3.8.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-ALLOW_EMPTY_${PN} = "1"
diff --git a/recipes-support/memstress/files/0001-replace-pthread_yield-with-sched_yield.patch b/recipes-support/memstress/files/0001-replace-pthread_yield-with-sched_yield.patch
deleted file mode 100644
index 6b0d2e1..0000000
--- a/recipes-support/memstress/files/0001-replace-pthread_yield-with-sched_yield.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 37204b457827d00b4211ce60dfab0c34c3537bb6 Mon Sep 17 00:00:00 2001
-From: rnarayanan <Rajkumar.Narayanan@lnttechservices.com>
-Date: Thu, 11 Apr 2019 09:52:47 +0000
-Subject: [PATCH] replace pthread_yield with sched_yield
-
-Change-Id: I155f0f7faa460f399d41cc15ec6fc732bbb6409c
-Signed-off-by: rnarayanan <Rajkumar.Narayanan@lnttechservices.com>
----
- memstress/src/mem_stress.cpp | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/memstress/src/mem_stress.cpp b/memstress/src/mem_stress.cpp
-index 2057d9d..2a5fd12 100644
---- a/memstress/src/mem_stress.cpp
-+++ b/memstress/src/mem_stress.cpp
-@@ -20,6 +20,7 @@
- #include <stdio.h>
- #include <string.h>
- #include <pthread.h>
-+#include <sched.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <time.h>
-@@ -158,7 +159,7 @@ void* worker_thread(void *arg)
-         if (config.sleep_bw_ops)
-             usleep(config.sleep_bw_ops);
-         else
--            pthread_yield();
-+            sched_yield();
-     }
- 
- 
--- 
-2.19.0
-
diff --git a/recipes-support/memstress/memstress_0.1.bbappend b/recipes-support/memstress/memstress_0.1.bbappend
deleted file mode 100644
index 110cc28..0000000
--- a/recipes-support/memstress/memstress_0.1.bbappend
+++ /dev/null
@@ -1,3 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI += "file://0001-replace-pthread_yield-with-sched_yield.patch"
diff --git a/recipes-support/network-hotplug/files/turris-network-hotplug.patch b/recipes-support/network-hotplug/files/filogic-network-hotplug.patch
similarity index 100%
rename from recipes-support/network-hotplug/files/turris-network-hotplug.patch
rename to recipes-support/network-hotplug/files/filogic-network-hotplug.patch
diff --git a/recipes-support/network-hotplug/network-hotplug_%.bbappend b/recipes-support/network-hotplug/network-hotplug_%.bbappend
index 46955fb..67c6b9c 100644
--- a/recipes-support/network-hotplug/network-hotplug_%.bbappend
+++ b/recipes-support/network-hotplug/network-hotplug_%.bbappend
@@ -1,4 +1,4 @@
 FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
 
-SRC_URI += "file://turris-network-hotplug.patch;patchdir=${WORKDIR}/ \
+SRC_URI += "file://filogic-network-hotplug.patch;patchdir=${WORKDIR}/ \
            "
diff --git a/recipes-support/parodus/files/parodus_start.sh b/recipes-support/parodus/files/parodus_start.sh
index 1d7a2c1..78397cf 100644
--- a/recipes-support/parodus/files/parodus_start.sh
+++ b/recipes-support/parodus/files/parodus_start.sh
@@ -22,55 +22,40 @@
 GET="dmcli eRT getv"
 SET=""
 
-echo "Check parodusCmd.cmd in /tmp"
+echo "Fetching PAM Health status "
 
-if [ -e /tmp/parodusCmd.cmd ]; then
- parodusCmd=`cat /tmp/parodusCmd.cmd`
- $parodusCmd &
-else
- echo "parodusCmd.cmd does not exist in tmp"
- echo "Fetching PAM Health status "
+while [ 1 ]
+do
+   pamState=`$GET com.cisco.spvtg.ccsp.pam.Health | grep value| tr -s ' ' |cut -f5 -d" "`
+   if [ "$pamState" = "Green" ]; then
+        break
+   else
+      echo "Waiting for PAM to come up"
+   fi
+   sleep 10
+done
 
-  while [ 1 ]
-  do
-     pamState=`$GET com.cisco.spvtg.ccsp.pam.Health | grep value| tr -s ' ' |cut -f5 -d" "`
-     if [ "$pamState" = "Green" ]; then
-          break
-     else
-        echo "Waiting for PAM to come up"
-     fi
-     sleep 10
-  done
+echo "Fetching values to form parodus command line arguments"
+ModelName=`$GET Device.DeviceInfo.ModelName | grep value| tr -s ' ' |cut -f5 -d" "`
+SerialNumber=`$GET Device.DeviceInfo.SerialNumber | grep value| tr -s ' ' |cut -f5 -d" "`
+Manufacturer=`$GET Device.DeviceInfo.Manufacturer | grep value| tr -s ' ' |cut -f5 -d" "`
+HW_MAC=`ifconfig erouter0 | grep HWaddr | tr -s ' ' | cut -d ' ' -f5`
+LastRebootReason=`$GET Device.DeviceInfo.X_RDKCENTRAL-COM_LastRebootReason | grep value| tr -s ' ' |cut -f5 -d" "`
+FirmwareName=`$GET Device.DeviceInfo.X_CISCO_COM_FirmwareName | grep value| tr -s ' ' |cut -f5 -d" "`
+BootTime=`$GET Device.DeviceInfo.X_RDKCENTRAL-COM_BootTime | grep value| tr -s ' ' |cut -f5 -d" "`
+MaxPingWaitTimeInSec=180;
+DeviceNetworkInterface="erouter0";
+#ServerURL=http://54.166.121.187:8080;
+ServerURL=http://54.148.37.189:8080;
+BackOffMax=9;
+PARODUS_URL=tcp://127.0.0.1:6666;
+SSL_CERT_PATH=/etc/ssl/certs/ca-certificates.crt
 
-  echo "Fetching CMAgent Health status "
+echo "Framing command for parodus"
+#command="/usr/bin/parodus --hw-model=$ModelName --hw-serial-number=$SerialNumber --hw-manufacturer=$Manufacturer --hw-mac=$HW_MAC --hw-last-reboot-reason=$LastRebootReason --fw-name=$FirmwareName --boot-time=$BootTime --webpa-ping-time=$MaxPingWaitTimeInSec --webpa-inteface-used=$DeviceNetworkInterface --webpa-url=$ServerURL --webpa-backoff-max=$BackOffMax"
+command="/usr/bin/parodus --hw-model=$ModelName --hw-serial-number=$SerialNumber --hw-manufacturer=$Manufacturer --hw-mac=$HW_MAC --hw-last-reboot-reason=$LastRebootReason --fw-name=$FirmwareName --boot-time=$BootTime --webpa-ping-time=$MaxPingWaitTimeInSec --webpa-interface-used=$DeviceNetworkInterface --webpa-url=$ServerURL --webpa-backoff-max=$BackOffMax  --parodus-local-url=$PARODUS_URL --partner-id=comcast --ssl-cert-path=$SSL_CERT_PATH --force-ipv4 "
 
-
-  echo "Fetching values to form parodus command line arguments"
-
-  ModelName=`$GET Device.DeviceInfo.ModelName | grep value| tr -s ' ' |cut -f5 -d" "`
-  SerialNumber=`$GET Device.DeviceInfo.SerialNumber | grep value| tr -s ' ' |cut -f5 -d" "`
-  Manufacturer=`$GET Device.DeviceInfo.Manufacturer | grep value| tr -s ' ' |cut -f5 -d" "`
-  HW_MAC=`$GET Device.X_CISCO_COM_CableModem.MACAddress | grep value| tr -s ' ' |cut -f5 -d" "`
-  HW_MAC=`ifconfig erouter0 | grep HWaddr | tr -s ' ' | cut -d ' ' -f5`
-  LastRebootReason=`$GET Device.DeviceInfo.X_RDKCENTRAL-COM_LastRebootReason | grep value| tr -s ' ' |cut -f5 -d" "`
-  FirmwareName=`$GET Device.DeviceInfo.X_CISCO_COM_FirmwareName | grep value| tr -s ' ' |cut -f5 -d" "`
-  BootTime=`$GET Device.DeviceInfo.X_RDKCENTRAL-COM_BootTime | grep value| tr -s ' ' |cut -f5 -d" "`
-  MaxPingWaitTimeInSec=180;
-  DeviceNetworkInterface="erouter0";
-  ServerURL=http://54.166.121.187:8080;
-  BackOffMax=9;
-  PARODUS_URL=tcp://127.0.0.1:6666;
-  SSL_CERT_PATH=/etc/ssl/certs/ca-certificates.crt
-
-  echo "Framing command for parodus"
-
-#  command="/usr/bin/parodus --hw-model=$ModelName --hw-serial-number=$SerialNumber --hw-manufacturer=$Manufacturer --hw-mac=$HW_MAC --hw-last-reboot-reason=$LastRebootReason --fw-name=$FirmwareName --boot-time=$BootTime --webpa-ping-time=$MaxPingWaitTimeInSec --webpa-inteface-used=$DeviceNetworkInterface --webpa-url=$ServerURL --webpa-backoff-max=$BackOffMax"
-   command="/usr/bin/parodus --hw-model=$ModelName --hw-serial-number=$SerialNumber --hw-manufacturer=$Manufacturer --hw-last-reboot-reason=$LastRebootReason --fw-name=$FirmwareName --boot-time=$BootTime --hw-mac=$HW_MAC --webpa-ping-time=180 --webpa-interface-used=erouter0 --webpa-url=$ServerURL --webpa-backoff-max=$BackOffMax  --parodus-local-url=$PARODUS_URL --partner-id=comcast --ssl-cert-path=$SSL_CERT_PATH --force-ipv4 " 
-
-  echo $command >/tmp/parodusCmd.cmd
-
-  echo "Starting parodus with the following arguments"
-  echo "ModelName=$ModelName  SerialNumber=$SerialNumber  Manufacturer=$Manufacturer  HW_MAC=$HW_MAC  LastRebootReason=$LastRebootReason  FirmwareName=$FirmwareName  BootTime=$BootTime  MaxPingWaitTimeInSec=$MaxPingWaitTimeInSec   DeviceNetworkInterface=$DeviceNetworkInterface  ServerURL=$ServerURL BackOffMax=$BackOffMax"
+echo "Starting parodus with the following arguments"
+echo "$command"
 
-  $command &
-fi
+$command &
diff --git a/scripts/lib/wic/canned-wks/rdk-generic-broadband-image.turris.wks b/scripts/lib/wic/canned-wks/rdk-generic-broadband-image.turris.wks
deleted file mode 100644
index 96ba6be..0000000
--- a/scripts/lib/wic/canned-wks/rdk-generic-broadband-image.turris.wks
+++ /dev/null
@@ -1,9 +0,0 @@
-# short-description: Create mmc image for Turris Omnia
-# long-description: Creates a partitioned mmc image for use with
-# Turris Omnia. Boot files are located in the first vfat partition.
-
-part --source bootimg-partition --ondisk mmcblk0 --fstype=vfat --label boot --active --align 1024 --system-id 0x0c
-part / --source rootfs --ondisk mmcblk0 --fstype=ext4 --label primary --align 1024
-part /secondary --source rootfs --ondisk mmcblk0 --fstype=ext4 --label secondary --align 1024 --fsoptions "noauto"
-part /nvram --ondisk mmcblk0 --fstype=ext4 --label nvram1 --align 1024 --fixed-size 100M
-part /nvram2 --ondisk mmcblk0 --fstype=ext4 --label nvram2 --align 1024 --fixed-size 100M --fsoptions "noauto"
diff --git a/scripts/lib/wic/canned-wks/rdk-generic-extender-image.turris-extender.wks b/scripts/lib/wic/canned-wks/rdk-generic-extender-image.turris-extender.wks
deleted file mode 100644
index 207315f..0000000
--- a/scripts/lib/wic/canned-wks/rdk-generic-extender-image.turris-extender.wks
+++ /dev/null
@@ -1,6 +0,0 @@
-# short-description: Create mmc image for Turris Omnia
-# long-description: Creates a partitioned mmc image for use with
-# Turris Omnia. Boot files are located in the first vfat partition.
-
-part --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 1024 --system-id 0x0c
-part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 1024
diff --git a/setup-environment b/setup-environment
index 024db86..55fdbb0 100755
--- a/setup-environment
+++ b/setup-environment
@@ -22,7 +22,7 @@
 TOP_DIR=$(pwd)
 export RDK_BSP_LAYER=none
 
-# default BSP layer is meta-marvell for turris-omnia board
+# default BSP layer is meta-filogic for filogic series board
 export RDK_BSP_LAYER=meta-cmf-filogic
 
 source meta-cmf/setup-environment $1
