diff --git a/examples/all-clusters-app/asr/include/AppTask.h b/examples/all-clusters-app/asr/include/AppTask.h
index 210fd5a6fc7032..42cd6ae1541045 100755
--- a/examples/all-clusters-app/asr/include/AppTask.h
+++ b/examples/all-clusters-app/asr/include/AppTask.h
@@ -19,7 +19,7 @@
 #pragma once
 
 #include "AppEvent.h"
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <lega_rtos_api.h>
 #include <platform/CHIPDeviceLayer.h>
 #include <stdbool.h>
diff --git a/examples/all-clusters-app/infineon/psoc6/include/AppTask.h b/examples/all-clusters-app/infineon/psoc6/include/AppTask.h
index 9fade8c82356bf..aa031fe3ba4b52 100644
--- a/examples/all-clusters-app/infineon/psoc6/include/AppTask.h
+++ b/examples/all-clusters-app/infineon/psoc6/include/AppTask.h
@@ -26,7 +26,7 @@
 #include "AppEvent.h"
 #include "FreeRTOS.h"
 #include "timers.h" // provides FreeRTOS timer support
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <platform/CHIPDeviceLayer.h>
 
 // Application-defined error codes in the CHIP_ERROR space.
diff --git a/examples/all-clusters-minimal-app/asr/include/AppTask.h b/examples/all-clusters-minimal-app/asr/include/AppTask.h
index 97d1bfe538fb64..7e168e14d5a854 100755
--- a/examples/all-clusters-minimal-app/asr/include/AppTask.h
+++ b/examples/all-clusters-minimal-app/asr/include/AppTask.h
@@ -24,7 +24,7 @@
 #include "AppEvent.h"
 #include "FreeRTOS.h"
 #include "timers.h" // provides FreeRTOS timer support
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <platform/CHIPDeviceLayer.h>
 
 // Application-defined error codes in the CHIP_ERROR space.
diff --git a/examples/all-clusters-minimal-app/infineon/psoc6/include/AppTask.h b/examples/all-clusters-minimal-app/infineon/psoc6/include/AppTask.h
index 6dbd906b8104d6..b5102a153e25e1 100644
--- a/examples/all-clusters-minimal-app/infineon/psoc6/include/AppTask.h
+++ b/examples/all-clusters-minimal-app/infineon/psoc6/include/AppTask.h
@@ -26,7 +26,7 @@
 #include "AppEvent.h"
 #include "FreeRTOS.h"
 #include "timers.h" // provides FreeRTOS timer support
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <platform/CHIPDeviceLayer.h>
 
 // Application-defined error codes in the CHIP_ERROR space.
diff --git a/examples/chef/silabs/include/AppTask.h b/examples/chef/silabs/include/AppTask.h
index 578d0a17834d29..b6c6d8a271df22 100644
--- a/examples/chef/silabs/include/AppTask.h
+++ b/examples/chef/silabs/include/AppTask.h
@@ -28,7 +28,7 @@
 
 #include "AppEvent.h"
 #include "BaseApplication.h"
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <cmsis_os2.h>
 #include <lib/core/CHIPError.h>
 #include <platform/CHIPDeviceLayer.h>
diff --git a/examples/light-switch-app/asr/include/AppTask.h b/examples/light-switch-app/asr/include/AppTask.h
index c103fd6f60944e..60525c1975ff43 100755
--- a/examples/light-switch-app/asr/include/AppTask.h
+++ b/examples/light-switch-app/asr/include/AppTask.h
@@ -25,7 +25,7 @@
 
 #include "FreeRTOS.h"
 #include "timers.h" // provides FreeRTOS timer support
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <platform/CHIPDeviceLayer.h>
 
 // Application-defined error codes in the CHIP_ERROR space.
diff --git a/examples/light-switch-app/silabs/include/AppTask.h b/examples/light-switch-app/silabs/include/AppTask.h
index a6a74b4605f52c..71ca4b427bad44 100644
--- a/examples/light-switch-app/silabs/include/AppTask.h
+++ b/examples/light-switch-app/silabs/include/AppTask.h
@@ -28,7 +28,7 @@
 
 #include "AppEvent.h"
 #include "BaseApplication.h"
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <cmsis_os2.h>
 #include <lib/core/CHIPError.h>
 #include <platform/CHIPDeviceLayer.h>
diff --git a/examples/lighting-app/infineon/psoc6/include/AppTask.h b/examples/lighting-app/infineon/psoc6/include/AppTask.h
index 580744cb2fe2d2..4f6f77663d18a4 100644
--- a/examples/lighting-app/infineon/psoc6/include/AppTask.h
+++ b/examples/lighting-app/infineon/psoc6/include/AppTask.h
@@ -27,7 +27,7 @@
 
 #include "FreeRTOS.h"
 #include "timers.h" // provides FreeRTOS timer support
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <platform/CHIPDeviceLayer.h>
 
 // Application-defined error codes in the CHIP_ERROR space.
diff --git a/examples/lighting-app/silabs/include/AppTask.h b/examples/lighting-app/silabs/include/AppTask.h
index 450d9c61b719b4..c42415d8868586 100644
--- a/examples/lighting-app/silabs/include/AppTask.h
+++ b/examples/lighting-app/silabs/include/AppTask.h
@@ -29,7 +29,7 @@
 #include "AppEvent.h"
 #include "BaseApplication.h"
 #include "LightingManager.h"
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <cmsis_os2.h>
 #include <lib/core/CHIPError.h>
 #include <platform/CHIPDeviceLayer.h>
diff --git a/examples/lit-icd-app/silabs/include/AppTask.h b/examples/lit-icd-app/silabs/include/AppTask.h
index 1fc5f2fae5f18c..7866fc48079962 100644
--- a/examples/lit-icd-app/silabs/include/AppTask.h
+++ b/examples/lit-icd-app/silabs/include/AppTask.h
@@ -28,7 +28,7 @@
 
 #include "AppEvent.h"
 #include "BaseApplication.h"
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <cmsis_os2.h>
 #include <lib/core/CHIPError.h>
 #include <platform/CHIPDeviceLayer.h>
diff --git a/examples/lock-app/asr/include/AppTask.h b/examples/lock-app/asr/include/AppTask.h
index 854d70efdb9744..5c96ea0bec07ae 100755
--- a/examples/lock-app/asr/include/AppTask.h
+++ b/examples/lock-app/asr/include/AppTask.h
@@ -27,7 +27,7 @@
 
 #include "FreeRTOS.h"
 #include "timers.h" // provides FreeRTOS timer support
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <platform/CHIPDeviceLayer.h>
 
 // Application-defined error codes in the CHIP_ERROR space.
diff --git a/examples/lock-app/esp32/main/include/AppTask.h b/examples/lock-app/esp32/main/include/AppTask.h
index 3c32cb8704aa0e..32d5dfd199e335 100644
--- a/examples/lock-app/esp32/main/include/AppTask.h
+++ b/examples/lock-app/esp32/main/include/AppTask.h
@@ -24,7 +24,7 @@
 #include <lock/BoltLockManager.h>
 
 #include "freertos/FreeRTOS.h"
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <lib/support/CodeUtils.h>
 #include <platform/CHIPDeviceLayer.h>
 
diff --git a/examples/lock-app/infineon/psoc6/include/AppTask.h b/examples/lock-app/infineon/psoc6/include/AppTask.h
index 8d6ca18b1f8e8a..b120a9c9aec325 100644
--- a/examples/lock-app/infineon/psoc6/include/AppTask.h
+++ b/examples/lock-app/infineon/psoc6/include/AppTask.h
@@ -27,7 +27,7 @@
 
 #include "FreeRTOS.h"
 #include "timers.h" // provides FreeRTOS timer support
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <platform/CHIPDeviceLayer.h>
 
 // Application-defined error codes in the CHIP_ERROR space.
diff --git a/examples/lock-app/qpg/include/AppTask.h b/examples/lock-app/qpg/include/AppTask.h
index 3734eeadeef816..b4ede0e6abde0d 100644
--- a/examples/lock-app/qpg/include/AppTask.h
+++ b/examples/lock-app/qpg/include/AppTask.h
@@ -27,7 +27,7 @@
 
 #include "FreeRTOS.h"
 #include "timers.h" // provides FreeRTOS timer support
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <lib/core/CHIPError.h>
 #include <platform/CHIPDeviceLayer.h>
 
diff --git a/examples/lock-app/silabs/include/AppTask.h b/examples/lock-app/silabs/include/AppTask.h
index e1560ac19439b5..b0040ac5bf6586 100644
--- a/examples/lock-app/silabs/include/AppTask.h
+++ b/examples/lock-app/silabs/include/AppTask.h
@@ -29,7 +29,7 @@
 #include "AppEvent.h"
 #include "BaseApplication.h"
 #include "LockManager.h"
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <cmsis_os2.h>
 #include <lib/core/CHIPError.h>
 #include <platform/CHIPDeviceLayer.h>
diff --git a/examples/platform/silabs/BaseApplication.h b/examples/platform/silabs/BaseApplication.h
index e9ca6bfc950834..8a231aa6c51513 100644
--- a/examples/platform/silabs/BaseApplication.h
+++ b/examples/platform/silabs/BaseApplication.h
@@ -30,7 +30,7 @@
 #include <app/clusters/identify-server/identify-server.h>
 #include <app/server/AppDelegate.h>
 #include <app/util/config.h>
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <cmsis_os2.h>
 #include <lib/core/CHIPError.h>
 #include <platform/CHIPDeviceEvent.h>
