diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
index 6b58b2c..f69cf58 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
@@ -320,7 +320,7 @@
     }
 
     /**
-     * Disable the Le Audio profile for each of the Le Audio devices.
+     * Disable the Le Audio profile, VCP, and CSIP for each of the Le Audio devices.
      *
      * @param profile the LeAudio profile
      */
@@ -329,12 +329,20 @@
             Log.e(TAG, "There is no the LE profile or no device in mProfileDeviceMap. Do nothing.");
             return;
         }
+        LocalBluetoothProfile vcp = mProfileManager.getVolumeControlProfile();
+        LocalBluetoothProfile csip = mProfileManager.getCsipSetCoordinatorProfile();
 
         for (CachedBluetoothDevice leAudioDevice : mProfileDeviceMap.get(profile.toString())) {
             Log.d(TAG,
                     "device:" + leAudioDevice.getDevice().getAnonymizedAddress()
                             + "disable LE profile");
             profile.setEnabled(leAudioDevice.getDevice(), false);
+            if (vcp != null) {
+                vcp.setEnabled(leAudioDevice.getDevice(), false);
+            }
+            if (csip != null) {
+                csip.setEnabled(leAudioDevice.getDevice(), false);
+            }
         }
 
         if (!SystemProperties.getBoolean(ENABLE_DUAL_MODE_AUDIO, false)) {
@@ -345,7 +353,7 @@
     }
 
     /**
-     * Enable the Le Audio profile for each of the Le Audio devices.
+     * Enable the Le Audio profile, VCP, and CSIP for each of the Le Audio devices.
      *
      * @param profile the LeAudio profile
      */
@@ -361,11 +369,19 @@
             disableProfileBeforeUserEnablesLeAudio(mProfileManager.getHeadsetProfile());
         }
 
+        LocalBluetoothProfile vcp = mProfileManager.getVolumeControlProfile();
+        LocalBluetoothProfile csip = mProfileManager.getCsipSetCoordinatorProfile();
         for (CachedBluetoothDevice leAudioDevice : mProfileDeviceMap.get(profile.toString())) {
             Log.d(TAG,
                     "device:" + leAudioDevice.getDevice().getAnonymizedAddress()
                             + "enable LE profile");
             profile.setEnabled(leAudioDevice.getDevice(), true);
+            if (vcp != null) {
+                vcp.setEnabled(leAudioDevice.getDevice(), true);
+            }
+            if (csip != null) {
+                csip.setEnabled(leAudioDevice.getDevice(), true);
+            }
         }
     }
 
