diff --git a/aidl/camera/provider/Android.bp b/aidl/camera/provider/Android.bp
index 1c223f0..b1c8aa2 100644
--- a/aidl/camera/provider/Android.bp
+++ b/aidl/camera/provider/Android.bp
@@ -4,9 +4,29 @@
 // SPDX-License-Identifier: Apache-2.0
 //
 
+soong_config_module_type {
+    name: "extra_ids",
+    module_type: "cc_defaults",
+    config_namespace: "samsungCameraVars",
+    value_variables: ["extra_ids"],
+    properties: ["cppflags"],
+}
+
+extra_ids {
+    name: "extra_id_defaults",
+    soong_config_variables: {
+        extra_ids: {
+            cppflags: ["-DEXTRA_IDS=%s"],
+        },
+    },
+}
+
 cc_binary {
     name: "android.hardware.camera.provider-service.samsung",
-    defaults: ["samsung_camera3_defaults"],
+    defaults: [
+        "extra_id_defaults",
+        "samsung_camera3_defaults"
+    ],
     init_rc: ["android.hardware.camera.provider-service.samsung.rc"],
     vintf_fragments: ["android.hardware.camera.provider-service.samsung.xml"],
     vendor: true,
diff --git a/aidl/camera/provider/CameraProvider.cpp b/aidl/camera/provider/CameraProvider.cpp
index 8487201..329c34b 100644
--- a/aidl/camera/provider/CameraProvider.cpp
+++ b/aidl/camera/provider/CameraProvider.cpp
@@ -158,6 +158,29 @@
 
 CameraProvider::~CameraProvider() {}
 
+bool CameraProvider::initCamera(int id) {
+    struct camera_info info;
+    auto rc = mModule->getCameraInfo(id, &info);
+    if (rc != NO_ERROR) {
+        ALOGE("%s: Camera info query failed!", __func__);
+        return true;
+    }
+
+    if (checkCameraVersion(id, info) != OK) {
+        ALOGE("%s: Camera version check failed!", __func__);
+        return true;
+    }
+
+    char cameraId[kMaxCameraIdLen];
+    snprintf(cameraId, sizeof(cameraId), "%d", id);
+    std::string cameraIdStr(cameraId);
+    mCameraStatusMap[cameraIdStr] = CAMERA_DEVICE_STATUS_PRESENT;
+
+    addDeviceNames(id);
+
+    return false;
+}
+
 bool CameraProvider::initialize() {
     camera_module_t* rawModule;
     int err = hw_get_module(CAMERA_HARDWARE_MODULE_ID, (const hw_module_t**)&rawModule);
@@ -191,26 +214,23 @@
 
     mNumberOfLegacyCameras = mModule->getNumberOfCameras();
     for (int i = 0; i < mNumberOfLegacyCameras; i++) {
-        struct camera_info info;
-        auto rc = mModule->getCameraInfo(i, &info);
-        if (rc != NO_ERROR) {
-            ALOGE("%s: Camera info query failed!", __func__);
+        if (initCamera(i)) {
             mModule.clear();
             return true;
         }
-
-        if (checkCameraVersion(i, info) != OK) {
-            ALOGE("%s: Camera version check failed!", __func__);
+    }
+    std::vector<int> extraIDs = {
+#ifdef EXTRA_IDS
+        EXTRA_IDS
+#endif
+    };
+    for (int i : extraIDs) {
+        if (initCamera(i)) {
             mModule.clear();
             return true;
+        } else {
+            mNumberOfLegacyCameras++;
         }
-
-        char cameraId[kMaxCameraIdLen];
-        snprintf(cameraId, sizeof(cameraId), "%d", i);
-        std::string cameraIdStr(cameraId);
-        mCameraStatusMap[cameraIdStr] = CAMERA_DEVICE_STATUS_PRESENT;
-
-        addDeviceNames(i);
     }
 
     return false;  // mInitFailed
diff --git a/aidl/camera/provider/CameraProvider.h b/aidl/camera/provider/CameraProvider.h
index cedc2df..411b331 100644
--- a/aidl/camera/provider/CameraProvider.h
+++ b/aidl/camera/provider/CameraProvider.h
@@ -65,6 +65,7 @@
     // Must be queried before using any APIs.
     // APIs will only work when this returns true
     bool mInitFailed;
+    bool initCamera(int id);
     bool initialize();
 
     std::vector<VendorTagSection> mVendorTagSections;
diff --git a/hidl/camera/provider/2.5/Android.bp b/hidl/camera/provider/2.5/Android.bp
index dc70852..4ed98ae 100644
--- a/hidl/camera/provider/2.5/Android.bp
+++ b/hidl/camera/provider/2.5/Android.bp
@@ -1,20 +1,3 @@
-soong_config_module_type {
-    name: "extra_ids",
-    module_type: "cc_defaults",
-    config_namespace: "samsungCameraVars",
-    value_variables: ["extra_ids"],
-    properties: ["cppflags"],
-}
-
-extra_ids {
-    name: "extra_id_defaults",
-    soong_config_variables: {
-        extra_ids: {
-            cppflags: ["-DEXTRA_IDS=%s"],
-        },
-    },
-}
-
 cc_library_shared {
     name: "android.hardware.camera.provider@2.5-legacy.samsung",
     defaults: ["extra_id_defaults"],
