diff --git a/BoardConfig.mk b/BoardConfig.mk
index 9af06b8..32e6fd7 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -30,7 +30,6 @@
 
 BOARD_HAVE_BLUETOOTH := true
 TARGET_NO_BOOTLOADER := true
-TARGET_NO_RECOVERY := true
 
 BOARD_KERNEL_BASE := 0x80000000
 #BOARD_KERNEL_CMDLINE :=
@@ -39,6 +38,12 @@
 TARGET_BOARD_PLATFORM := omap4
 TARGET_BOOTLOADER_BOARD_NAME := panda 
 
+# Recovery
+TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888"
+TARGET_RECOVERY_UI_LIB := librecovery_ui_panda
+# device-specific extensions to the updater binary
+TARGET_RELEASETOOLS_EXTENSIONS := device/ti/panda
+
 BOARD_EGL_CFG := device/ti/panda/egl.cfg
 
 #BOARD_USES_HGL := true
diff --git a/board-info.txt b/board-info.txt
new file mode 100644
index 0000000..3721eb1
--- /dev/null
+++ b/board-info.txt
@@ -0,0 +1,2 @@
+require board=panda
+
diff --git a/device.mk b/device.mk
index 708dd43..2eaad17 100644
--- a/device.mk
+++ b/device.mk
@@ -28,6 +28,7 @@
 	device/ti/panda/ueventd.omap4pandaboard.rc:root/ueventd.omap4pandaboard.rc \
 	device/ti/panda/media_profiles.xml:system/etc/media_profiles.xml \
 	device/ti/panda/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \
+        device/ti/panda/gpio-keys.kl:system/usr/keylayout/gpio-keys.kl \
 	frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \
 	frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \
 	frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml
@@ -70,13 +71,19 @@
 
 # Filesystem management tools
 PRODUCT_PACKAGES += \
-	make_ext4fs
+	make_ext4fs \
+	setup_fs
 
 # BlueZ test tools
 PRODUCT_PACKAGES += \
 	hciconfig \
 	hcitool
 
+PRODUCT_PACKAGES += send_bug
+PRODUCT_COPY_FILES += \
+	system/extras/bugmailer/bugmailer.sh:system/bin/bugmailer.sh \
+	system/extras/bugmailer/send_bug:system/bin/send_bug
+
 $(call inherit-product-if-exists, vendor/ti/panda/device-vendor.mk)
 $(call inherit-product, frameworks/native/build/tablet-dalvik-heap.mk)
 $(call inherit-product, hardware/ti/omap4xxx/omap4.mk)
diff --git a/gpio-keys.kl b/gpio-keys.kl
new file mode 100644
index 0000000..f7d7324
--- /dev/null
+++ b/gpio-keys.kl
@@ -0,0 +1,15 @@
+# Copyright (C) 2010 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.
+
+key 102   HOME       WAKE
diff --git a/init.omap4pandaboard.rc b/init.omap4pandaboard.rc
index fd16fc4..bac0fa2 100644
--- a/init.omap4pandaboard.rc
+++ b/init.omap4pandaboard.rc
@@ -25,21 +25,38 @@
 	mount_all /fstab.omap4pandaboard
 
 # change permissions for Bluetooth/FM/GPS
-    chmod 0600 /sys/class/rfkill/rfkill0/state
-    chown bluetooth bluetooth /sys/class/rfkill/rfkill0/state
-    chmod 0600 /dev/ttyO1
-    chown bluetooth bluetooth /dev/ttyO1
+	chmod 0600 /sys/class/rfkill/rfkill0/state
+	chown bluetooth bluetooth /sys/class/rfkill/rfkill0/state
+	chmod 0600 /dev/ttyO1
+	chown bluetooth bluetooth /dev/ttyO1
 
 
 # take a wakelock on boot until PM is working
 	write /sys/power/wake_lock hack
 
+# bugreport is triggered by holding down the user button and left mouse button
+service bugreport /system/bin/bugmailer.sh -v
+	class main
+	disabled
+	oneshot
+	keycodes 102 272
+
+
 service pvrsrvinit /vendor/bin/pvrsrvinit
 	class core
 	user root
 	group root
 	oneshot
 
+# create filesystems if necessary
+service setup_fs /system/bin/setup_fs \
+		/dev/block/platform/omap/omap_hsmmc.0/by-name/cache \
+		/dev/block/platform/omap/omap_hsmmc.0/by-name/userdata
+        class core
+        user root
+        group root
+        oneshot
+
 #shared transport user space mgr service for Bluetooth, FM and GPS
 service uim /system/bin/uim-sysfs
 	class core
diff --git a/kernel b/kernel
index e4001ef..81e3635 100755
--- a/kernel
+++ b/kernel
Binary files differ
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index 9fd3f40..0ae26e5 100644
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -40,15 +40,8 @@
     <!-- the 6th element indicates boot-time dependency-met value. -->
     <string-array translatable="false" name="networkAttributes">
         <item>"wifi,1,1,1,-1,true"</item>
