diff --git a/src/BUILD.gn b/src/BUILD.gn
index 01aae8a..cf15f40 100644
--- a/src/BUILD.gn
+++ b/src/BUILD.gn
@@ -92,9 +92,9 @@
       ]
     }
 
+    # Skip on efr32 due to flash and/or ram limitations.
     if (chip_device_platform != "efr32") {
       tests += [
-        # TODO(#10447): App test has HF on EFR32.
         "${chip_root}/src/app/tests",
         "${chip_root}/src/credentials/tests",
         "${chip_root}/src/lib/format/tests",
@@ -128,7 +128,7 @@
     # https://github.com/project-chip/connectedhomeip/issues/9630
     if (chip_device_platform != "nrfconnect" &&
         chip_device_platform != "efr32") {
-      # TODO(#10447): Controller test has HF on EFR32.
+      # Doesn't compile on ef32. Multiple definitions issues with attribute storage and overflows flash memory.
       tests += [ "${chip_root}/src/controller/tests/data_model" ]
 
       # Skip controller test for Open IoT SDK
diff --git a/src/app/icd/server/tests/TestICDManager.cpp b/src/app/icd/server/tests/TestICDManager.cpp
index 6cba8c3..45e7816 100644
--- a/src/app/icd/server/tests/TestICDManager.cpp
+++ b/src/app/icd/server/tests/TestICDManager.cpp
@@ -1061,10 +1061,15 @@
 
     // Expire IdleMode timer
     AdvanceClockAndRunEventLoop(1_s);
-    EXPECT_FALSE(mICDStateObserver.mOnTransitionToIdleCalled);
+    // In this scenario, The ICD state machine kicked a OnTransitionToIdle timer with a duration of 0 seconds.
+    // The freeRTOS systemlayer timer calls a 0s timer's callback instantly while on posix it take and 1 addition event loop.
+    // Thefore, the expect result diverges here based on the systemlayer implementation. Skip this check.
+    // https://github.com/project-chip/connectedhomeip/issues/33441
+    // EXPECT_FALSE(mICDStateObserver.mOnTransitionToIdleCalled);
 
     // Expire OnTransitionToIdleMode
     AdvanceClockAndRunEventLoop(1_ms32);
+    // All systems should have called the OnTransitionToIdle callback by now.
     EXPECT_TRUE(mICDStateObserver.mOnTransitionToIdleCalled);
 
     // Reset Old durations
diff --git a/src/inet/tests/TestInetCommonOptions.cpp b/src/inet/tests/TestInetCommonOptions.cpp
index fdc79b1..7e4648d 100644
--- a/src/inet/tests/TestInetCommonOptions.cpp
+++ b/src/inet/tests/TestInetCommonOptions.cpp
@@ -51,7 +51,7 @@
     static OptionDef optionDefs[] = {
         { "local-addr", kArgumentRequired, 'a' },
         { "node-addr", kArgumentRequired, kToolCommonOpt_NodeAddr }, /* alias for local-addr */
-#if CHIP_SYSTEM_CONFIG_USE_LWIP
+#if CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
         { "tap-device", kArgumentRequired, kToolCommonOpt_TapDevice },
         { "ipv4-gateway", kArgumentRequired, kToolCommonOpt_IPv4GatewayAddr },
         { "ipv6-gateway", kArgumentRequired, kToolCommonOpt_IPv6GatewayAddr },
@@ -59,7 +59,7 @@
         { "debug-lwip", kNoArgument, kToolCommonOpt_DebugLwIP },
         { "event-delay", kArgumentRequired, kToolCommonOpt_EventDelay },
         { "tap-system-config", kNoArgument, kToolCommonOpt_TapInterfaceConfig },
-#endif
+#endif // CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
         {}
     };
     OptionDefs = optionDefs;
@@ -69,7 +69,7 @@
     OptionHelp = "  -a, --local-addr, --node-addr <ip-addr>\n"
                  "       Local address for the node.\n"
                  "\n"
-#if CHIP_SYSTEM_CONFIG_USE_LWIP
+#if CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
                  "  --tap-device <tap-dev-name>\n"
                  "       TAP device name for LwIP hosted OS usage. Defaults to chip-dev-<node-id>.\n"
                  "\n"
@@ -91,14 +91,14 @@
                  "  --tap-system-config\n"
                  "       Use configuration on each of the Linux TAP interfaces to configure LwIP's interfaces.\n"
                  "\n"
-#endif // CHIP_SYSTEM_CONFIG_USE_LWIP
+#endif // CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
         ;
 
     // Defaults.
     LocalIPv4Addr.clear();
     LocalIPv6Addr.clear();
 
-#if CHIP_SYSTEM_CONFIG_USE_LWIP
+#if CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
     TapDeviceName.clear();
     LwIPDebugFlags = 0;
     EventDelay     = 0;
@@ -106,7 +106,7 @@
     IPv6GatewayAddr.clear();
     DNSServerAddr      = Inet::IPAddress::Any;
     TapUseSystemConfig = false;
-#endif // CHIP_SYSTEM_CONFIG_USE_LWIP
+#endif // CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
 }
 
 bool NetworkOptions::HandleOption(const char * progName, OptionSet * optSet, int id, const char * name, const char * arg)
diff --git a/src/inet/tests/TestInetCommonOptions.h b/src/inet/tests/TestInetCommonOptions.h
index 9b3cd2e..a67536d 100644
--- a/src/inet/tests/TestInetCommonOptions.h
+++ b/src/inet/tests/TestInetCommonOptions.h
@@ -59,7 +59,7 @@
     std::vector<chip::Inet::IPAddress> LocalIPv4Addr;
     std::vector<chip::Inet::IPAddress> LocalIPv6Addr;
 
-#if CHIP_SYSTEM_CONFIG_USE_LWIP
+#if CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
     std::vector<chip::Inet::IPAddress> IPv4GatewayAddr;
     std::vector<chip::Inet::IPAddress> IPv6GatewayAddr;
     chip::Inet::IPAddress DNSServerAddr;
@@ -67,7 +67,7 @@
     uint8_t LwIPDebugFlags;
     uint32_t EventDelay;
     bool TapUseSystemConfig;
-#endif // CHIP_SYSTEM_CONFIG_USE_LWIP
+#endif // CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
 
     NetworkOptions();
 
diff --git a/src/inet/tests/TestInetCommonPosix.cpp b/src/inet/tests/TestInetCommonPosix.cpp
index 9d5e458..6fc53a1 100644
--- a/src/inet/tests/TestInetCommonPosix.cpp
+++ b/src/inet/tests/TestInetCommonPosix.cpp
@@ -337,7 +337,7 @@
 #if INET_CONFIG_ENABLE_TCP_ENDPOINT
     gTCP.Init(gSystemLayer);
 #endif
-#if INET_CONFIG_ENABLE_TCP_ENDPOINT
+#if INET_CONFIG_ENABLE_UDP_ENDPOINT
     gUDP.Init(gSystemLayer);
 #endif
 }
@@ -368,14 +368,14 @@
     gSystemLayer.HandleEvents();
 #endif
 
-#if CHIP_SYSTEM_CONFIG_USE_LWIP
+#if CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
     if (gSystemLayer.IsInitialized())
     {
         static uint32_t sRemainingSystemLayerEventDelay = 0;
 
         if (sRemainingSystemLayerEventDelay == 0)
         {
-#if CHIP_DEVICE_LAYER_TARGET_OPEN_IOT_SDK
+#if CHIP_DEVICE_LAYER_TARGET_OPEN_IOT_SDK || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
             // We need to terminate event loop after performance single step.
             // Event loop processing work items until StopEventLoopTask is called.
             // Scheduling StopEventLoop task guarantees correct operation of the loop.
@@ -390,7 +390,7 @@
 
         gSystemLayer.HandlePlatformTimer();
     }
-#endif // CHIP_SYSTEM_CONFIG_USE_LWIP
+#endif // CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
 }
 
 #if CHIP_SYSTEM_CONFIG_USE_LWIP && !(CHIP_SYSTEM_CONFIG_LWIP_SKIP_INIT)
diff --git a/src/lib/core/tests/BUILD.gn b/src/lib/core/tests/BUILD.gn
index 30d50ee..0010780 100644
--- a/src/lib/core/tests/BUILD.gn
+++ b/src/lib/core/tests/BUILD.gn
@@ -30,9 +30,14 @@
     "TestOptional.cpp",
     "TestReferenceCounted.cpp",
     "TestTLV.cpp",
-    "TestTLVVectorWriter.cpp",
   ]
 
