Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 03 Jan 2013 14:34:50 -0500
From:      Lowell Gilbert <Lgfbsd@Be-Well.Ilk.Org>
To:        freebsd-usb@freebsd.org, hselasky@c2i.net, 
Subject:   Android device problems with MTP ID
Message-ID:  <44d2xmrrfp.fsf@lowell-desk.lan>

next in thread | raw e-mail | index | archive | help
Hi. 

As of the some recent releases of Android, umass support is gone and MTP
support is the normal way for a computer to access a phone over USB.
I have a pair of Android devices; one seems to be using MTP okay, and
I'll try to move forward working with that, but the other doesn't seem
to be offering the MTP interface on the bus.

On my (updated to Android 4.1.1) phone, MTP only works if the phone's
USB debugging option is enabled. If it is, usbconfig(8) sees a ugen(4)
interface of MTP type; but otherwise it just shows up as a CD device. 

I also have a tablet, running Android 4.0.4, and it reports as MTP
rather than umass. The tools that come with libmtp (and thus, probably,
tools like gmtp) talk to it at least somewhat.

Presenting the phone as a CD is intentional in the update. The CD is a
real CD device (well, virtual, but it simulates one okay; it is at least
mountable), and it contains Windows drivers for using the device as
MTP. The problem is that the CD (a umass interface) is the *only* one
that shows up. As far as I can gather, the device is expected to revert
to MTP mode in a short period of time if the CD isn't mounted, and I
can't seem to get it to do that.

I've included the usbconfig output for the phone for both the regular
and debug modes at the bottom of the message, but I don't expect that
you will be able to get much more out of it than I have.

I appreciate any advice.

Thanks,
       Lowell Gilbert


================================================================

  Phone in normal mode:
====
[5001] (lowell-desk) ~> usbconfig -d 2.2 dump_device_desc 
ugen2.2: <MB886 motorola> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0000 
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x22b8 
  idProduct = 0x710f 
  bcdDevice = 0x0228 
  iManufacturer = 0x0002  <motorola>
  iProduct = 0x0003  <MB886>
  iSerialNumber = 0x0004  <TA3000641U>
  bNumConfigurations = 0x0001 

[5002] (lowell-desk) ~> usbconfig -d 2.2 dump_curr_config_desc
ugen2.2: <MB886 motorola> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON


 Configuration index 0

    bLength = 0x0009 
    bDescriptorType = 0x0002 
    wTotalLength = 0x0020 
    bNumInterfaces = 0x0001 
    bConfigurationValue = 0x0001 
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x0080 
    bMaxPower = 0x00fa 

    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0002 
      bInterfaceClass = 0x0008 
      bInterfaceSubClass = 0x0006 
      bInterfaceProtocol = 0x0050 
      iInterface = 0x0001  <Mass Storage>

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0001  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200 
        bInterval = 0x0001 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

================================================================
  Phone in "USB debug" mode:
====    
[5001] (lowell-desk) ~> usbconfig -d 2.2 dump_device_desc
ugen2.2: <MB886 motorola> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0000 
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x22b8 
  idProduct = 0x2e33 
  bcdDevice = 0x0228 
  iManufacturer = 0x0002  <motorola>
  iProduct = 0x0003  <MB886>
  iSerialNumber = 0x0004  <TA3000641U>
  bNumConfigurations = 0x0001 

[5002] (lowell-desk) ~> usbconfig -d 2.2 dump_curr_config_desc
ugen2.2: <MB886 motorola> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON


 Configuration index 0

    bLength = 0x0009 
    bDescriptorType = 0x0002 
    wTotalLength = 0x005c 
    bNumInterfaces = 0x0003 
    bConfigurationValue = 0x0001 
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x0080 
    bMaxPower = 0x00fa 

    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0003 
      bInterfaceClass = 0x00ff 
      bInterfaceSubClass = 0x00ff 
      bInterfaceProtocol = 0x0000 
      iInterface = 0x0005  <MTP>

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0001  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 2
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0082  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x001c 
        bInterval = 0x0006 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


    Interface 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0003 
      bInterfaceClass = 0x0002 
      bInterfaceSubClass = 0x000a 
      bInterfaceProtocol = 0x0001 
      iInterface = 0x0014  <Motorola Networking Interface>

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0083  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0002  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 2
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0003  <OUT>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040 
        bInterval = 0x0001 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


    Interface 2
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0002 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0002 
      bInterfaceClass = 0x00ff 
      bInterfaceSubClass = 0x0042 
      bInterfaceProtocol = 0x0001 
      iInterface = 0x0015  <Motorola ADB Interface>

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0084  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0004  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?44d2xmrrfp.fsf>