diff mbox

usb-mtp: fix usb_mtp_get_device_info so that libmtp on the guest doesn't complain

Message ID 1460892593-5908-1-git-send-email-109lozanoi@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Isaac Lozano April 17, 2016, 11:29 a.m. UTC
If an application uses libmtp on the guest system,
it will complain with the warning message:
LIBMTP WARNING: VendorExtensionID: ffffffff
LIBMTP WARNING: VendorExtensionDesc: (null)
LIBMTP WARNING: this typically means the device is PTP (i.e. a camera) but
not a MTP device at all. Trying to continue anyway.

This is because libmtp expects a MTP Vendor Extension ID of 0x00000006 and a
MTP Version of 0x0064. These numbers are taken from Microsoft's MTP Vendor
Extension Identification Message page and are what most physical devices
show.

Signed-off-by: Isaac Lozano <109lozanoi@gmail.com>
---
 hw/usb/dev-mtp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Stefan Hajnoczi April 26, 2016, 9:11 a.m. UTC | #1
On Sun, Apr 17, 2016 at 04:29:53AM -0700, Isaac Lozano wrote:
> If an application uses libmtp on the guest system,
> it will complain with the warning message:
> LIBMTP WARNING: VendorExtensionID: ffffffff
> LIBMTP WARNING: VendorExtensionDesc: (null)
> LIBMTP WARNING: this typically means the device is PTP (i.e. a camera) but
> not a MTP device at all. Trying to continue anyway.
> 
> This is because libmtp expects a MTP Vendor Extension ID of 0x00000006 and a
> MTP Version of 0x0064. These numbers are taken from Microsoft's MTP Vendor
> Extension Identification Message page and are what most physical devices
> show.
> 
> Signed-off-by: Isaac Lozano <109lozanoi@gmail.com>
> ---
>  hw/usb/dev-mtp.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Welcome to QEMU!

Link to MTP Vendor Extension Identification Message page for other
reviewers:
https://msdn.microsoft.com/en-us/library/ff632482.aspx

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Bandan Das April 26, 2016, 9:28 p.m. UTC | #2
Stefan Hajnoczi <stefanha@gmail.com> writes:

> On Sun, Apr 17, 2016 at 04:29:53AM -0700, Isaac Lozano wrote:
>> If an application uses libmtp on the guest system,
>> it will complain with the warning message:
>> LIBMTP WARNING: VendorExtensionID: ffffffff
>> LIBMTP WARNING: VendorExtensionDesc: (null)
>> LIBMTP WARNING: this typically means the device is PTP (i.e. a camera) but
>> not a MTP device at all. Trying to continue anyway.
>> 
>> This is because libmtp expects a MTP Vendor Extension ID of 0x00000006 and a
>> MTP Version of 0x0064. These numbers are taken from Microsoft's MTP Vendor
>> Extension Identification Message page and are what most physical devices
>> show.
>> 
>> Signed-off-by: Isaac Lozano <109lozanoi@gmail.com>
>> ---
>>  hw/usb/dev-mtp.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> Welcome to QEMU!
>
> Link to MTP Vendor Extension Identification Message page for other
> reviewers:
> https://msdn.microsoft.com/en-us/library/ff632482.aspx

I am confused why the MTP spec on usb.org specifies in 5.1.1.2 that
this value should be 0xffffffff for MTP devices. Is it just not updated
or there are similar MS specific differences to watch out for ? Either
way, it seems libmtp will always be a good reference when we are stuck
with such discrepencies.

> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Gerd Hoffmann May 11, 2016, 8:34 a.m. UTC | #3
On So, 2016-04-17 at 04:29 -0700, Isaac Lozano wrote:
> If an application uses libmtp on the guest system,
> it will complain with the warning message:
> LIBMTP WARNING: VendorExtensionID: ffffffff
> LIBMTP WARNING: VendorExtensionDesc: (null)
> LIBMTP WARNING: this typically means the device is PTP (i.e. a camera)
> but
> not a MTP device at all. Trying to continue anyway.
> 
> This is because libmtp expects a MTP Vendor Extension ID of 0x00000006
> and a
> MTP Version of 0x0064. These numbers are taken from Microsoft's MTP
> Vendor
> Extension Identification Message page and are what most physical
> devices
> show.
> 
> Signed-off-by: Isaac Lozano <109lozanoi@gmail.com>

added to usb patch queue.

thanks,
  Gerd
diff mbox

Patch

diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c
index bda84a6..1be85ae 100644
--- a/hw/usb/dev-mtp.c
+++ b/hw/usb/dev-mtp.c
@@ -788,8 +788,8 @@  static MTPData *usb_mtp_get_device_info(MTPState *s, MTPControl *c)
     trace_usb_mtp_op_get_device_info(s->dev.addr);
 
     usb_mtp_add_u16(d, 100);
-    usb_mtp_add_u32(d, 0xffffffff);
-    usb_mtp_add_u16(d, 0x0101);
+    usb_mtp_add_u32(d, 0x00000006);
+    usb_mtp_add_u16(d, 0x0064);
     usb_mtp_add_wstr(d, L"");
     usb_mtp_add_u16(d, 0x0000);