From owner-freebsd-usb@FreeBSD.ORG Thu Jan 3 19:35:04 2013 Return-Path: Delivered-To: freebsd-usb@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id C427B325 for ; Thu, 3 Jan 2013 19:35:04 +0000 (UTC) (envelope-from Lowell@Be-Well.Ilk.Org) Received: from asbnvacz-mailrelay01.megapath.net (asbnvacz-mailrelay01.megapath.net [207.145.128.243]) by mx1.freebsd.org (Postfix) with ESMTP id 8FA4FDBB for ; Thu, 3 Jan 2013 19:35:04 +0000 (UTC) Received: from mail8.sea5.speakeasy.net (mail8.sea5.speakeasy.net [69.17.117.53]) by asbnvacz-mailrelay01.megapath.net (Postfix) with ESMTP id 40F5AA71636 for ; Thu, 3 Jan 2013 14:34:58 -0500 (EST) Received: (qmail 18395 invoked from network); 3 Jan 2013 19:34:57 -0000 Received: by simscan 1.4.0 ppid: 7195, pid: 26748, t: 0.4816s scanners: clamav: 0.88.2/m:52/d:13495 Received: from unknown (HELO be-well.ilk.org) ([66.92.78.145]) (envelope-sender ) by mail8.sea5.speakeasy.net (qmail-ldap-1.03) with SMTP for ; 3 Jan 2013 19:34:57 -0000 Received: from lowell-desk.lan (lowell-desk.lan [172.30.250.8]) by be-well.ilk.org (Postfix) with ESMTP id C05C633C32; Thu, 3 Jan 2013 14:34:51 -0500 (EST) Received: by lowell-desk.lan (Postfix, from userid 1147) id B595C39855; Thu, 3 Jan 2013 14:34:50 -0500 (EST) From: Lowell Gilbert To: freebsd-usb@freebsd.org, hselasky@c2i.net, Subject: Android device problems with MTP ID Date: Thu, 03 Jan 2013 14:34:50 -0500 Message-ID: <44d2xmrrfp.fsf@lowell-desk.lan> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jan 2013 19:35:04 -0000 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: 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 iProduct = 0x0003 iSerialNumber = 0x0004 bNumConfigurations = 0x0001 [5002] (lowell-desk) ~> usbconfig -d 2.2 dump_curr_config_desc ugen2.2: 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 bmAttributes = 0x0080 bMaxPower = 0x00fa Interface 0 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0000 bAlternateSetting = 0x0000 bNumEndpoints = 0x0002 bInterfaceClass = 0x0008 bInterfaceSubClass = 0x0006 bInterfaceProtocol = 0x0050 iInterface = 0x0001 Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0081 bmAttributes = 0x0002 wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0001 bmAttributes = 0x0002 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: 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 iProduct = 0x0003 iSerialNumber = 0x0004 bNumConfigurations = 0x0001 [5002] (lowell-desk) ~> usbconfig -d 2.2 dump_curr_config_desc ugen2.2: 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 bmAttributes = 0x0080 bMaxPower = 0x00fa Interface 0 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0000 bAlternateSetting = 0x0000 bNumEndpoints = 0x0003 bInterfaceClass = 0x00ff bInterfaceSubClass = 0x00ff bInterfaceProtocol = 0x0000 iInterface = 0x0005 Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0081 bmAttributes = 0x0002 wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0001 bmAttributes = 0x0002 wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 2 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0082 bmAttributes = 0x0003 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 Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0083 bmAttributes = 0x0002 wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0002 bmAttributes = 0x0002 wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 2 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0003 bmAttributes = 0x0003 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 Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0084 bmAttributes = 0x0002 wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0004 bmAttributes = 0x0002 wMaxPacketSize = 0x0200 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000