diff --git a/examples/pump-app/silabs/include/AppTask.h b/examples/pump-app/silabs/include/AppTask.h
index 69bf7021bf47dd..921ae9a2694475 100644
--- a/examples/pump-app/silabs/include/AppTask.h
+++ b/examples/pump-app/silabs/include/AppTask.h
@@ -29,7 +29,7 @@
 #include "AppEvent.h"
 #include "BaseApplication.h"
 #include "PumpManager.h"
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <cmsis_os2.h>
 #include <lib/core/CHIPError.h>
 #include <platform/CHIPDeviceLayer.h>
diff --git a/examples/smoke-co-alarm-app/silabs/include/AppTask.h b/examples/smoke-co-alarm-app/silabs/include/AppTask.h
index 9e68505d341a36..0cfd86fa01021a 100644
--- a/examples/smoke-co-alarm-app/silabs/include/AppTask.h
+++ b/examples/smoke-co-alarm-app/silabs/include/AppTask.h
@@ -27,7 +27,7 @@
 #include "AppEvent.h"
 #include "BaseApplication.h"
 #include "SmokeCoAlarmManager.h"
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <cmsis_os2.h>
 #include <lib/core/CHIPError.h>
 #include <platform/CHIPDeviceLayer.h>
diff --git a/examples/temperature-measurement-app/asr/include/AppTask.h b/examples/temperature-measurement-app/asr/include/AppTask.h
index 97d1bfe538fb64..7e168e14d5a854 100755
--- a/examples/temperature-measurement-app/asr/include/AppTask.h
+++ b/examples/temperature-measurement-app/asr/include/AppTask.h
@@ -24,7 +24,7 @@
 #include "AppEvent.h"
 #include "FreeRTOS.h"
 #include "timers.h" // provides FreeRTOS timer support
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <platform/CHIPDeviceLayer.h>
 
 // Application-defined error codes in the CHIP_ERROR space.
diff --git a/examples/thermostat/asr/include/AppTask.h b/examples/thermostat/asr/include/AppTask.h
index 90a8ac65adff46..1bfe23bc1d3692 100644
--- a/examples/thermostat/asr/include/AppTask.h
+++ b/examples/thermostat/asr/include/AppTask.h
@@ -26,7 +26,7 @@
 #include "SensorManager.h"
 #include "TemperatureManager.h"
 #include "timers.h" // provides FreeRTOS timer support
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <platform/CHIPDeviceLayer.h>
 
 #include <FreeRTOS.h>
diff --git a/examples/thermostat/silabs/include/AppTask.h b/examples/thermostat/silabs/include/AppTask.h
index 25177b9ab43808..e41122994237ad 100644
--- a/examples/thermostat/silabs/include/AppTask.h
+++ b/examples/thermostat/silabs/include/AppTask.h
@@ -34,7 +34,7 @@
 #include "BaseApplication.h"
 #include "SensorManager.h"
 #include "TemperatureManager.h"
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <cmsis_os2.h>
 #include <lib/core/CHIPError.h>
 #include <platform/CHIPDeviceLayer.h>
diff --git a/examples/window-app/silabs/include/AppTask.h b/examples/window-app/silabs/include/AppTask.h
index 268e5eea415a06..ea9f6e5e19868a 100644
--- a/examples/window-app/silabs/include/AppTask.h
+++ b/examples/window-app/silabs/include/AppTask.h
@@ -27,7 +27,7 @@
 #include <stdint.h>
 
 #include "BaseApplication.h"
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #include <cmsis_os2.h>
 #include <lib/core/CHIPError.h>
 #include <platform/CHIPDeviceLayer.h>
diff --git a/scripts/helpers/iwyu-check.py b/scripts/helpers/iwyu-check.py
index 822b85c184766d..d60a35612679b3 100755
--- a/scripts/helpers/iwyu-check.py
+++ b/scripts/helpers/iwyu-check.py
@@ -51,42 +51,38 @@ def find_program(names):
 @click.command()
 @click.option(
     '--log-level',
-    default='INFO',
+    show_default=True,
+    default='info',
     type=click.Choice(__LOG_LEVELS__.keys(), case_sensitive=False),
-    help='Determines the verbosity of script output.')
+    help='Set the verbosity of script output.')
 @click.option(
     '--no-log-timestamps',
     default=False,
     is_flag=True,
-    help='Skip timestamps in log output')
+    help='Skip timestamps in log output.')
 @click.option(
     '--compile-commands-glob',
     show_default=True,
-    default=os.path.join(proj_root_dir, "out", "debug", "compile_commands*.json"),
-    help='Set global pattern for compile_commands.json files'
-)
-@click.option(
-    '--scanning-destination',
-    show_default=True,
-    default=os.path.join(proj_root_dir, "src", "platform"),
-    help='Set scanning destination file(s) or directory /ies in project'
-)
+    default=os.path.join(proj_root_dir, "out", "debug",
+                         "compile_commands*.json"),
+    help='Set global pattern for compile_commands.json files.')
 @click.option(
     '--mapping-file-dir',
-    help='Set mapping file directory /ies manually. File should have name iwyu.imp'
-)
+    help='Set directory with iwyu.imp mapping file.')
 @click.option(
     '--iwyu-args',
     show_default=True,
     default="-Xiwyu --no_fwd_decls",
-    help='Set custom arg(s) for include what you use'
-)
+    help='Set custom arg(s) for include what you use.')
 @click.option(
     '--clang-args',
     default="",
-    help='Set custom arg(s) for clang'
-)
-def main(compile_commands_glob, scanning_destination, mapping_file_dir,
+    help='Set custom arg(s) for clang.')
+@click.argument(
+    'source',
+    nargs=-1,
+    type=click.Path(exists=True))
+def main(compile_commands_glob, source, mapping_file_dir,
          iwyu_args, clang_args, log_level, no_log_timestamps):
     # Ensures somewhat pretty logging of what is going on
     log_fmt = '%(asctime)s %(levelname)-7s %(message)s'
