diff --git a/src/com/android/services/telephony/ImsConference.java b/src/com/android/services/telephony/ImsConference.java
index 38cb4a3..6c4f48e 100644
--- a/src/com/android/services/telephony/ImsConference.java
+++ b/src/com/android/services/telephony/ImsConference.java
@@ -234,7 +234,7 @@
         setConferenceHost(conferenceHost);
 
         int capabilities = Connection.CAPABILITY_SUPPORT_HOLD | Connection.CAPABILITY_HOLD |
-                Connection.CAPABILITY_MUTE;
+                Connection.CAPABILITY_MUTE | Connection.CAPABILITY_CONFERENCE_HAS_NO_CHILDREN;
 
         capabilities = applyVideoCapabilities(capabilities, mConferenceHost.getConnectionCapabilities());
         setConnectionCapabilities(capabilities);
@@ -451,21 +451,28 @@
      * Updates the manage conference capability of the conference.  Where there are one or more
      * conference event package participants, the conference management is permitted.  Where there
      * are no conference event package participants, conference management is not permitted.
+     * <p>
+     * Note: We add and remove {@link Connection#CAPABILITY_CONFERENCE_HAS_NO_CHILDREN} to ensure
+     * that the conference is represented appropriately on Bluetooth devices.
      */
     private void updateManageConference() {
         boolean couldManageConference = can(Connection.CAPABILITY_MANAGE_CONFERENCE);
         boolean canManageConference = !mConferenceParticipantConnections.isEmpty();
-        Log.v(this, "updateManageConference was:%s is:%s", couldManageConference ? "Y" : "N",
+        Log.v(this, "updateManageConference was :%s is:%s", couldManageConference ? "Y" : "N",
                 canManageConference ? "Y" : "N");
 
         if (couldManageConference != canManageConference) {
-            int newCapabilities = getConnectionCapabilities();
+            int capabilities = getConnectionCapabilities();
 
             if (canManageConference) {
-                addCapability(Connection.CAPABILITY_MANAGE_CONFERENCE);
+                capabilities |= Connection.CAPABILITY_MANAGE_CONFERENCE;
+                capabilities &= ~Connection.CAPABILITY_CONFERENCE_HAS_NO_CHILDREN;
             } else {
-                removeCapability(Connection.CAPABILITY_MANAGE_CONFERENCE);
+                capabilities &= ~Connection.CAPABILITY_MANAGE_CONFERENCE;
+                capabilities |= Connection.CAPABILITY_CONFERENCE_HAS_NO_CHILDREN;
             }
+
+            setConnectionCapabilities(capabilities);
         }
     }
 