+  # requires large amount of heap for multiple unfragmented 10k buffers
+  # skip for efr32 to allow flash space for other tests
+  if (chip_device_platform != "efr32") {
+    test_sources += [ "TestTLVVectorWriter.cpp" ]
+  }
+
   cflags = [ "-Wconversion" ]
 
   public_deps = [
diff --git a/src/lib/support/UnitTestUtils.cpp b/src/lib/support/UnitTestUtils.cpp
index 8497640..0d3acae 100644
--- a/src/lib/support/UnitTestUtils.cpp
+++ b/src/lib/support/UnitTestUtils.cpp
@@ -51,7 +51,7 @@
 
 void SleepMillis(uint64_t millisecs)
 {
-    uint32_t ticks = static_cast<uint32_t>(millisecs / portTICK_PERIOD_MS);
+    uint32_t ticks = pdMS_TO_TICKS(millisecs);
     vTaskDelay(ticks == 0 ? 1 : ticks); // delay at least 1 tick
 }
 
diff --git a/src/messaging/tests/BUILD.gn b/src/messaging/tests/BUILD.gn
index a78dcce..89f0934 100644
--- a/src/messaging/tests/BUILD.gn
+++ b/src/messaging/tests/BUILD.gn
@@ -49,27 +49,20 @@
 chip_test_suite_using_nltest("tests") {
   output_name = "libMessagingLayerTests"
 
-  test_sources = []
+  test_sources = [
+    "TestAbortExchangesForFabric.cpp",
+    "TestExchange.cpp",
+    "TestExchangeMgr.cpp",
+    "TestReliableMessageProtocol.cpp",
+  ]
 
-  if (chip_device_platform != "efr32") {
-    # TODO(#10447): ReliableMessage Test has HF, and ExchangeMgr hangs on EFR32.
-    # And TestAbortExchangesForFabric does not link on EFR32 for some reason.
-    # TODO #33372: TestExchange.cpp asserts in ExchangeContext::SendMessage
-    test_sources += [
-      "TestAbortExchangesForFabric.cpp",
-      "TestExchange.cpp",
-      "TestExchangeMgr.cpp",
-      "TestReliableMessageProtocol.cpp",
-    ]
+  if (chip_device_platform != "esp32" && chip_device_platform != "mbed" &&
+      chip_device_platform != "nrfconnect" && chip_device_platform != "nxp") {
+    test_sources += [ "TestExchangeHolder.cpp" ]
+  }
 
-    if (chip_device_platform != "esp32" && chip_device_platform != "mbed" &&
-        chip_device_platform != "nrfconnect" && chip_device_platform != "nxp") {
-      test_sources += [ "TestExchangeHolder.cpp" ]
-    }
-
-    if (chip_device_platform == "linux") {
-      test_sources += [ "TestMessagingLayer.cpp" ]
-    }
+  if (chip_device_platform == "linux") {
+    test_sources += [ "TestMessagingLayer.cpp" ]
   }
 
   cflags = [ "-Wconversion" ]
diff --git a/src/platform/silabs/CHIPDevicePlatformConfig.h b/src/platform/silabs/CHIPDevicePlatformConfig.h
index e8601e5..feabf30 100644
--- a/src/platform/silabs/CHIPDevicePlatformConfig.h
+++ b/src/platform/silabs/CHIPDevicePlatformConfig.h
@@ -96,7 +96,9 @@
 #endif /* CHIP_ENABLE_OPENTHREAD */
 #endif /* defined(SL_WIFI) */
 
+#ifndef CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
 #define CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE 1
+#endif
 
 #if defined(SL_WIFI)
 
diff --git a/src/system/tests/TestSystemTimer.cpp b/src/system/tests/TestSystemTimer.cpp
index 6c065b9..6271836 100644
--- a/src/system/tests/TestSystemTimer.cpp
+++ b/src/system/tests/TestSystemTimer.cpp
@@ -70,7 +70,7 @@
 
 #endif // CHIP_SYSTEM_CONFIG_USE_SOCKETS || CHIP_SYSTEM_CONFIG_USE_NETWORK_FRAMEWORK
 
-#if CHIP_SYSTEM_CONFIG_USE_LWIP
+#if CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
 
 template <class LayerImpl>
 class LayerEvents<LayerImpl, typename std::enable_if<std::is_base_of<LayerImplFreeRTOS, LayerImpl>::value>::type>
@@ -87,7 +87,7 @@
     }
 };
 
-#endif // CHIP_SYSTEM_CONFIG_USE_LWIP
+#endif // CHIP_SYSTEM_CONFIG_USE_LWIP || CHIP_SYSTEM_CONFIG_USE_OPEN_THREAD_ENDPOINT
 
 // Test input vector format.
 static const uint32_t MAX_NUM_TIMERS = 1000;
diff --git a/src/test_driver/efr32/args.gni b/src/test_driver/efr32/args.gni
index 76d4cdc..71bf093 100644
--- a/src/test_driver/efr32/args.gni
+++ b/src/test_driver/efr32/args.gni
@@ -23,7 +23,7 @@
 chip_enable_pw_rpc = true
 chip_build_tests = true
 chip_enable_openthread = true
-chip_openthread_ftd = true
+chip_openthread_ftd = false  # use mtd as it is smaller.
 chip_monolithic_tests = true
 
 openthread_external_platform =
diff --git a/src/test_driver/efr32/include/CHIPProjectConfig.h b/src/test_driver/efr32/include/CHIPProjectConfig.h
index 2122abe..d54c343 100644
--- a/src/test_driver/efr32/include/CHIPProjectConfig.h
+++ b/src/test_driver/efr32/include/CHIPProjectConfig.h
@@ -70,7 +70,7 @@
  *
  * Enable support for Chip-over-BLE (CHIPoBLE).
  */
-#define CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE 1
+#define CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE 0
 
 /**
  * CHIP_DEVICE_CONFIG_USE_TEST_SERIAL_NUMBER
diff --git a/src/test_driver/efr32/include/FreeRTOSConfig.h b/src/test_driver/efr32/include/FreeRTOSConfig.h
index cffb27f..7a02673 100644
--- a/src/test_driver/efr32/include/FreeRTOSConfig.h
+++ b/src/test_driver/efr32/include/FreeRTOSConfig.h
@@ -146,7 +146,7 @@
 /* Some of the standard demo test tasks assume a tick rate of 1KHz, even
 though that is faster than would normally be warranted by a real
 application. */
-#define configTICK_RATE_HZ (1000)
+#define configTICK_RATE_HZ (1024)
 
 /* Energy saving modes. */
 #if defined(SL_CATALOG_POWER_MANAGER_PRESENT)
diff --git a/src/test_driver/efr32/src/main.cpp b/src/test_driver/efr32/src/main.cpp
index 57d0bab..2634d94 100644
--- a/src/test_driver/efr32/src/main.cpp
+++ b/src/test_driver/efr32/src/main.cpp
@@ -22,9 +22,12 @@
 #include <FreeRTOS.h>
 #include <PigweedLogger.h>
 #include <PigweedLoggerMutex.h>
+#include <credentials/DeviceAttestationCredsProvider.h>
 #include <cstring>
+#include <examples/platform/silabs/SilabsDeviceAttestationCreds.h>
 #include <lib/support/CHIPMem.h>
 #include <lib/support/CHIPPlatformMemory.h>
+#include <lib/support/UnitTest.h>
 #include <lib/support/UnitTestRegistration.h>
 #include <mbedtls/platform.h>
 #include <nl_test_service/nl_test.rpc.pb.h>
@@ -37,6 +40,8 @@
 #include <sl_system_kernel.h>
 #include <task.h>
 
+#include "SilabsDeviceDataProvider.h"
+
 extern "C" int printf(const char * format, ...)
 {
     va_list args;
@@ -56,8 +61,11 @@
         stream_writer = &writer;
         nlTestSetLogger(&nl_test_logger);
 
-        RunRegisteredUnitTests();
-
+        printf("--- Running nltest ---");
+        int status = RunRegisteredUnitTests();
+        printf("--- Running gtest ---");
+        status += chip::test::RunAllTests();
+        printf("Test status: %d", status);
         stream_writer = nullptr;
         writer.Finish();
     }
@@ -194,6 +202,9 @@
     chip::Platform::MemoryInit();
 
     chip::DeviceLayer::PlatformMgr().InitChipStack();
+    // required for inits tied to the event loop
+    chip::DeviceLayer::SetDeviceInstanceInfoProvider(&chip::DeviceLayer::Silabs::SilabsDeviceDataProvider::GetDeviceDataProvider());
+    chip::DeviceLayer::SetCommissionableDataProvider(&chip::DeviceLayer::Silabs::SilabsDeviceDataProvider::GetDeviceDataProvider());
 
     SILABS_LOG("***** CHIP EFR32 device tests *****\r\n");
 