@@ -114,8 +110,10 @@ def main(compile_commands_glob, scanning_destination, mapping_file_dir,
     for compile_commands in compile_commands_glob:
 
         compile_commands_path = os.path.dirname(compile_commands)
-        compile_commands_file = os.path.join(compile_commands_path, "compile_commands.json")
-        logging.debug("Copy compile command file %s to %s", compile_commands, compile_commands_file)
+        compile_commands_file = os.path.join(
+            compile_commands_path, "compile_commands.json")
+        logging.debug("Copy compile command file %s to %s",
+                      compile_commands, compile_commands_file)
 
         with contextlib.suppress(shutil.SameFileError):
             shutil.copyfile(compile_commands, compile_commands_file)
@@ -153,14 +151,14 @@ def main(compile_commands_glob, scanning_destination, mapping_file_dir,
 
         command_arr = [
             iwyu,
-            "-p", compile_commands_path, scanning_destination,
+            "-p", compile_commands_path, *source,
             "--", iwyu_args,
             "-Xiwyu", "--mapping_file=" + mapping_file_dir + "/iwyu.imp",
         ] + platform_clang_args + [clang_args]
 
         logging.info("Used compile commands: %s", compile_commands)
         logging.info("Scanning includes for platform: %s", platform)
-        logging.info("Scanning destination: %s", scanning_destination)
+        logging.info("Scanning sources(s): %s", ", ".join(source))
 
         logging.debug("Command: %s", " ".join(command_arr))
         status = subprocess.Popen(" ".join(command_arr),
@@ -175,13 +173,13 @@ def main(compile_commands_glob, scanning_destination, mapping_file_dir,
         for line in status.stdout:
             line = line.rstrip()
 
-            if re.match(r"^warning:.*$", line):
+            if re.search(r"^warning:", line):
                 logger = logging.warning
-            elif re.match(r"^.*([A-Za-z0-9]+(/[A-Za-z0-9]+)+)\.cpp should [a-zA-Z]+ these lines:$", line):
+            elif re.search(r"should (add|remove)? these lines:$", line):
                 logger = logging.warning
-            elif re.match(r"^.*([A-Za-z0-9]+(/[A-Za-z0-9]+)+)\.[a-zA-Z]+ has correct #includes/fwd-decls\)$", line):
+            elif re.search(r"has correct #includes/fwd-decls\)$", line):
                 logger = logging.info
-            elif re.match(r"^The full include-list for .*$", line):
+            elif re.search(r"^The full include-list for", line):
                 logger = logging.warning
                 warning_in_files += 1
 
@@ -190,7 +188,8 @@ def main(compile_commands_glob, scanning_destination, mapping_file_dir,
         logging.info("============== IWYU output end  ================")
 
     if warning_in_files:
-        logging.error("Number of files with include issues: %d", warning_in_files)
+        logging.error("Number of files with include issues: %d",
+                      warning_in_files)
         sys.exit(2)
     else:
         logging.info("Every include looks good!")
diff --git a/src/app/server/Server.cpp b/src/app/server/Server.cpp
index 57abf8087f59ca..cd9c56f9f021f7 100644
--- a/src/app/server/Server.cpp
+++ b/src/app/server/Server.cpp
@@ -27,7 +27,7 @@
 #include <app/util/ember-compatibility-functions.h>
 
 #if CONFIG_NETWORK_LAYER_BLE
-#include <ble/BLEEndPoint.h>
+#include <ble/Ble.h>
 #endif
 #include <inet/IPAddress.h>
 #include <inet/InetError.h>
diff --git a/src/ble/BLEEndPoint.cpp b/src/ble/BLEEndPoint.cpp
index 840a668be0a62a..ba6400fc8a19b7 100644
--- a/src/ble/BLEEndPoint.cpp
+++ b/src/ble/BLEEndPoint.cpp
@@ -25,22 +25,29 @@
  *
  */
 
-#include <stdint.h>
-#include <string.h>
+#define _CHIP_BLE_BLE_H
+#include "BLEEndPoint.h"
 
-#include <ble/BleConfig.h>
-
-#if CONFIG_NETWORK_LAYER_BLE
-#include <lib/core/CHIPConfig.h>
+#include <cstdint>
+#include <cstring>
+#include <utility>
 
 #include <lib/support/BitFlags.h>
-#include <lib/support/CHIPFaultInjection.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
-
-#include <ble/BLEEndPoint.h>
-#include <ble/BleLayer.h>
-#include <ble/BtpEngine.h>
+#include <system/SystemClock.h>
+#include <system/SystemLayer.h>
+#include <system/SystemPacketBuffer.h>
+
+#include "BleApplicationDelegate.h"
+#include "BleConfig.h"
+#include "BleError.h"
+#include "BleLayer.h"
+#include "BleLayerDelegate.h"
+#include "BlePlatformDelegate.h"
+#include "BleRole.h"
+#include "BleUUID.h"
+#include "BtpEngine.h"
 
 // Define below to enable extremely verbose, BLE end point-specific debug logging.
 #undef CHIP_BLE_END_POINT_DEBUG_LOGGING_ENABLED
@@ -1498,5 +1505,3 @@ void BLEEndPoint::HandleUnsubscribeTimeout(chip::System::Layer * systemLayer, vo
 
 } /* namespace Ble */
 } /* namespace chip */
-
-#endif /* CONFIG_NETWORK_LAYER_BLE */
diff --git a/src/ble/BLEEndPoint.h b/src/ble/BLEEndPoint.h
index 1bce51e1671419..f027a9c2a9c0e6 100644
--- a/src/ble/BLEEndPoint.h
+++ b/src/ble/BLEEndPoint.h
@@ -27,10 +27,23 @@
 
 #pragma once
 
+#ifndef _CHIP_BLE_BLE_H
+#error "Please include <ble/Ble.h> instead!"
+#endif
+
+#include <cstdint>
+
+#include <lib/core/CHIPError.h>
+#include <lib/support/BitFlags.h>
+#include <lib/support/DLLUtil.h>
 #include <system/SystemLayer.h>
+#include <system/SystemPacketBuffer.h>
 
-#include <ble/BleRole.h>
-#include <ble/BtpEngine.h>
+#include "BleConnectionDelegate.h"
+#include "BleLayerDelegate.h"
+#include "BlePlatformDelegate.h"
+#include "BleRole.h"
+#include "BtpEngine.h"
 
 namespace chip {
 namespace Ble {
@@ -46,8 +59,6 @@ enum
 // Forward declarations
 class BleLayer;
 class BleEndPointPool;
-// BLEEndPoint holds a pointer to BleLayerDelegate for messages, while BleLayerDelegate functions also accepts BLEEndPoint.
-class BleLayerDelegate;
 
 class DLL_EXPORT BLEEndPoint
 {
diff --git a/src/ble/Ble.h b/src/ble/Ble.h
index 65b02d81da1768..171d88a90749f3 100644
--- a/src/ble/Ble.h
+++ b/src/ble/Ble.h
@@ -28,14 +28,22 @@
 
 #include <ble/BleConfig.h>
 
+// Other includes check for the _CHIP_BLE_BLE_H define to ensure that the BLE
+// library is included correctly by others (via Ble.h umbrella header).
+#define _CHIP_BLE_BLE_H
+
 #include <ble/BLEEndPoint.h>
 #include <ble/BleApplicationDelegate.h>
 #include <ble/BleConnectionDelegate.h>
 #include <ble/BleError.h>
 #include <ble/BleLayer.h>
+#include <ble/BleLayerDelegate.h>
 #include <ble/BlePlatformDelegate.h>
 #include <ble/BleUUID.h>
 #include <ble/BtpEngine.h>
+#include <ble/CHIPBleServiceData.h>
+
+#undef _CHIP_BLE_BLE_H
 
 /**
  *   @namespace Ble
diff --git a/src/ble/BleApplicationDelegate.h b/src/ble/BleApplicationDelegate.h
index 2584aeb6b908fd..af45b1145155aa 100644
--- a/src/ble/BleApplicationDelegate.h
+++ b/src/ble/BleApplicationDelegate.h
@@ -24,10 +24,14 @@
 
 #pragma once
 
-#include <ble/BleConfig.h>
+#ifndef _CHIP_BLE_BLE_H
+#error "Please include <ble/Ble.h> instead!"
+#endif
 
 #include <lib/support/DLLUtil.h>
 
+#include "BleConfig.h"
+
 namespace chip {
 namespace Ble {
 
diff --git a/src/ble/BleConnectionDelegate.h b/src/ble/BleConnectionDelegate.h
index d5e10d29a9a597..d54a09e3ecb416 100644
--- a/src/ble/BleConnectionDelegate.h
+++ b/src/ble/BleConnectionDelegate.h
@@ -23,12 +23,16 @@
 
 #pragma once
 
-#include <ble/BleConfig.h>
-#include <ble/BleError.h>
+#ifndef _CHIP_BLE_BLE_H
+#error "Please include <ble/Ble.h> instead!"
+#endif
 
 #include <lib/support/DLLUtil.h>
 #include <lib/support/SetupDiscriminator.h>
 
+#include "BleConfig.h"
+#include "BleError.h"
+
 namespace chip {
 namespace Ble {
 class BleLayer;
diff --git a/src/ble/BleError.cpp b/src/ble/BleError.cpp
index 10ff63753796b3..340b2e6e1eda7b 100644
--- a/src/ble/BleError.cpp
+++ b/src/ble/BleError.cpp
@@ -21,14 +21,10 @@
  *      This file contains functions for working with BLE Layer errors.
  */
 
-#include <stddef.h>
+#define _CHIP_BLE_BLE_H
+#include "BleError.h"
 
-#include <ble/BleConfig.h>
-
-#if CONFIG_NETWORK_LAYER_BLE
-
-#include <ble/BleError.h>
-#include <ble/BleLayer.h>
+#include <lib/core/ErrorStr.h>
 
 namespace chip {
 namespace Ble {
@@ -140,5 +136,3 @@ bool FormatLayerError(char * buf, uint16_t bufSize, CHIP_ERROR err)
 
 } /* namespace Ble */
 } /* namespace chip */
-
-#endif // CONFIG_NETWORK_LAYER_BLE
diff --git a/src/ble/BleError.h b/src/ble/BleError.h
index a95681a1b96685..ad4b2cdad29c2b 100644
--- a/src/ble/BleError.h
+++ b/src/ble/BleError.h
@@ -30,7 +30,11 @@
 
 #pragma once
 
-#include "BleConfig.h"
+#ifndef _CHIP_BLE_BLE_H
+#error "Please include <ble/Ble.h> instead!"
+#endif
+
+#include <cstdint>
 
 #include <lib/core/CHIPError.h>
 
diff --git a/src/ble/BleLayer.cpp b/src/ble/BleLayer.cpp
index 0472d70ac28d2c..d4a1e3209610a6 100644
--- a/src/ble/BleLayer.cpp
+++ b/src/ble/BleLayer.cpp
@@ -50,21 +50,28 @@
  *      drive BLE data and control input up the stack.
  */
 
-#include <ble/BleConfig.h>
+#define _CHIP_BLE_BLE_H
+#include "BleLayer.h"
 
-#if CONFIG_NETWORK_LAYER_BLE
-
-#include <string.h>
-
-#include <ble/BLEEndPoint.h>
-#include <ble/BleApplicationDelegate.h>
-#include <ble/BleLayer.h>
-#include <ble/BlePlatformDelegate.h>
-#include <ble/BleUUID.h>
+#include <cstring>
+#include <utility>
 
 #include <lib/core/CHIPEncoding.h>
 #include <lib/support/CodeUtils.h>
+#include <lib/support/SetupDiscriminator.h>
 #include <lib/support/logging/CHIPLogging.h>
+#include <system/SystemLayer.h>
+#include <system/SystemPacketBuffer.h>
+
+#include "BLEEndPoint.h"
+#include "BleApplicationDelegate.h"
+#include "BleConfig.h"
+#include "BleConnectionDelegate.h"
+#include "BleError.h"
+#include "BleLayerDelegate.h"
+#include "BlePlatformDelegate.h"
+#include "BleRole.h"
+#include "BleUUID.h"
 
 // Magic values expected in first 2 bytes of valid BLE transport capabilities request or response:
 #define CAPABILITIES_MSG_CHECK_BYTE_1 0b01100101
@@ -788,5 +795,3 @@ void BleLayer::OnConnectionError(void * appState, CHIP_ERROR err)
 
 } /* namespace Ble */
 } /* namespace chip */
-
-#endif /* CONFIG_NETWORK_LAYER_BLE */
diff --git a/src/ble/BleLayer.h b/src/ble/BleLayer.h
index a1c4d191672617..d9480cbf74ff79 100644
--- a/src/ble/BleLayer.h
+++ b/src/ble/BleLayer.h
@@ -47,21 +47,26 @@
 
 #pragma once
 
-#include <stdint.h>
+#ifndef _CHIP_BLE_BLE_H
+#error "Please include <ble/Ble.h> instead!"
+#endif
 
-#include <ble/BleConfig.h>
+#include <cstddef>
+#include <cstdint>
 
+#include <lib/core/CHIPError.h>
+#include <lib/support/DLLUtil.h>
 #include <lib/support/SetupDiscriminator.h>
 #include <system/SystemLayer.h>
 #include <system/SystemPacketBuffer.h>
 
-#include <ble/BleApplicationDelegate.h>
-#include <ble/BleConnectionDelegate.h>
-#include <ble/BleError.h>
-#include <ble/BleLayerDelegate.h>
-#include <ble/BlePlatformDelegate.h>
-#include <ble/BleRole.h>
-#include <ble/BleUUID.h>
+#include "BleApplicationDelegate.h"
+#include "BleConfig.h"
+#include "BleConnectionDelegate.h"
+#include "BleLayerDelegate.h"
+#include "BlePlatformDelegate.h"
+#include "BleRole.h"
+#include "BleUUID.h"
 
 namespace chip {
 namespace Ble {
@@ -78,10 +83,6 @@ namespace Ble {
 #define CHIP_BLE_TRANSPORT_PROTOCOL_MIN_SUPPORTED_VERSION kBleTransportProtocolVersion_V4
 #define CHIP_BLE_TRANSPORT_PROTOCOL_MAX_SUPPORTED_VERSION kBleTransportProtocolVersion_V4
 
-/// Forward declarations.
-class BleLayer;
-class BLEEndPoint;
-
 /// Enum defining versions of CHIP over BLE transport protocol.
 typedef enum
 {
@@ -344,5 +345,3 @@ class DLL_EXPORT BleLayer
 
 } /* namespace Ble */
 } /* namespace chip */
-
-#include "BLEEndPoint.h"
diff --git a/src/ble/BleLayerDelegate.h b/src/ble/BleLayerDelegate.h
index 63d4243dbeb3b5..cde31569e5a53e 100644
--- a/src/ble/BleLayerDelegate.h
+++ b/src/ble/BleLayerDelegate.h
@@ -23,15 +23,23 @@
 
 #pragma once
 
-#include <ble/BLEEndPoint.h>
-#include <ble/BleConfig.h>
-#include <ble/BleError.h>
-#include <ble/BleUUID.h>
+#ifndef _CHIP_BLE_BLE_H
+#error "Please include <ble/Ble.h> instead!"
+#endif
+
 #include <system/SystemPacketBuffer.h>
 
+#include "BleConfig.h"
+#include "BleError.h"
+#include "BleUUID.h"
+
 namespace chip {
 namespace Ble {
 
+// BLEEndPoint holds a pointer to BleLayerDelegate for messages,
+// while BleLayerDelegate functions also accepts BLEEndPoint.
+class BLEEndPoint;
+
 class BleLayerDelegate
 {
 public:
diff --git a/src/ble/BlePlatformDelegate.h b/src/ble/BlePlatformDelegate.h
index 3e5e62736d9f65..0db09441bffae0 100644
--- a/src/ble/BlePlatformDelegate.h
+++ b/src/ble/BlePlatformDelegate.h
@@ -24,13 +24,16 @@
 
 #pragma once
 
-#include <ble/BleConfig.h>
-
-#include <ble/BleUUID.h>
+#ifndef _CHIP_BLE_BLE_H
+#error "Please include <ble/Ble.h> instead!"
+#endif
 
 #include <lib/support/DLLUtil.h>
 #include <system/SystemPacketBuffer.h>
 
+#include "BleConfig.h"
+#include "BleUUID.h"
+
 namespace chip {
 namespace Ble {
 
diff --git a/src/ble/BleRole.h b/src/ble/BleRole.h
index e228a478f72be3..75e67dd443c73b 100644
--- a/src/ble/BleRole.h
+++ b/src/ble/BleRole.h
@@ -18,6 +18,10 @@
 
 #pragma once
 
+#ifndef _CHIP_BLE_BLE_H
+#error "Please include <ble/Ble.h> instead!"
+#endif
+
 namespace chip {
 namespace Ble {
 
diff --git a/src/ble/BleUUID.cpp b/src/ble/BleUUID.cpp
index 2311d33aaeb77e..098595fd721e5c 100644
--- a/src/ble/BleUUID.cpp
+++ b/src/ble/BleUUID.cpp
@@ -15,16 +15,14 @@
  *    See the License for the specific language governing permissions and
  *    limitations under the License.
  */
-#include <ble/BleConfig.h>
 
-#if CONFIG_NETWORK_LAYER_BLE
+#define _CHIP_BLE_BLE_H
+#include "BleUUID.h"
 
 #include <cctype>
 #include <cstdint>
 #include <cstring>
 
-#include "BleUUID.h"
-
 namespace chip {
 namespace Ble {
 
@@ -78,5 +76,3 @@ bool StringToUUID(const char * str, ChipBleUUID & uuid)
 
 } /* namespace Ble */
 } /* namespace chip */
-
-#endif /* CONFIG_NETWORK_LAYER_BLE */
diff --git a/src/ble/BleUUID.h b/src/ble/BleUUID.h
index 76fe0f322fec6a..315af9e8c76a32 100644
--- a/src/ble/BleUUID.h
+++ b/src/ble/BleUUID.h
@@ -15,9 +15,14 @@
  *    See the License for the specific language governing permissions and
  *    limitations under the License.
  */
+
 #pragma once
 
-#include <stdint.h>
+#ifndef _CHIP_BLE_BLE_H
+#error "Please include <ble/Ble.h> instead!"
+#endif
+
+#include <cstdint>
 
 namespace chip {
 namespace Ble {
diff --git a/src/ble/BtpEngine.cpp b/src/ble/BtpEngine.cpp
index cb3ac8ee092e2a..3a11c61ea75de9 100644
--- a/src/ble/BtpEngine.cpp
+++ b/src/ble/BtpEngine.cpp
@@ -25,15 +25,19 @@
  *
  */
 
-#include <ble/BleConfig.h>
+#define _CHIP_BLE_BLE_H
+#include "BtpEngine.h"
 
-#if CONFIG_NETWORK_LAYER_BLE
-
-#include <ble/BtpEngine.h>
+#include <utility>
 
+#include <lib/core/CHIPConfig.h>
+#include <lib/support/BitFlags.h>
 #include <lib/support/BufferReader.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
+#include <system/SystemPacketBuffer.h>
+
+#include "BleError.h"
 
 // Define below to enable extremely verbose BLE-specific debug logging.
 #undef CHIP_BTP_PROTOCOL_ENGINE_DEBUG_LOGGING_ENABLED
@@ -576,5 +580,3 @@ void BtpEngine::LogStateDebug() const
 
 } /* namespace Ble */
 } /* namespace chip */
-
-#endif /* CONFIG_NETWORK_LAYER_BLE */
diff --git a/src/ble/BtpEngine.h b/src/ble/BtpEngine.h
index 0e1ed33789f513..6c40baf635e8d9 100644
--- a/src/ble/BtpEngine.h
+++ b/src/ble/BtpEngine.h
@@ -27,13 +27,14 @@
 
 #pragma once
 
-#include <stdint.h>
-#include <string.h>
+#ifndef _CHIP_BLE_BLE_H
+#error "Please include <ble/Ble.h> instead!"
+#endif
 
-#include <ble/BleConfig.h>
+#include <cstdint>
+#include <cstring>
 
-#include <ble/BleError.h>
-#include <lib/support/BitFlags.h>
+#include <lib/core/CHIPError.h>
 #include <system/SystemPacketBuffer.h>
 
 namespace chip {
diff --git a/src/ble/CHIPBleServiceData.h b/src/ble/CHIPBleServiceData.h
index 6fbee69b7c268f..050cc76a43bca6 100644
--- a/src/ble/CHIPBleServiceData.h
+++ b/src/ble/CHIPBleServiceData.h
@@ -23,6 +23,12 @@
 
 #pragma once
 
+#ifndef _CHIP_BLE_BLE_H
+#error "Please include <ble/Ble.h> instead!"
+#endif
+
+#include <cstdint>
+
 #include <lib/core/CHIPEncoding.h>
 
 namespace chip {
diff --git a/src/ble/tests/TestBleErrorStr.cpp b/src/ble/tests/TestBleErrorStr.cpp
index 1dcb30e6e9878d..6868532823d950 100644
--- a/src/ble/tests/TestBleErrorStr.cpp
+++ b/src/ble/tests/TestBleErrorStr.cpp
@@ -28,9 +28,11 @@
 #include <stdint.h>
 #include <string.h>
 
-#include <ble/BleError.h>
 #include <lib/core/ErrorStr.h>
 
+#define _CHIP_BLE_BLE_H
+#include <ble/BleError.h>
+
 #include <gtest/gtest.h>
 
 using namespace chip;
diff --git a/src/ble/tests/TestBleUUID.cpp b/src/ble/tests/TestBleUUID.cpp
index 70d95bc0336d63..40e425d623c9a4 100644
--- a/src/ble/tests/TestBleUUID.cpp
+++ b/src/ble/tests/TestBleUUID.cpp
@@ -24,6 +24,7 @@
  *
  */
 
+#define _CHIP_BLE_BLE_H
 #include <ble/BleUUID.h>
 
 #include <gtest/gtest.h>
diff --git a/src/ble/tests/TestBtpEngine.cpp b/src/ble/tests/TestBtpEngine.cpp
index 945c794bb01559..b799ff40e48f75 100644
--- a/src/ble/tests/TestBtpEngine.cpp
+++ b/src/ble/tests/TestBtpEngine.cpp
@@ -20,11 +20,13 @@
 #include <cstdint>
 #include <numeric>
 
-#include <ble/BleLayer.h>
-#include <ble/BtpEngine.h>
 #include <lib/support/CHIPMem.h>
 #include <lib/support/logging/CHIPLogging.h>
 
+#define _CHIP_BLE_BLE_H
+#include <ble/BleLayer.h>
+#include <ble/BtpEngine.h>
+
 #include <gtest/gtest.h>
 
 using namespace chip;
diff --git a/src/controller/CHIPDeviceController.cpp b/src/controller/CHIPDeviceController.cpp
index 98e3012a49959f..9103a0ba728156 100644
--- a/src/controller/CHIPDeviceController.cpp
+++ b/src/controller/CHIPDeviceController.cpp
@@ -61,7 +61,7 @@
 #include <tracing/macros.h>
 
 #if CONFIG_NETWORK_LAYER_BLE
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 #include <transport/raw/BLE.h>
 #endif
 
diff --git a/src/controller/CHIPDeviceController.h b/src/controller/CHIPDeviceController.h
index b035334764b4a0..5290a26fdfbc47 100644
--- a/src/controller/CHIPDeviceController.h
+++ b/src/controller/CHIPDeviceController.h
@@ -72,7 +72,7 @@
 #endif
 
 #if CONFIG_NETWORK_LAYER_BLE
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 #endif
 #include <controller/DeviceDiscoveryDelegate.h>
 
diff --git a/src/controller/CHIPDeviceControllerSystemState.h b/src/controller/CHIPDeviceControllerSystemState.h
index 707f1befacec94..8a3be25e591ae0 100644
--- a/src/controller/CHIPDeviceControllerSystemState.h
+++ b/src/controller/CHIPDeviceControllerSystemState.h
@@ -49,7 +49,7 @@
 #endif
 
 #if CONFIG_NETWORK_LAYER_BLE
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 #include <transport/raw/BLE.h>
 #endif
 
diff --git a/src/controller/SetUpCodePairer.h b/src/controller/SetUpCodePairer.h
index f9dc542f4258a0..e177af7322d391 100644
--- a/src/controller/SetUpCodePairer.h
+++ b/src/controller/SetUpCodePairer.h
@@ -36,7 +36,7 @@
 #include <setup_payload/QRCodeSetupPayloadParser.h>
 
 #if CONFIG_NETWORK_LAYER_BLE
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 #endif // CONFIG_NETWORK_BLE
 
 #include <controller/DeviceDiscoveryDelegate.h>
diff --git a/src/controller/java/CHIPDeviceController-JNI.cpp b/src/controller/java/CHIPDeviceController-JNI.cpp
index b62ece066013ca..83c0d029d8ddb7 100644
--- a/src/controller/java/CHIPDeviceController-JNI.cpp
+++ b/src/controller/java/CHIPDeviceController-JNI.cpp
@@ -37,7 +37,7 @@
 #include <app/ReadClient.h>
 #include <app/WriteClient.h>
 #include <atomic>
-#include <ble/BleUUID.h>
+#include <ble/Ble.h>
 #include <controller/CHIPDeviceController.h>
 #include <controller/CommissioningWindowOpener.h>
 #include <controller/java/GroupDeviceProxy.h>
diff --git a/src/controller/python/chip/ble/LinuxImpl.cpp b/src/controller/python/chip/ble/LinuxImpl.cpp
index c61431bd8f9ecd..4e03d41e14949c 100644
--- a/src/controller/python/chip/ble/LinuxImpl.cpp
+++ b/src/controller/python/chip/ble/LinuxImpl.cpp
@@ -19,7 +19,7 @@
 #include <cstdint>
 #include <memory>
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/core/CHIPError.h>
 #include <lib/support/CodeUtils.h>
 #include <platform/CHIPDeviceLayer.h>
diff --git a/src/controller/python/chip/ble/darwin/Scanning.mm b/src/controller/python/chip/ble/darwin/Scanning.mm
index d3fb928790ab3e..292978b424a787 100644
--- a/src/controller/python/chip/ble/darwin/Scanning.mm
+++ b/src/controller/python/chip/ble/darwin/Scanning.mm
@@ -1,5 +1,4 @@
-#include <ble/BleUUID.h>
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/CHIPMem.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <platform/Darwin/UUIDHelper.h>
diff --git a/src/include/platform/CHIPDeviceEvent.h b/src/include/platform/CHIPDeviceEvent.h
index dae127ceba1f06..9d4f293cd3c3b0 100644
--- a/src/include/platform/CHIPDeviceEvent.h
+++ b/src/include/platform/CHIPDeviceEvent.h
@@ -369,7 +369,7 @@ typedef void (*AsyncWorkFunct)(intptr_t arg);
 #include CHIPDEVICEPLATFORMEVENT_HEADER
 #endif // defined(CHIP_DEVICE_LAYER_TARGET)
 
-#include <ble/BleConfig.h>
+#include <ble/Ble.h>
 #include <inet/InetInterface.h>
 #include <lib/support/LambdaBridge.h>
 #include <system/SystemEvent.h>
diff --git a/src/include/platform/internal/GenericConfigurationManagerImpl.ipp b/src/include/platform/internal/GenericConfigurationManagerImpl.ipp
index 955b782a3238ed..9b36f341042aa9 100644
--- a/src/include/platform/internal/GenericConfigurationManagerImpl.ipp
+++ b/src/include/platform/internal/GenericConfigurationManagerImpl.ipp
@@ -27,7 +27,7 @@
 #define GENERIC_CONFIGURATION_MANAGER_IMPL_CPP
 
 #include <FirmwareBuildTime.h>
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <crypto/CHIPCryptoPAL.h>
 #include <crypto/RandUtils.h>
 #include <inttypes.h>
diff --git a/src/lib/core/CHIPCore.h b/src/lib/core/CHIPCore.h
index bac6e473f39d43..6d223b2040057b 100644
--- a/src/lib/core/CHIPCore.h
+++ b/src/lib/core/CHIPCore.h
@@ -29,10 +29,8 @@
 
 #include <system/SystemLayer.h>
 
-#include <ble/BleConfig.h>
-
 #if CONFIG_NETWORK_LAYER_BLE
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 #endif // CONFIG_NETWORK_LAYER_BLE
 
 #define CHIP_CORE_IDENTITY "chip-core"
diff --git a/src/platform/ASR/BLEAppSvc.cpp b/src/platform/ASR/BLEAppSvc.cpp
index 124a58a3c5a188..d56485df2238cd 100644
--- a/src/platform/ASR/BLEAppSvc.cpp
+++ b/src/platform/ASR/BLEAppSvc.cpp
@@ -39,7 +39,7 @@ extern "C" {
 }
 #endif
 #include "BLEAppSvc.h"
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <platform/ConfigurationManager.h>
 #include <platform/internal/BLEManager.h>
 using namespace chip::DeviceLayer;
diff --git a/src/platform/ASR/BLEManagerImpl.cpp b/src/platform/ASR/BLEManagerImpl.cpp
index e960a617b4e33b..88f7460a962a3a 100644
--- a/src/platform/ASR/BLEManagerImpl.cpp
+++ b/src/platform/ASR/BLEManagerImpl.cpp
@@ -23,7 +23,7 @@
 #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
 
 #include "BLEAppSvc.h"
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <platform/DeviceInstanceInfoProvider.h>
diff --git a/src/platform/Ameba/BLEManagerImpl.cpp b/src/platform/Ameba/BLEManagerImpl.cpp
index 969febfffb5842..2d0a6d99515367 100644
--- a/src/platform/Ameba/BLEManagerImpl.cpp
+++ b/src/platform/Ameba/BLEManagerImpl.cpp
@@ -30,7 +30,7 @@
 #include <setup_payload/AdditionalDataPayloadGenerator.h>
 
 #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 
 #include "stdio.h"
 #include "timers.h"
diff --git a/src/platform/Beken/BLEManagerImpl.cpp b/src/platform/Beken/BLEManagerImpl.cpp
index 3437a16acfdb79..37f9fea9b9106e 100644
--- a/src/platform/Beken/BLEManagerImpl.cpp
+++ b/src/platform/Beken/BLEManagerImpl.cpp
@@ -30,7 +30,7 @@
 #include <setup_payload/AdditionalDataPayloadGenerator.h>
 
 #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #if CHIP_ENABLE_ADDITIONAL_DATA_ADVERTISING
 #include <setup_payload/AdditionalDataPayloadGenerator.h>
 #endif
diff --git a/src/platform/Darwin/BLEManagerImpl.cpp b/src/platform/Darwin/BLEManagerImpl.cpp
index 639e8d1e1c4657..c0af6ccf17d93e 100644
--- a/src/platform/Darwin/BLEManagerImpl.cpp
+++ b/src/platform/Darwin/BLEManagerImpl.cpp
@@ -23,7 +23,7 @@
  */
 #include <platform/internal/CHIPDeviceLayerInternal.h>
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/core/Global.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <platform/Darwin/BleApplicationDelegate.h>
diff --git a/src/platform/Darwin/BleApplicationDelegate.h b/src/platform/Darwin/BleApplicationDelegate.h
index 662b43b7b53c97..72aba4e65b397b 100644
--- a/src/platform/Darwin/BleApplicationDelegate.h
+++ b/src/platform/Darwin/BleApplicationDelegate.h
@@ -17,7 +17,7 @@
 
 #pragma once
 
-#include <ble/BleApplicationDelegate.h>
+#include <ble/Ble.h>
 
 namespace chip {
 namespace DeviceLayer {
diff --git a/src/platform/Darwin/BleApplicationDelegateImpl.mm b/src/platform/Darwin/BleApplicationDelegateImpl.mm
index c61f17a894d7c1..883f2a2bcd8916 100644
--- a/src/platform/Darwin/BleApplicationDelegateImpl.mm
+++ b/src/platform/Darwin/BleApplicationDelegateImpl.mm
@@ -24,7 +24,7 @@
 #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
 #endif
 
-#include <ble/BleConfig.h>
+#include <ble/Ble.h>
 #include <platform/Darwin/BleApplicationDelegate.h>
 
 using namespace ::chip;
diff --git a/src/platform/Darwin/BleConnectionDelegate.h b/src/platform/Darwin/BleConnectionDelegate.h
index de97ac383729c1..1441f60610c822 100644
--- a/src/platform/Darwin/BleConnectionDelegate.h
+++ b/src/platform/Darwin/BleConnectionDelegate.h
@@ -17,7 +17,7 @@
 
 #pragma once
 
-#include <ble/BleConnectionDelegate.h>
+#include <ble/Ble.h>
 
 namespace chip {
 namespace DeviceLayer {
diff --git a/src/platform/Darwin/BleConnectionDelegateImpl.mm b/src/platform/Darwin/BleConnectionDelegateImpl.mm
index 8ec68fc35ea8f4..b325d079ba61a5 100644
--- a/src/platform/Darwin/BleConnectionDelegateImpl.mm
+++ b/src/platform/Darwin/BleConnectionDelegateImpl.mm
@@ -25,10 +25,7 @@
 #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
 #endif
 
-#include <ble/BleConfig.h>
-#include <ble/BleError.h>
-#include <ble/BleLayer.h>
-#include <ble/BleUUID.h>
+#include <ble/Ble.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <platform/CHIPDeviceLayer.h>
 #include <platform/Darwin/BleConnectionDelegate.h>
diff --git a/src/platform/Darwin/BlePlatformDelegate.h b/src/platform/Darwin/BlePlatformDelegate.h
index 80b3dfff2d6e73..389a0bf28bce98 100644
--- a/src/platform/Darwin/BlePlatformDelegate.h
+++ b/src/platform/Darwin/BlePlatformDelegate.h
@@ -17,7 +17,7 @@
 
 #pragma once
 
-#include <ble/BlePlatformDelegate.h>
+#include <ble/Ble.h>
 #include <system/SystemPacketBuffer.h>
 
 using ::chip::Ble::ChipBleUUID;
diff --git a/src/platform/Darwin/BlePlatformDelegateImpl.mm b/src/platform/Darwin/BlePlatformDelegateImpl.mm
index 9b30cc7edcc843..210cd872318056 100644
--- a/src/platform/Darwin/BlePlatformDelegateImpl.mm
+++ b/src/platform/Darwin/BlePlatformDelegateImpl.mm
@@ -25,10 +25,7 @@
 #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC).
 #endif
 
-#include <ble/BleConfig.h>
-#include <ble/BleError.h>
-#include <ble/BleLayer.h>
-#include <ble/BleUUID.h>
+#include <ble/Ble.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <platform/Darwin/BlePlatformDelegate.h>
 
diff --git a/src/platform/Darwin/BleScannerDelegate.h b/src/platform/Darwin/BleScannerDelegate.h
index 7759abbb4ba87c..9c96445145d67f 100644
--- a/src/platform/Darwin/BleScannerDelegate.h
+++ b/src/platform/Darwin/BleScannerDelegate.h
@@ -18,7 +18,7 @@
 
 #pragma once
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/DLLUtil.h>
 
 namespace chip {
diff --git a/src/platform/Darwin/UUIDHelper.h b/src/platform/Darwin/UUIDHelper.h
index 40ff15b927a04f..bf12cf9a92375e 100644
--- a/src/platform/Darwin/UUIDHelper.h
+++ b/src/platform/Darwin/UUIDHelper.h
@@ -17,7 +17,7 @@
 
 #pragma once
 
-#include <ble/BleUUID.h>
+#include <ble/Ble.h>
 
 #import <CoreBluetooth/CoreBluetooth.h>
 
diff --git a/src/platform/ESP32/BLEManagerImpl.h b/src/platform/ESP32/BLEManagerImpl.h
index aa740295d03eed..39cde57dc0c262 100644
--- a/src/platform/ESP32/BLEManagerImpl.h
+++ b/src/platform/ESP32/BLEManagerImpl.h
@@ -68,8 +68,7 @@ struct ble_gatt_char_context
 
 #include "ble/Ble.h"
 #if CONFIG_ENABLE_ESP32_BLE_CONTROLLER
-#include <ble/BleLayer.h>
-#include <ble/BleUUID.h>
+#include <ble/Ble.h>
 #include <platform/ESP32/ChipDeviceScanner.h>
 #endif
 
diff --git a/src/platform/ESP32/ChipDeviceScanner.h b/src/platform/ESP32/ChipDeviceScanner.h
index a7718d09a8188f..601e1ac6bab0b0 100644
--- a/src/platform/ESP32/ChipDeviceScanner.h
+++ b/src/platform/ESP32/ChipDeviceScanner.h
@@ -17,7 +17,6 @@
 
 #pragma once
 
-#include <ble/CHIPBleServiceData.h>
 #include <lib/core/CHIPError.h>
 #include <system/SystemLayer.h>
 
@@ -32,7 +31,7 @@
 #include "esp_gattc_api.h"
 #include "esp_log.h"
 #include "freertos/FreeRTOS.h"
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/core/CHIPError.h>
 #include <system/SystemLayer.h>
 #endif
diff --git a/src/platform/ESP32/bluedroid/BLEManagerImpl.cpp b/src/platform/ESP32/bluedroid/BLEManagerImpl.cpp
index 06c95b3b45f153..e5d9077ee63ae2 100644
--- a/src/platform/ESP32/bluedroid/BLEManagerImpl.cpp
+++ b/src/platform/ESP32/bluedroid/BLEManagerImpl.cpp
@@ -35,9 +35,8 @@
 #if CONFIG_BT_BLUEDROID_ENABLED
 
 #if CONFIG_ENABLE_ESP32_BLE_CONTROLLER
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 #endif
-#include <ble/CHIPBleServiceData.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <platform/CommissionableDataProvider.h>
diff --git a/src/platform/ESP32/nimble/BLEManagerImpl.cpp b/src/platform/ESP32/nimble/BLEManagerImpl.cpp
index 5407e9969b50e3..edff1666e6311a 100644
--- a/src/platform/ESP32/nimble/BLEManagerImpl.cpp
+++ b/src/platform/ESP32/nimble/BLEManagerImpl.cpp
@@ -31,9 +31,8 @@
 #if CONFIG_BT_NIMBLE_ENABLED
 
 #if CONFIG_ENABLE_ESP32_BLE_CONTROLLER
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 #endif
-#include <ble/CHIPBleServiceData.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <platform/CommissionableDataProvider.h>
diff --git a/src/platform/Infineon/CYW30739/BLEManagerImpl.cpp b/src/platform/Infineon/CYW30739/BLEManagerImpl.cpp
index 40428c16ba2853..ab4deef1f91924 100644
--- a/src/platform/Infineon/CYW30739/BLEManagerImpl.cpp
+++ b/src/platform/Infineon/CYW30739/BLEManagerImpl.cpp
@@ -28,7 +28,7 @@
 
 #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <platform/internal/BLEManager.h>
diff --git a/src/platform/Infineon/PSOC6/BLEManagerImpl.cpp b/src/platform/Infineon/PSOC6/BLEManagerImpl.cpp
index 917cdc267e4d24..cb2b01197669e7 100644
--- a/src/platform/Infineon/PSOC6/BLEManagerImpl.cpp
+++ b/src/platform/Infineon/PSOC6/BLEManagerImpl.cpp
@@ -28,7 +28,7 @@
 
 #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/CHIPMemString.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
diff --git a/src/platform/Linux/BLEManagerImpl.cpp b/src/platform/Linux/BLEManagerImpl.cpp
index 7f0ad2bcd54212..aeb853efb359c7 100644
--- a/src/platform/Linux/BLEManagerImpl.cpp
+++ b/src/platform/Linux/BLEManagerImpl.cpp
@@ -35,8 +35,7 @@
 #include <type_traits>
 #include <utility>
 
-#include <ble/BleError.h>
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/CHIPMemString.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/SafeInt.h>
diff --git a/src/platform/Linux/BLEManagerImpl.h b/src/platform/Linux/BLEManagerImpl.h
index 4432c106b3bc35..8444439c27c1c7 100644
--- a/src/platform/Linux/BLEManagerImpl.h
+++ b/src/platform/Linux/BLEManagerImpl.h
@@ -26,7 +26,7 @@
 #include <cstdint>
 #include <string>
 
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 #include <platform/internal/BLEManager.h>
 
 #include "bluez/BluezAdvertisement.h"
diff --git a/src/platform/Linux/bluez/BluezAdvertisement.cpp b/src/platform/Linux/bluez/BluezAdvertisement.cpp
index f2855b24629290..c68d601d241cd0 100644
--- a/src/platform/Linux/bluez/BluezAdvertisement.cpp
+++ b/src/platform/Linux/bluez/BluezAdvertisement.cpp
@@ -24,7 +24,7 @@
 #include <glib-object.h>
 #include <glib.h>
 
-#include <ble/BleError.h>
+#include <ble/Ble.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <platform/ConfigurationManager.h>
diff --git a/src/platform/Linux/bluez/BluezAdvertisement.h b/src/platform/Linux/bluez/BluezAdvertisement.h
index f1ee9aee21e15d..fcae7713a43efc 100644
--- a/src/platform/Linux/bluez/BluezAdvertisement.h
+++ b/src/platform/Linux/bluez/BluezAdvertisement.h
@@ -24,7 +24,7 @@
 #include <glib-object.h>
 #include <glib.h>
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/core/CHIPError.h>
 #include <platform/GLibTypeDeleter.h>
 #include <platform/Linux/dbus/bluez/DbusBluez.h>
diff --git a/src/platform/Linux/bluez/BluezEndpoint.cpp b/src/platform/Linux/bluez/BluezEndpoint.cpp
index f7b7bc66f85a0b..151c09e09f662d 100644
--- a/src/platform/Linux/bluez/BluezEndpoint.cpp
+++ b/src/platform/Linux/bluez/BluezEndpoint.cpp
@@ -57,7 +57,7 @@
 #include <glib-object.h>
 #include <glib.h>
 
-#include <ble/BleError.h>
+#include <ble/Ble.h>
 #include <lib/support/BitFlags.h>
 #include <lib/support/CHIPMem.h>
 #include <lib/support/CodeUtils.h>
diff --git a/src/platform/Linux/bluez/BluezEndpoint.h b/src/platform/Linux/bluez/BluezEndpoint.h
index 938e558198384d..01821bf11c6507 100644
--- a/src/platform/Linux/bluez/BluezEndpoint.h
+++ b/src/platform/Linux/bluez/BluezEndpoint.h
@@ -52,7 +52,7 @@
 #include <gio/gio.h>
 #include <glib.h>
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/core/CHIPError.h>
 #include <platform/GLibTypeDeleter.h>
 #include <platform/Linux/dbus/bluez/DbusBluez.h>
diff --git a/src/platform/Linux/bluez/BluezObjectManager.cpp b/src/platform/Linux/bluez/BluezObjectManager.cpp
index 91a2ffb2bcd929..ff125c068d3f7e 100644
--- a/src/platform/Linux/bluez/BluezObjectManager.cpp
+++ b/src/platform/Linux/bluez/BluezObjectManager.cpp
@@ -26,7 +26,7 @@
 #include <glib-object.h>
 #include <glib.h>
 
-#include <ble/BleError.h>
+#include <ble/Ble.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <platform/ConfigurationManager.h>
diff --git a/src/platform/Linux/bluez/ChipDeviceScanner.cpp b/src/platform/Linux/bluez/ChipDeviceScanner.cpp
index 28a9baa358b33f..dcb113b7f479c9 100644
--- a/src/platform/Linux/bluez/ChipDeviceScanner.cpp
+++ b/src/platform/Linux/bluez/ChipDeviceScanner.cpp
@@ -23,7 +23,7 @@
 
 #include <glib-object.h>
 
-#include <ble/BleError.h>
+#include <ble/Ble.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <platform/CHIPDeviceLayer.h>
 #include <platform/GLibTypeDeleter.h>
diff --git a/src/platform/Linux/bluez/ChipDeviceScanner.h b/src/platform/Linux/bluez/ChipDeviceScanner.h
index ead9467fdc29ef..274af60d32d442 100644
--- a/src/platform/Linux/bluez/ChipDeviceScanner.h
+++ b/src/platform/Linux/bluez/ChipDeviceScanner.h
@@ -21,7 +21,7 @@
 
 #include <glib.h>
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/core/CHIPError.h>
 #include <platform/GLibTypeDeleter.h>
 #include <platform/Linux/dbus/bluez/DbusBluez.h>
diff --git a/src/platform/Tizen/BLEManagerImpl.cpp b/src/platform/Tizen/BLEManagerImpl.cpp
index 4d4c3e77316fc7..a78efd9c944cce 100644
--- a/src/platform/Tizen/BLEManagerImpl.cpp
+++ b/src/platform/Tizen/BLEManagerImpl.cpp
@@ -47,7 +47,6 @@
 #include <glib.h>
 
 #include <ble/Ble.h>
-#include <ble/CHIPBleServiceData.h>
 #include <lib/core/CHIPError.h>
 #include <lib/core/CHIPSafeCasts.h>
 #include <lib/core/ErrorStr.h>
diff --git a/src/platform/Tizen/BLEManagerImpl.h b/src/platform/Tizen/BLEManagerImpl.h
index 1a49b9dae6c33f..ed30b92aa958b7 100644
--- a/src/platform/Tizen/BLEManagerImpl.h
+++ b/src/platform/Tizen/BLEManagerImpl.h
@@ -33,7 +33,6 @@
 #include <glib.h>
 
 #include <ble/Ble.h>
-#include <ble/CHIPBleServiceData.h>
 #include <lib/core/CHIPError.h>
 #include <lib/support/BitFlags.h>
 #include <lib/support/SetupDiscriminator.h>
diff --git a/src/platform/Tizen/ChipDeviceScanner.h b/src/platform/Tizen/ChipDeviceScanner.h
index 09b5a6d5f39e15..c8ecc5bfa8e81a 100644
--- a/src/platform/Tizen/ChipDeviceScanner.h
+++ b/src/platform/Tizen/ChipDeviceScanner.h
@@ -28,7 +28,7 @@
 #include <bluetooth.h>
 #include <glib.h>
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/core/CHIPError.h>
 #include <system/SystemClock.h>
 
diff --git a/src/platform/Zephyr/BLEManagerImpl.cpp b/src/platform/Zephyr/BLEManagerImpl.cpp
index d4e83332452a06..4eba52756d1368 100644
--- a/src/platform/Zephyr/BLEManagerImpl.cpp
+++ b/src/platform/Zephyr/BLEManagerImpl.cpp
@@ -27,7 +27,7 @@
 
 #include <platform/Zephyr/BLEManagerImpl.h>
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/CHIPMemString.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
diff --git a/src/platform/android/BLEManagerImpl.cpp b/src/platform/android/BLEManagerImpl.cpp
index 05dfb5f560fbb5..d729ba5134573c 100644
--- a/src/platform/android/BLEManagerImpl.cpp
+++ b/src/platform/android/BLEManagerImpl.cpp
@@ -23,7 +23,7 @@
  */
 #include <platform/internal/CHIPDeviceLayerInternal.h>
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/CHIPJNIError.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/JniReferences.h>
diff --git a/src/platform/android/BLEManagerImpl.h b/src/platform/android/BLEManagerImpl.h
index effa75db4ce3b4..1b25d6b11b44c1 100644
--- a/src/platform/android/BLEManagerImpl.h
+++ b/src/platform/android/BLEManagerImpl.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 #include <jni.h>
 #include <lib/support/JniReferences.h>
 #include <platform/internal/BLEManager.h>
diff --git a/src/platform/bouffalolab/common/BLEManagerImpl.cpp b/src/platform/bouffalolab/common/BLEManagerImpl.cpp
index 1612f080d03575..b2f2c82f60716e 100644
--- a/src/platform/bouffalolab/common/BLEManagerImpl.cpp
+++ b/src/platform/bouffalolab/common/BLEManagerImpl.cpp
@@ -21,7 +21,7 @@
 
 #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/CHIPMemString.h>
 #include <platform/DeviceInstanceInfoProvider.h>
 #include <platform/internal/BLEManager.h>
diff --git a/src/platform/bouffalolab/common/BLEManagerImpl.h b/src/platform/bouffalolab/common/BLEManagerImpl.h
index a0c69fe242372b..b0682b80e11b19 100644
--- a/src/platform/bouffalolab/common/BLEManagerImpl.h
+++ b/src/platform/bouffalolab/common/BLEManagerImpl.h
@@ -20,7 +20,7 @@
 
 #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
 
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 
 #include <bluetooth/bluetooth.h>
 #include <bluetooth/conn.h>
diff --git a/src/platform/cc13xx_26xx/BLEManagerImpl.cpp b/src/platform/cc13xx_26xx/BLEManagerImpl.cpp
index 4d0c009eef1f39..e733184a9314f0 100644
--- a/src/platform/cc13xx_26xx/BLEManagerImpl.cpp
+++ b/src/platform/cc13xx_26xx/BLEManagerImpl.cpp
@@ -29,7 +29,7 @@
 
 #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <platform/internal/BLEManager.h>
 
 #include "FreeRTOS.h"
diff --git a/src/platform/cc13xx_26xx/chipOBleProfile.h b/src/platform/cc13xx_26xx/chipOBleProfile.h
index d208733928bb52..e04b70eba80402 100644
--- a/src/platform/cc13xx_26xx/chipOBleProfile.h
+++ b/src/platform/cc13xx_26xx/chipOBleProfile.h
@@ -26,7 +26,7 @@
 #define CHIPOBLEPROFILE_H
 
 #ifdef __cplusplus
-#include <ble/BleUUID.h>
+#include <ble/Ble.h>
 #include <platform/internal/BLEManager.h>
 #include <platform/internal/CHIPDeviceLayerInternal.h>
 
diff --git a/src/platform/mbed/BLEManagerImpl.cpp b/src/platform/mbed/BLEManagerImpl.cpp
index aa797ff95f6f4c..75c749f3f145f5 100644
--- a/src/platform/mbed/BLEManagerImpl.cpp
+++ b/src/platform/mbed/BLEManagerImpl.cpp
@@ -30,7 +30,7 @@
 
 #include <platform/mbed/BLEManagerImpl.h>
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <platform/CommissionableDataProvider.h>
diff --git a/src/platform/mbed/BLEManagerImpl.h b/src/platform/mbed/BLEManagerImpl.h
index 6dfb1d56e2097b..91675e08ab13c4 100644
--- a/src/platform/mbed/BLEManagerImpl.h
+++ b/src/platform/mbed/BLEManagerImpl.h
@@ -27,7 +27,7 @@
 
 #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
 
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 
 namespace chip {
 namespace DeviceLayer {
diff --git a/src/platform/mt793x/BLEManagerImpl.cpp b/src/platform/mt793x/BLEManagerImpl.cpp
index f1ac9bfa707b88..0a90f2e2a733ba 100644
--- a/src/platform/mt793x/BLEManagerImpl.cpp
+++ b/src/platform/mt793x/BLEManagerImpl.cpp
@@ -34,7 +34,7 @@
 #include "FreeRTOS.h"
 #include "event_groups.h"
 #include "timers.h"
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
 
diff --git a/src/platform/nxp/k32w/common/BLEManagerCommon.cpp b/src/platform/nxp/k32w/common/BLEManagerCommon.cpp
index b532ddef7f207e..12b32b8e4b71b2 100644
--- a/src/platform/nxp/k32w/common/BLEManagerCommon.cpp
+++ b/src/platform/nxp/k32w/common/BLEManagerCommon.cpp
@@ -32,7 +32,7 @@
 
 #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 
 #include "board.h"
 #include "gatt_db_app_interface.h"
diff --git a/src/platform/qpg/BLEManagerImpl.cpp b/src/platform/qpg/BLEManagerImpl.cpp
index 44fbf9367282d4..271c9b02e10d9f 100644
--- a/src/platform/qpg/BLEManagerImpl.cpp
+++ b/src/platform/qpg/BLEManagerImpl.cpp
@@ -25,8 +25,7 @@
 
 #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
 
-#include <ble/BleUUID.h>
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <platform/CommissionableDataProvider.h>
 #include <platform/internal/BLEManager.h>
 
diff --git a/src/platform/silabs/efr32/BLEManagerImpl.cpp b/src/platform/silabs/efr32/BLEManagerImpl.cpp
index 1f82f475c8bb4f..4a6d78574005c1 100644
--- a/src/platform/silabs/efr32/BLEManagerImpl.cpp
+++ b/src/platform/silabs/efr32/BLEManagerImpl.cpp
@@ -39,7 +39,7 @@ extern "C" {
 #include "sl_bt_stack_config.h"
 #include "sl_bt_stack_init.h"
 #include "timers.h"
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <crypto/RandUtils.h>
 #include <cstring>
 #include <lib/support/CodeUtils.h>
diff --git a/src/platform/silabs/rs911x/BLEManagerImpl.cpp b/src/platform/silabs/rs911x/BLEManagerImpl.cpp
index 4ce7ef6973b553..e7495322018170 100644
--- a/src/platform/silabs/rs911x/BLEManagerImpl.cpp
+++ b/src/platform/silabs/rs911x/BLEManagerImpl.cpp
@@ -51,7 +51,7 @@ extern "C" {
 }
 #endif
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
 #include <platform/CommissionableDataProvider.h>
diff --git a/src/platform/stm32/BLEManagerImpl.cpp b/src/platform/stm32/BLEManagerImpl.cpp
index 60863a2da6a698..fc24ebc64ac006 100644
--- a/src/platform/stm32/BLEManagerImpl.cpp
+++ b/src/platform/stm32/BLEManagerImpl.cpp
@@ -24,8 +24,7 @@
 /* this file behaves like a config.h, comes first */
 #include <platform/internal/CHIPDeviceLayerInternal.h>
 
-#include <ble/BleUUID.h>
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <platform/internal/BLEManager.h>
 
 #include <lib/support/CodeUtils.h>
diff --git a/src/platform/stm32/BLEManagerImpl.h b/src/platform/stm32/BLEManagerImpl.h
index 98812500eac0b0..36b6c39d4b74ec 100644
--- a/src/platform/stm32/BLEManagerImpl.h
+++ b/src/platform/stm32/BLEManagerImpl.h
@@ -25,7 +25,7 @@
 
 #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
 
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 #include <platform/internal/BLEManager.h>
 
 #include "FreeRTOS.h"
diff --git a/src/platform/telink/BLEManagerImpl.cpp b/src/platform/telink/BLEManagerImpl.cpp
index 220501a84f673a..69252b66a0ecef 100644
--- a/src/platform/telink/BLEManagerImpl.cpp
+++ b/src/platform/telink/BLEManagerImpl.cpp
@@ -27,7 +27,7 @@
 
 #include <platform/telink/BLEManagerImpl.h>
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/CHIPMemString.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/logging/CHIPLogging.h>
diff --git a/src/platform/webos/BLEManagerImpl.cpp b/src/platform/webos/BLEManagerImpl.cpp
index 670c86e8233237..6d9726c9c94742 100644
--- a/src/platform/webos/BLEManagerImpl.cpp
+++ b/src/platform/webos/BLEManagerImpl.cpp
@@ -23,7 +23,7 @@
  */
 #include <platform/internal/CHIPDeviceLayerInternal.h>
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/support/CodeUtils.h>
 #include <lib/support/SafeInt.h>
 #include <new>
diff --git a/src/platform/webos/BLEManagerImpl.h b/src/platform/webos/BLEManagerImpl.h
index cc3f7c3d84ae2a..7336f95c02409c 100644
--- a/src/platform/webos/BLEManagerImpl.h
+++ b/src/platform/webos/BLEManagerImpl.h
@@ -23,7 +23,7 @@
 
 #pragma once
 
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 #include <platform/internal/BLEManager.h>
 
 #if CHIP_DEVICE_CONFIG_ENABLE_CHIPOBLE
diff --git a/src/platform/webos/ChipDeviceScanner.h b/src/platform/webos/ChipDeviceScanner.h
index ac23c7bd4b68aa..3bc50171ccf99c 100644
--- a/src/platform/webos/ChipDeviceScanner.h
+++ b/src/platform/webos/ChipDeviceScanner.h
@@ -25,7 +25,7 @@
 #include <memory>
 #include <string>
 
-#include <ble/CHIPBleServiceData.h>
+#include <ble/Ble.h>
 #include <lib/core/CHIPError.h>
 #include <system/SystemLayer.h>
 
diff --git a/src/transport/SecureSession.h b/src/transport/SecureSession.h
index b18cc05b4ce716..c5e04628f17c3f 100644
--- a/src/transport/SecureSession.h
+++ b/src/transport/SecureSession.h
@@ -22,7 +22,7 @@
 #pragma once
 
 #include <app/util/basic-types.h>
-#include <ble/BleConfig.h>
+#include <ble/Ble.h>
 #include <lib/core/ReferenceCounted.h>
 #include <messaging/ReliableMessageProtocolConfig.h>
 #include <transport/CryptoContext.h>
diff --git a/src/transport/UnauthenticatedSessionTable.h b/src/transport/UnauthenticatedSessionTable.h
index f5ba35df533de5..1c3ff7ed55586a 100644
--- a/src/transport/UnauthenticatedSessionTable.h
+++ b/src/transport/UnauthenticatedSessionTable.h
@@ -16,7 +16,7 @@
  */
 #pragma once
 
-#include <ble/BleConfig.h>
+#include <ble/Ble.h>
 #include <lib/core/CHIPError.h>
 #include <lib/core/ReferenceCounted.h>
 #include <lib/support/CodeUtils.h>
diff --git a/src/transport/raw/BLE.h b/src/transport/raw/BLE.h
index 548af414b2fffe..5e9da499664329 100644
--- a/src/transport/raw/BLE.h
+++ b/src/transport/raw/BLE.h
@@ -24,12 +24,9 @@
 
 #pragma once
 
-#include <ble/BleConfig.h>
-
 #include <utility>
 
-#include <ble/BleError.h>
-#include <ble/BleLayer.h>
+#include <ble/Ble.h>
 #include <lib/core/CHIPCore.h>
 #include <lib/support/DLLUtil.h>
 #include <system/SystemPacketBuffer.h>