diff --git a/BoardConfig.mk b/BoardConfig.mk
index 6f4ed80..4211588 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -19,6 +19,10 @@
 BOARD_USES_GENERIC_AUDIO := false
 USE_CAMERA_STUB := true
 
+# Default values, possibly overridden by BoardConfigVendor.mk
+TARGET_BOARD_INFO_FILE := device/ti/panda/board-info.txt
+BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/ti/panda/bluetooth
+
 # Use the non-open-source parts, if they're present
 -include vendor/ti/panda/BoardConfigVendor.mk
 
diff --git a/audio/audio_hw.c b/audio/audio_hw.c
index 10574d7..d290d66 100644
--- a/audio/audio_hw.c
+++ b/audio/audio_hw.c
@@ -1506,21 +1506,21 @@
     return size * audio_stream_frame_size((struct audio_stream *)stream);
 }
 
-static uint32_t out_get_channels(const struct audio_stream *stream)
+static audio_channel_mask_t out_get_channels(const struct audio_stream *stream)
 {
     LOGFUNC("%s(%p)", __FUNCTION__, stream);
 
     return AUDIO_CHANNEL_OUT_STEREO;
 }
 
-static int out_get_format(const struct audio_stream *stream)
+static audio_format_t out_get_format(const struct audio_stream *stream)
 {
     LOGFUNC("%s(%p)", __FUNCTION__, stream);
 
     return AUDIO_FORMAT_PCM_16_BIT;
 }
 
-static int out_set_format(struct audio_stream *stream, int format)
+static int out_set_format(struct audio_stream *stream, audio_format_t format)
 {
     LOGFUNC("%s(%p)", __FUNCTION__, stream);
 
@@ -1694,15 +1694,7 @@
 
     /* only use resampler if required */
     if (out->config.rate != DEFAULT_OUT_SAMPLING_RATE) {
-        if (out->resampler) {
-            out->resampler->resample_from_input(out->resampler,
-                    (int16_t *)buffer,
-                    &in_frames,
-                    (int16_t *)out->buffer,
-                    &out_frames);
-            buf = out->buffer;
-        }
-        else {
+        if (!out->resampler) {
             ret = create_resampler(DEFAULT_OUT_SAMPLING_RATE,
                     MM_FULL_POWER_SAMPLING_RATE,
                     2,
@@ -1713,7 +1705,12 @@
                 goto exit;
             out->buffer = malloc(RESAMPLER_BUFFER_SIZE); /* todo: allow for reallocing */
         }
-
+        out->resampler->resample_from_input(out->resampler,
+                (int16_t *)buffer,
+                &in_frames,
+                (int16_t *)out->buffer,
+                &out_frames);
+        buf = out->buffer;
     } else {
         out_frames = in_frames;
         buf = (void *)buffer;
@@ -1868,7 +1865,7 @@
                                  in->config.channels);
 }
 
-static uint32_t in_get_channels(const struct audio_stream *stream)
+static audio_channel_mask_t in_get_channels(const struct audio_stream *stream)
 {
     struct omap4_stream_in *in = (struct omap4_stream_in *)stream;
 
@@ -1881,14 +1878,14 @@
     }
 }
 
-static int in_get_format(const struct audio_stream *stream)
+static audio_format_t in_get_format(const struct audio_stream *stream)
 {
     LOGFUNC("%s(%p)", __FUNCTION__, stream);
 
     return AUDIO_FORMAT_PCM_16_BIT;
 }
 
-static int in_set_format(struct audio_stream *stream, int format)
+static int in_set_format(struct audio_stream *stream, audio_format_t format)
 {
     LOGFUNC("%s(%p, %d)", __FUNCTION__, stream, format);
 
diff --git a/bluetooth/bdroid_buildcfg.h b/bluetooth/bdroid_buildcfg.h
new file mode 100644
index 0000000..aa5d012
--- /dev/null
+++ b/bluetooth/bdroid_buildcfg.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _BDROID_BUILDCFG_H
+#define _BDROID_BUILDCFG_H
+
+#define BTM_DEF_LOCAL_NAME   "Panda Nexus"
+
+#endif
diff --git a/device.mk b/device.mk
index e04afa2..d2f4c98 100644
--- a/device.mk
+++ b/device.mk
@@ -34,7 +34,6 @@
 	frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml
 
 PRODUCT_PACKAGES := \
-        make_ext4fs \
 	com.android.future.usb.accessory
 
 PRODUCT_PROPERTY_OVERRIDES := \
@@ -71,7 +70,6 @@
 
 # Filesystem management tools
 PRODUCT_PACKAGES += \
-	make_ext4fs \
 	setup_fs
 
 # BlueZ test tools
diff --git a/init.omap4pandaboard.rc b/init.omap4pandaboard.rc
index bac0fa2..eb9bdf4 100644
--- a/init.omap4pandaboard.rc
+++ b/init.omap4pandaboard.rc
@@ -1,17 +1,25 @@
 import init.omap4pandaboard.usb.rc
 
-on early-init
+on init
+    # See storage config details at http://source.android.com/tech/storage/
+    mkdir /mnt/shell/sdcard0 0700 shell shell
+    mkdir /storage/sdcard0 0000 root root
+
     export EXTERNAL_STORAGE /storage/sdcard0
-    mkdir /storage 0050 system sdcard_r
-    mkdir /storage/sdcard0 0000 system system
-    # for backwards compatibility
+    export ADB_EXTERNAL_STORAGE /mnt/shell/sdcard0/0
+    export MULTIUSER_EXTERNAL_STORAGE /mnt/shell/sdcard0
+
+    # Support legacy paths
     symlink /storage/sdcard0 /sdcard
     symlink /storage/sdcard0 /mnt/sdcard
 
+    # Save bugreports as owner
+    export BUGREPORT_WRITE_PATH /mnt/shell/sdcard0/0
+    export BUGREPORT_READ_PATH /storage/sdcard0
+
 on post-fs-data
-    # we will remap this as /storage/sdcard0 with the sdcard fuse tool
     mkdir /data/media 0770 media_rw media_rw
-    chown media_rw media_rw /data/media
+
     setprop vold.post_fs_data_done 1
     mkdir /data/misc/dhcp 0770 dhcp dhcp
     chown dhcp dhcp /data/misc/dhcp
@@ -63,10 +71,8 @@
 	user bluetooth
 	group bluetooth net_bt_admin
 
-# create virtual SD card at /storage/sdcard0, based on the /data/media directory
-# daemon will drop to user/group system/media_rw after initializing
-# underlying files in /data/media will be created with user and group media_rw (1023)
-service sdcard /system/bin/sdcard /data/media 1023 1023
+# virtual sdcard daemon running as media_rw (1023)
+service sdcard /system/bin/sdcard /data/media /mnt/shell/sdcard0 1023 1023
     class late_start
 
 service wpa_supplicant /system/bin/wpa_supplicant -Dnl80211 -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -dd
diff --git a/proprietary-blobs.txt b/proprietary-blobs.txt
index a6b0c7d..46f7fa9 100644
--- a/proprietary-blobs.txt
+++ b/proprietary-blobs.txt
@@ -14,7 +14,7 @@
 
 # This file is generated by device/common/generate-blob-lists.sh - DO NOT EDIT
 
-/system/vendor/bin/pvrsrvinit
+/system/vendor/bin/pvrsrvctl
 /system/vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
 /system/vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
 /system/vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
