diff --git a/media/mtp/MtpDevice.cpp b/media/mtp/MtpDevice.cpp
index 8ad39dc..e058a5a 100644
--- a/media/mtp/MtpDevice.cpp
+++ b/media/mtp/MtpDevice.cpp
@@ -49,7 +49,8 @@
         mDeviceInfo(NULL),
         mID(usb_device_get_unique_id(device)),
         mSessionID(0),
-        mTransactionID(0)
+        mTransactionID(0),
+        mReceivedResponse(false)
 {
 }
 
@@ -513,6 +514,7 @@
 
 bool MtpDevice::sendRequest(MtpOperationCode operation) {
     LOGV("sendRequest: %s\n", MtpDebug::getOperationCodeName(operation));
+    mReceivedResponse = false;
     mRequest.setOperationCode(operation);
     if (mTransactionID > 0)
         mRequest.setTransactionID(mTransactionID++);
@@ -535,6 +537,14 @@
     int ret = mData.read(mEndpointIn);
     LOGV("readData returned %d\n", ret);
     if (ret >= MTP_CONTAINER_HEADER_SIZE) {
+        if (mData.getContainerType() == MTP_CONTAINER_TYPE_RESPONSE) {
+            LOGD("got response packet instead of data packet");
+            // we got a response packet rather than data
+            // copy it to mResponse
+            mResponse.copyFrom(mData);
+            mReceivedResponse = true;
+            return false;
+        }
         mData.dump();
         return true;
     }
@@ -552,12 +562,15 @@
 
 MtpResponseCode MtpDevice::readResponse() {
     LOGV("readResponse\n");
+    if (mReceivedResponse) {
+        mReceivedResponse = false;
+        return mResponse.getResponseCode();
+    }
     int ret = mResponse.read(mEndpointIn);
     if (ret >= MTP_CONTAINER_HEADER_SIZE) {
         mResponse.dump();
         return mResponse.getResponseCode();
-    }
-    else {
+    } else {
         LOGD("readResponse failed\n");
         return -1;
     }
diff --git a/media/mtp/MtpDevice.h b/media/mtp/MtpDevice.h
index 6ffbd24..67bb85f 100644
--- a/media/mtp/MtpDevice.h
+++ b/media/mtp/MtpDevice.h
@@ -53,6 +53,8 @@
     MtpRequestPacket        mRequest;
     MtpDataPacket           mData;
     MtpResponsePacket       mResponse;
+    // set to true if we received a response packet instead of a data packet
+    bool                    mReceivedResponse;
 
     // to ensure only one MTP transaction at a time
     Mutex                   mMutex;
diff --git a/media/mtp/MtpPacket.cpp b/media/mtp/MtpPacket.cpp
index bd6196f..a885249 100644
--- a/media/mtp/MtpPacket.cpp
+++ b/media/mtp/MtpPacket.cpp
@@ -84,6 +84,13 @@
     LOGV("\n");
 }
 
+void MtpPacket::copyFrom(const MtpPacket& src) {
+    int length = src.mPacketSize;
+    allocate(length);
+    mPacketSize = length;
+    memcpy(mBuffer, src.mBuffer, length);
+}
+
 uint16_t MtpPacket::getUInt16(int offset) const {
     return ((uint16_t)mBuffer[offset + 1] << 8) | (uint16_t)mBuffer[offset];
 }
@@ -113,6 +120,10 @@
     putUInt16(MTP_CONTAINER_CODE_OFFSET, code);
 }
 
+uint16_t MtpPacket::getContainerType() const {
+    return getUInt16(MTP_CONTAINER_TYPE_OFFSET);
+}
+
 MtpTransactionID MtpPacket::getTransactionID() const {
     return getUInt32(MTP_CONTAINER_TRANSACTION_ID_OFFSET);
 }
diff --git a/media/mtp/MtpPacket.h b/media/mtp/MtpPacket.h
index 9c8d6da..73963a3 100644
--- a/media/mtp/MtpPacket.h
+++ b/media/mtp/MtpPacket.h
@@ -43,10 +43,13 @@
 
     void                allocate(int length);
     void                dump();
+    void                copyFrom(const MtpPacket& src);
 
     uint16_t            getContainerCode() const;
     void                setContainerCode(uint16_t code);
 
+    uint16_t            getContainerType() const;
+
     MtpTransactionID    getTransactionID() const;
     void                setTransactionID(MtpTransactionID id);
 
