Android device problems with MTP ID
Lowell Gilbert
Lgfbsd at Be-Well.Ilk.Org
Thu Jan 3 19:35:04 UTC 2013
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
More information about the freebsd-usb
mailing list