diff --git a/self-extractors/broadcom/staging/device-partial.mk b/self-extractors/broadcom/staging/device-partial.mk
index 118c94a..21dd77f 100644
--- a/self-extractors/broadcom/staging/device-partial.mk
+++ b/self-extractors/broadcom/staging/device-partial.mk
@@ -14,4 +14,5 @@
 
 # Broadcom blob(s) necessary for Maguro hardware
 PRODUCT_PACKAGES := \
-    bcm4330
+    bcm4330 \
+    libbt-vendor
diff --git a/self-extractors/broadcom/staging/proprietary/Android.mk b/self-extractors/broadcom/staging/proprietary/Android.mk
index 888c48f..b7ca827 100644
--- a/self-extractors/broadcom/staging/proprietary/Android.mk
+++ b/self-extractors/broadcom/staging/proprietary/Android.mk
@@ -26,4 +26,14 @@
 LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/firmware
 include $(BUILD_PREBUILT)
 
+include $(CLEAR_VARS)
+LOCAL_MODULE := libbt-vendor
+LOCAL_MODULE_OWNER := broadcom
+LOCAL_SRC_FILES := libbt-vendor.so
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_SUFFIX := .so
+LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_SHARED_LIBRARIES)
+include $(BUILD_PREBUILT)
+
 endif
diff --git a/self-extractors/generate-packages.sh b/self-extractors/generate-packages.sh
index dd9e184..3ec8cca 100755
--- a/self-extractors/generate-packages.sh
+++ b/self-extractors/generate-packages.sh
@@ -35,7 +35,10 @@
 # 405518 = JRO03H
 # 463694 = JZO54G
 # end jb-dev
-BRANCH=jb-dev
+# start jb-mr1-dev
+# 465036 = JOO75
+# end jb-mr1-dev
+BRANCH=jb-mr1-dev
 if test $BRANCH=ics-mr1
 then
   ZIP=yakju-ota-299849.zip
@@ -46,11 +49,16 @@
   ZIP=yakju-ota-463694.zip
   BUILD=jzo54g
 fi # jb-dev
+if test $BRANCH=jb-mr1-dev
+then
+  ZIP=yakju-ota-465036.zip
+  BUILD=joo75
+fi # jb-dev
 ROOTDEVICE=maguro
 DEVICE=maguro
 MANUFACTURER=samsung
 
-for COMPANY in broadcom csr imgtec invensense nxp samsung ti
+for COMPANY in broadcom csr imgtec invensense nxp samsung ti widevine
 do
   echo Processing files from $COMPANY
   rm -rf tmp
@@ -61,6 +69,7 @@
   broadcom)
     TO_EXTRACT="\
             system/vendor/firmware/bcm4330.hcd \
+            system/vendor/lib/libbt-vendor.so \
             "
     ;;
   csr)
@@ -108,6 +117,11 @@
             system/vendor/firmware/ducati-m3.bin \
             "
     ;;
+  widevine)
+    TO_EXTRACT="\
+            system/lib/libdrmdecrypt.so \
+            "
+    ;;
   esac
   echo \ \ Extracting files from OTA package
   for ONE_FILE in $TO_EXTRACT
diff --git a/self-extractors/root/BoardConfigVendor.mk b/self-extractors/root/BoardConfigVendor.mk
index ca10d74..7a62051 100644
--- a/self-extractors/root/BoardConfigVendor.mk
+++ b/self-extractors/root/BoardConfigVendor.mk
@@ -21,3 +21,4 @@
 -include vendor/nxp/$(LOCAL_STEM)
 -include vendor/samsung/$(LOCAL_STEM)
 -include vendor/ti/$(LOCAL_STEM)
+-include vendor/widevine/$(LOCAL_STEM)
diff --git a/self-extractors/root/device-vendor.mk b/self-extractors/root/device-vendor.mk
index 833cbcd..a6187df 100644
--- a/self-extractors/root/device-vendor.mk
+++ b/self-extractors/root/device-vendor.mk
@@ -21,3 +21,4 @@
 $(call inherit-product-if-exists, vendor/nxp/$(LOCAL_STEM))
 $(call inherit-product-if-exists, vendor/samsung/$(LOCAL_STEM))
 $(call inherit-product-if-exists, vendor/ti/$(LOCAL_STEM))