-       <item>"mobile,0,0,0,-1,true"</item>
-        <item>"mobile_mms,2,0,2,60000,true"</item>
-        <item>"mobile_supl,3,0,2,60000,true"</item>
-        <item>"mobile_hipri,5,0,3,60000,true"</item>
-        <item>"mobile_fota,10,0,2,60000,true"</item>
-        <item>"mobile_ims,11,0,2,60000,true"</item>
-        <item>"mobile_cbs,12,0,2,60000,true"</item>
         <item>"wifi_p2p,13,1,0,-1,true"</item>
-        <item>"ethernet,9,9,0,-1,true"</item>
+        <item>"ethernet,9,9,2,-1,true"</item>
     </string-array>
 
     <!-- This string array should be overridden by the device to present a list of radio
@@ -58,7 +51,6 @@
                       [# simultaneous connection types]"  -->
     <string-array translatable="false" name="radioAttributes">
         <item>"1,1"</item>
-        <item>"0,1"</item>
         <item>"9,1"</item>
     </string-array>
 
diff --git a/recovery/Android.mk b/recovery/Android.mk
new file mode 100644
index 0000000..5055f6a
--- /dev/null
+++ b/recovery/Android.mk
@@ -0,0 +1,15 @@
+ifeq ($(TARGET_DEVICE),panda)
+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_C_INCLUDES += bootable/recovery
+LOCAL_SRC_FILES := recovery_ui.c
+
+# should match TARGET_RECOVERY_UI_LIB set in BoardConfig.mk
+LOCAL_MODULE := librecovery_ui_panda
+
+include $(BUILD_STATIC_LIBRARY)
+
+endif
diff --git a/recovery/recovery_ui.c b/recovery/recovery_ui.c
new file mode 100644
index 0000000..cf8b2fc
--- /dev/null
+++ b/recovery/recovery_ui.c
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2010 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.
+ */
+
+#include <linux/input.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <string.h>
+
+#include "recovery_ui.h"
+#include "common.h"
+
+char* MENU_HEADERS[] = { "Volume up/down to move highlight;",
+                         "power button to select.",
+                         "",
+                         NULL };
+
+char* MENU_ITEMS[] = { "reboot system now",
+                       "apply update from /sdcard",
+                       "wipe data/factory reset",
+                       "wipe cache partition",
+                       NULL };
+
+void device_ui_init(UIParameters* ui_parameters) {
+}
+
+int device_recovery_start() {
+    // recovery can get started before the kernel has created the EMMC
+    // devices, which will make the wipe_data operation fail (trying
+    // to open a device that doesn't exist).  Hold up the start of
+    // recovery for up to 5 seconds waiting for the userdata partition
+    // block device to exist.
+
+    const char* fn = "/dev/block/platform/mmci-omap-hs.0/by-name/userdata";
+
+    int tries = 0;
+    int ret;
+    struct stat buf;
+    do {
+        ++tries;
+        ret = stat(fn, &buf);
+        if (ret) {
+            printf("try %d: %s\n", tries, strerror(errno));
+            sleep(1);
+        }
+    } while (ret && tries < 5);
+    if (!ret) {
+        printf("stat() of %s succeeded on try %d\n", fn, tries);
+    } else {
+        printf("failed to stat %s\n", fn);
+    }
+
+    // We let recovery attempt to carry on even if the stat never
+    // succeeded.
+
+    return 0;
+}
+
+int device_toggle_display(volatile char* key_pressed, int key_code) {
+    // hold power and press volume-up
+    return key_pressed[KEY_POWER] && key_code == KEY_VOLUMEUP;
+}
+
+int device_reboot_now(volatile char* key_pressed, int key_code) {
+    // Reboot if the power key is pressed five times in a row, with
+    // no other keys in between.
+    static int presses = 0;
+    if (key_code == KEY_POWER) {   // power button
+        ++presses;
+        return presses == 5;
+    } else {
+        presses = 0;
+        return 0;
+    }
+}
+
+int device_handle_key(int key_code, int visible) {
+    if (visible) {
+        switch (key_code) {
+            case KEY_DOWN:
+            case KEY_VOLUMEDOWN:
+                return HIGHLIGHT_DOWN;
+
+            case KEY_UP:
+            case KEY_VOLUMEUP:
+                return HIGHLIGHT_UP;
+
+            case KEY_ENTER:
+            case KEY_POWER:   // crespo power
+                return SELECT_ITEM;
+        }
+    }
+
+    return NO_ACTION;
+}
+
+int device_perform_action(int which) {
+    return which;
+}
+
+int device_wipe_data() {
+    return 0;
+}
diff --git a/self-extractors/generate-packages.sh b/self-extractors/generate-packages.sh
index da477e0..53c6b50 100755
--- a/self-extractors/generate-packages.sh
+++ b/self-extractors/generate-packages.sh
@@ -16,9 +16,8 @@
 
 (cd ../../../../out/target/product/panda ; zip -r ../../../../device/ti/panda/self-extractors/full_panda-pseudo_ota.zip system)
 
-# 147483 = IRK19
 ZIP=full_panda-pseudo_ota.zip
-BUILD=master
+BUILD=imm76i
 ROOTDEVICE=panda
 DEVICE=panda
 MANUFACTURER=ti
