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>