+$(call inherit-product-if-exists, vendor/widevine/$(LOCAL_STEM))
diff --git a/self-extractors/widevine/COPYRIGHT b/self-extractors/widevine/COPYRIGHT
new file mode 100644
index 0000000..db593ae
--- /dev/null
+++ b/self-extractors/widevine/COPYRIGHT
@@ -0,0 +1 @@
+# (C) Google Inc.
diff --git a/self-extractors/widevine/LICENSE b/self-extractors/widevine/LICENSE
new file mode 100644
index 0000000..11f8237
--- /dev/null
+++ b/self-extractors/widevine/LICENSE
@@ -0,0 +1,218 @@
+THIS DEVELOPER SOFTWARE LICENSE AGREEMENT (THE "AGREEMENT") IS A LEGALLY
+BINDING AGREEMENT BETWEEN Google Inc. ("LICENSOR") AND
+YOU OR THE LEGAL ENTITY YOU REPRESENT ("You" or its possessive, "Your"). BY
+TYPING "I ACCEPT" WHERE INDICATED YOU ACKNOWLEDGE THAT YOU HAVE READ THIS
+AGREEMENT, UNDERSTAND IT AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS. IF
+YOU DO NOT AGREE TO THESE TERMS YOU MUST DISCONTINUE THE INSTALLATION PROCESS
+AND YOU SHALL NOT USE THE SOFTWARE OR RETAIN ANY COPIES OF THE SOFTWARE OR
+DOCUMENTATION. ANY USE OR POSSESSION OF THE SOFTWARE BY YOU IS SUBJECT TO THE
+TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT. IF THE SOFTWARE IS INSTALLED
+ON A COMPUTER OWNED BY A CORPORATION OR OTHER LEGAL ENTITY, THEN YOU REPRESENT
+AND WARRANT THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY TO THE TERMS AND
+CONDITIONS OF THIS AGREEMENT.
+
+   1.  Special Definitions
+
+      a.  The term "Android" means the open source mobile platform, software
+          stack, operating system, middleware, application programming
+          interfaces and mobile applications under the trade-name "Android"
+          distributed at Android.com.
+
+      b.  The term "Android Applications" means a software application or
+          open-source contribution developed by You, designed to operate with
+          Android that does not contain or incorporate any of the Software.
+
+      c.  The term "Authorized Android Enabled Device" means only the device
+          identified on the site from which You downloaded the Software.
+          The term "Software" means the Licensor's proprietary software and
+          libraries in object code form, designed for use on the Authorized
+          Android Enabled Device.
+
+      d.  The term "Authorized Android Enabled Device Software" means a
+          packaged build for Authorized Android Enabled Devices, consisting of
+          files suitable for installation on an Authorized Android Enabled
+          Device using a mechanism such as fastboot mode or recovery mode.
+
+   2.  License Grant
+
+      a.  Subject to the terms of this Agreement, Licensor hereby grants to
+          You, free of charge, a non-exclusive, non-sublicensable,
+          non-transferable, limited license, during the term of this Agreement,
+          to download, install and use the Software internally in
+          machine-readable (i.e., object code) form and the Documentation for
+          non-commercial use on an Authorized Android Enabled Device and
+          non-commercial redistribution of the Authorized Android Enabled
+          Device Software (the "Limited Purpose"). You may grant your end users
+          the right to use the Software for the Limited Purpose. The license to
+          the Software granted to You hereunder is solely for the Limited
+          Purpose set forth in this section, and the Software shall not be used
+          for any other purpose.
+
+   3.  Restrictions
+
+      a.  Retention of Rights. The entire right, title and interest in the
+          Software shall remain with Licensor and, unless specified in writing
+          hereunder, no rights are granted to any of the Software. Except for
+          the right to use the Software for the Limited Purpose, the delivery
+          of the Software to You does not convey to You any intellectual
+          property rights in the Software, including, but not limited to any
+          rights under any patent, trademark, copyright, or trade secret.
+          Neither the delivery of the Software to You nor any terms set forth
+          herein shall be construed to grant to You, either expressly, by
+          implication or by way of estoppel, any license under any patents or
+          other intellectual property rights covering or relating to any other
+          product or invention or any combination of the Software with any
+          other product. Any rights not expressly granted to You herein are
+          reserved by Licensor.
+
+      b.  No Commercialization or Distribution of the Software and
+          Documentation. Except as expressly provided in Section 2 of this
+          Agreement, You shall have no right to (i) copy, disclose, distribute,
+          publically perform, publically display, transfer, alter, modify,
+          translate, disassemble, decompile, reverse engineer, or adapt the
+          Software and Documentation, or any portion thereof, or create any
+          derivative works based thereon; (ii) rent, lease, assign, sublicense,
+          resell, disclose or otherwise transfer the Software and Documentation
+          in whole or in part to any third party (iii) use the Software and
+          Documentation except for the Limited Purpose, (iv) remove or alter
+          any of the copyright or proprietary notices contained in any of the
+          Software and Documentation. For the purposes of clarity, nothing in
+          this Agreement prohibits You from making and distributing Android
+          Applications under commercial or non-commercial terms, provided that
+          You shall not contain, incorporate, and/or compile the Software or
+          any of its derivative works, in whole or in part, into Your Android
+          Applications and/or any software/devices created by You or by third
+          parties acting on Your behalf. You and any such third party shall
+          comply with all of the terms and conditions of this Agreement.
+
+      c.  No Reverse Engineering. Except for any portions of the Software
+          provided to You in source code format and except for any third party
+          code distributed with the Software that is licensed under contrary
+          terms, You will not reverse engineer, disassemble,
+          decompile, or translate the Software, or otherwise attempt to derive
+          the source code version of the Software, except if and to the extent
+          expressly permitted under any applicable law.
+
+      d.  Third Party Software. You agree that Android may contain third party
+          software. You agree that you may not distribute such third party
+          software for any purpose without appropriate licenses from the
+          applicable third party or parties.
+
+      e.  No Transfer or Assignment. You shall not assign any of its rights or
+          obligations under this Agreement. Any attempted assignment in
+          contravention of this Section shall be void.
+
+   4.  Indemnity
+
+      a.  You agree to indemnify and hold harmless Licensor and its officers,
+          directors, customers, employees and successors and assigns (each an
+          "Indemnified Party") against any and all claims, demands, causes of
+          action, losses, liabilities, damages, costs and expenses, incurred by
+          the Indemnified Party (including but not limited to costs of defense,
+          investigation and reasonable attorney's fees) arising out of,
+          resulting from or related to (i) any software, products,
+          documentation, content, materials or derivative works created or
+          developed by You using the Software which causes an infringement of
+          any patent, copyright, trademark, trade secret, or other property,
+          publicity or privacy rights of any third parties arising in any
+          jurisdiction anywhere in the world, (ii) the download, distribution,
+          installation, storage, execution, use or transfer of such software,
+          products, documentation, content, materials or derivative works by
+          any person or entity, and/or (iii) any breach of this Agreement by
+          You. If requested by an Indemnified Party, You agree to defend such
+          Indemnified Party in connection with any third party claims, demands,
+          or causes of action resulting from, arising out of or in connection
+          with any of the foregoing.
+
+   5.  Limitation of Liability
+
+      a.  TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE LAWS, UNDER NO
+          CIRCUMSTANCES, INCLUDING WITHOUT LIMITATION NEGLIGENCE, SHALL
+          LICENSOR, ITS AFFILIATES AND/OR ITS DIRECTORS, OFFICERS, EMPLOYEES OR
+          AGENTS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE OR
+          CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOSS
+          OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
+          INFORMATION AND THE LIKE) ARISING OUT OF OR IN CONNECTION WITH THE
+          SOFTWARE OR ANY DOWNLOAD, INSTALLATION OR USE OF, OR INABILITY TO
+          USE, THE SOFTWARE, EVEN IF LICENSOR HAS BEEN ADVISED OF THE
+          POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE
+          LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL
+          DAMAGES SO THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY OR MAY BE
+          LIMITED. IN NO EVENT SHALL LICENSOR'S TOTAL AGGREGATE LIABILITY TO
+          YOU FOR ANY AND ALL DAMAGES, LOSSES, CLAIMS AND CAUSES OF ACTIONS
+          (WHETHER IN CONTRACT, TORT, INCLUDING NEGLIGENCE, INDEMNIFICATION OR
+          OTHERWISE) EXCEED ONE HUNDRED U.S. DOLLARS (US$100). THE LIMITATIONS
+          SET FORTH IN THIS PARAGRAPH SHALL BE DEEMED TO APPLY TO THE MAXIMUM
+          EXTENT PERMITTED BY APPLICABLE LAW. THE PARTIES HAVE FULLY CONSIDERED
+          THE FOREGOING ALLOCATION OF RISK AND FIND IT REASONABLE, AND THAT THE
+          FOREGOING LIMITATIONS IN THIS PARAGRAPH ARE AN ESSENTIAL BASIS OF
+          THE BARGAIN BETWEEN THE PARTIES.
+
+   6.  No Warranty
+
+      a.  LICENSOR MAKES NO WARRANTIES, EXPRESS OR IMPLIED, WITH RESPECT TO THE
+          SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS AGREEMENT, INCLUDING
+          BUT NOT LIMITED TO ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A
+          PARTICULAR PURPOSE OR AGAINST INFRINGEMENT, OR ANY EXPRESS OR IMPLIED
+          WARRANTY ARISING OUT OF TRADE USAGE OR OUT OF A COURSE OF DEALING OR
+          COURSE OF PERFORMANCE. NOTHING CONTAINED IN THIS AGREEMENT SHALL BE
+          CONSTRUED AS A WARRANTY OR REPRESENTATION BY LICENSOR (I) AS TO THE
+          VALIDITY OR SCOPE OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL
+          PROPERTY RIGHT AND (II) THAT ANY MANUFACTURE OR USE WILL BE FREE FROM
+          INFRINGEMENT OF PATENTS, COPYRIGHTS OR OTHER INTELLECTUAL PROPERTY
+          RIGHTS OF OTHERS, AND IT SHALL BE THE SOLE RESPONSIBILITY OF YOU TO
+          MAKE SUCH DETERMINATION AS IS NECESSARY WITH RESPECT TO THE
+          ACQUISITION OF LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY
+          OF THIRD PARTIES. LICENSOR SHALL NOT HAVE ANY OBLIGATION TO PROVIDE
+          ANY TECHNICAL SUPPORT OF THE SOFTWARE UNDER THIS AGREEMENT.
+
+   7.  Term and Termination
+
+      a.  This Agreement shall be effective on the date You accept this
+          Agreement and shall remain in effect until terminated as provided
+          herein. You may terminate the Agreement at any time by deleting and
+          destroying all copies of the Software and all related information in
+          Your possession or control. This Agreement terminates immediately and
+          automatically, with or without notice, if You fail to comply with any
+          provision hereof.  Additionally, Licensor may at any time terminate
+          this Agreement, without cause, upon notice to You. Upon termination
+          You must delete or destroy all copies of the Software in Your
+          possession, and the license granted to You in this Agreement shall
+          terminate. Sections 3, 4, 5, 6 and 8 shall survive the termination of
+          this Agreement.
+
+   8.  Miscellaneous
+
+      a.  Governing Law. This Agreement is governed and interpreted in
+          accordance with the laws of the State of California without giving
+          effect to its conflict of laws provisions. The United Nations
+          Convention on Contracts for the International Sale of Goods is
+          expressly disclaimed and shall not apply. Any claim arising out of or
+          related to this Agreement must be brought exclusively in a federal or
+          state court located in Santa Clara County, California and You consent
+          to the jurisdiction and venue of such courts.
+
+      b.  Waiver and Severability. The failure of either party to require
+          performance by the other party of any provision of this Agreement
+          shall not affect the full right to require such performance at any
+          time thereafter; nor shall the waiver by either party of a breach of
+          any provision of this Agreement be taken or held to be a waiver of
+          the provision itself. Severability. If any provision of this
+          Agreement is unenforceable or invalid under any applicable law or is
+          so held by applicable court decision, such unenforceability or
+          invalidity shall not render this Agreement unenforceable or invalid
+          as a whole, and such provision shall be changed and interpreted so as
+          to best accomplish the objectives of such unenforceable or invalid
+          provision within the limits of applicable law or applicable court
+          decisions.
+
+      c.  Amendment and Modification. This Agreement and any of its terms and
+          provisions may only be amended, modified, supplemented or waived in a
+          writing signed by both parties hereto.
+
+      d.  Compliance with Laws. You shall comply with all applicable laws,
+          rules, and regulations in connection with its activities under this
+          Agreement.
+
+      e.  Entire Agreement. This Agreement completely and exclusively states
+          the agreement between You and Licensor regarding this subject matter.
diff --git a/self-extractors/widevine/staging/BoardConfigPartial.mk b/self-extractors/widevine/staging/BoardConfigPartial.mk
new file mode 100644
index 0000000..01a0ff3
--- /dev/null
+++ b/self-extractors/widevine/staging/BoardConfigPartial.mk
@@ -0,0 +1,13 @@
+# 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.
diff --git a/self-extractors/widevine/staging/device-partial.mk b/self-extractors/widevine/staging/device-partial.mk
new file mode 100644
index 0000000..649264c
--- /dev/null
+++ b/self-extractors/widevine/staging/device-partial.mk
@@ -0,0 +1,17 @@
+# 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.
+
+# Widevine blob(s) necessary for Maguro hardware
+PRODUCT_PACKAGES := \
+    libdrmdecrypt
diff --git a/self-extractors/widevine/staging/proprietary/Android.mk b/self-extractors/widevine/staging/proprietary/Android.mk
new file mode 100644
index 0000000..46500ce
--- /dev/null
+++ b/self-extractors/widevine/staging/proprietary/Android.mk
@@ -0,0 +1,29 @@
+# Copyright (C) 2011 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.
+
+LOCAL_PATH := $(call my-dir)
+
+ifeq ($(TARGET_DEVICE),maguro)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libdrmdecrypt
+LOCAL_SRC_FILES := libdrmdecrypt.so
+LOCAL_MODULE_SUFFIX := .so
+LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+LOCAL_MODULE_PATH := $(TARGET_OUT)/lib
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_OWNER := widevine
+include $(BUILD_PREBUILT)
+
+endif
