diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index e754d6a..4b8ee88 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2008,7 +2008,6 @@
                 <action android:name="android.intent.action.DOCK_EVENT" />
                 <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
                 <action android:name="android.bluetooth.headset.action.STATE_CHANGED" />
-                <action android:name="android.bluetooth.a2dp.action.SINK_STATE_CHANGED" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </receiver>
@@ -3344,7 +3343,7 @@
                        android:value="true" />
         </activity-alias>
 
-        <activity-alias android:name="UserDashboardAlias"
+        <activity-alias android:name="UsersDashboardAlias"
                         android:targetActivity="Settings$UserSettingsActivity">
             <intent-filter android:priority="8">
                 <action android:name="com.android.settings.action.SETTINGS"/>
@@ -3353,6 +3352,8 @@
                        android:value="com.android.settings.users.UserSettings" />
             <meta-data android:name="com.android.settings.category"
                        android:value="com.android.settings.category.ia.accounts" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true" />
         </activity-alias>
 
         <activity-alias android:name="AppDefaultDashboardAlias"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 22d8031..396db4a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6041,6 +6041,10 @@
     <!-- Option title for the default sound, context based on screen -->
     <string name="default_sound">Default sound</string>
 
+    <!-- Wifi Picker defaults-->
+    <!-- The minimum kbps threshold needed to use badge; value is a map with key corresponding to
+    the badge enum in ScoredNetworks (SD, HD etc) and value throughput in kbps -->
+    <string name="wifi_badging_thresholds_default" translatable="false">10:3000,20:5000,30:25000</string>
 
     <!-- Sounds and Notification -->
     <!-- Sound: Dashboard summary indicating the volume of ringtone. example: Ring volume at 20%.
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 2c50c5f..abf0154 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -28,6 +28,7 @@
 import android.bluetooth.BluetoothA2dp;
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothCodecConfig;
+import android.bluetooth.BluetoothCodecStatus;
 import android.bluetooth.BluetoothProfile;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
@@ -1795,12 +1796,18 @@
     private void updateBluetoothA2dpConfigurationValues() {
         int index;
         String[] summaries;
+        BluetoothCodecStatus codecStatus = null;
         BluetoothCodecConfig codecConfig = null;
+        BluetoothCodecConfig[] codecsLocalCapabilities = null;
+        BluetoothCodecConfig[] codecsSelectableCapabilities = null;
         String streaming;
 
         synchronized (mBluetoothA2dpLock) {
             if (mBluetoothA2dp != null) {
-                codecConfig = mBluetoothA2dp.getCodecConfig();
+                codecStatus = mBluetoothA2dp.getCodecStatus();
+                codecConfig = codecStatus.getCodecConfig();
+                codecsLocalCapabilities = codecStatus.getCodecsLocalCapabilities();
+                codecsSelectableCapabilities = codecStatus.getCodecsSelectableCapabilities();
             }
         }
         if (codecConfig == null)
@@ -2643,7 +2650,15 @@
     private BroadcastReceiver mBluetoothA2dpReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
-            updateBluetoothA2dpConfigurationValues();
+            Log.d(TAG, "mBluetoothA2dpReceiver.onReceive intent=" + intent);
+            String action = intent.getAction();
+
+            if (BluetoothA2dp.ACTION_CODEC_CONFIG_CHANGED.equals(action)) {
+                BluetoothCodecStatus codecStatus =
+                    (BluetoothCodecStatus)intent.getParcelableExtra(BluetoothCodecStatus.EXTRA_CODEC_STATUS);
+                Log.d(TAG, "Received BluetoothCodecStatus=" + codecStatus);
+                updateBluetoothA2dpConfigurationValues();
+            }
         }
     };
 
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index 2f0dff3..818e45f 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -287,6 +287,7 @@
             "com.android.settings.DisplayDashboardAlias",
             "com.android.settings.SoundDashboardAlias",
             "com.android.settings.SecurityDashboardAlias",
+            "com.android.settings.UsersDashboardAlias",
             Settings.UserAndAccountDashboardActivity.class.getName(),
             Settings.SystemDashboardActivity.class.getName(),
             Settings.SupportDashboardActivity.class.getName(),
