Adding Oliver and Macpaul Lin. On Thu, Jan 31, 2019 at 06:54:24PM -0600, Carlos Salvador Pérez Salgado wrote: > ---------- Forwarded message --------- > >From: Johan Hovold <johan@***************> > >Date: Thu, Jan 31, 2019 at 9:27 AM > >Subject: Re: MT65xx Preloader 0e8d:2000, Kernel 4.20.5.1 > >To: Carlos Salvador Pérez Salgado <ing.salvadorperez@***************> > >Cc: Johan Hovold <jhovold@***************> > > >On Thu, Jan 31, 2019 at 05:57:01AM -0600, Carlos Salvador Pérez Salgado wrote: > >> Hello, > >> > >> first of all, I want to apologize for the annoyance this message could > >> cause to you. > >> The matter is that I want to flash a pair of cell phones which are > >> softbricked and I don't use MS Windows at any of my computers. > >< > >> I am currently using Artix linux with kernel 4.20.5.1. When I plug any of > >> the phones with their battery removed, the Kernel identifies the device as > >> MT65xxx Preloader and cdc_acm kicks in; the problem is that probing the > >> device fails with error -22, and the reason given is "Zero length > >> descriptor references", which as far I could understand in the source file > >> of cdc_acm, is the response given when the driver fails. > >> > >> Should I need any firmware to get it work? Am I doing something wrong? > >> > >> Salvador Pérez > > > >You can try setting the NO_UNION_NORMAL flag for your device (e.g. in > >the driver). > >Make sure to include the output of "lsusb -v" for your device in your > >report. And make sure to include any privacy footers in your mail when > >posting to the list. > Here I add the requested information. > I had to use a loop in order to pipe this to a file because the device > disappears very fast. Judging from a quick look, the descriptors look fine (and you don̈́'t need NO_UNION_NORMAL). Not sure why we have decided to try to bind the data interface, which could result in the -EINVAL (-22) error you're seeing. The ACM interface should bind though. Can you confirm this by for example running udevadm monitor -k while connecting the device? Could it be that you don't simply don't have the required software to actually initiate the firmware loading before the device disconnects? > $ lsusb -v -d 0e8d:2000 > > Bus 001 Device 002: ID 0e8d:2000 MediaTek Inc. MT65xx Preloader > Device Descriptor: > bLength 18 > bDescriptorType 1 > bcdUSB 2.00 > bDeviceClass 2 Communications > bDeviceSubClass 0 > bDeviceProtocol 0 > bMaxPacketSize0 64 > idVendor 0x0e8d MediaTek Inc. > idProduct 0x2000 MT65xx Preloader > bcdDevice 1.00 > iManufacturer 1 MediaTek > iProduct 2 MT65xx Preloader > iSerial 0 > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 0x0046 > bNumInterfaces 2 > bConfigurationValue 1 > iConfiguration 3 USB CDC ACM for preloader > bmAttributes 0xc0 > Self Powered > MaxPower 500mA > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 2 > bInterfaceClass 10 CDC Data > bInterfaceSubClass 0 > bInterfaceProtocol 0 > iInterface 4 CDC ACM Data Interface > Endpoint Descriptor: > bLength 8 > bDescriptorType 5 > bEndpointAddress 0x01 EP 1 OUT > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 0 > Endpoint Descriptor: > bLength 8 > bDescriptorType 5 > bEndpointAddress 0x81 EP 1 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 0 > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 1 > bAlternateSetting 0 > bNumEndpoints 1 > bInterfaceClass 2 Communications > bInterfaceSubClass 2 Abstract (modem) > bInterfaceProtocol 1 AT-commands (v.25ter) > iInterface 5 CDC ACM Communication Interface > CDC Header: > bcdCDC 1.10 > CDC ACM: > bmCapabilities 0x0f > connection notifications > sends break > line coding and serial state > get/set/clear comm features > CDC Union: > bMasterInterface 1 > bSlaveInterface 0 > CDC Call Management: > bmCapabilities 0x03 > call management > use DataInterface > bDataInterface 0 > Endpoint Descriptor: > bLength 8 > bDescriptorType 5 > bEndpointAddress 0x83 EP 3 IN > bmAttributes 3 > Transfer Type Interrupt > Synch Type None > Usage Type Data > wMaxPacketSize 0x0040 1x 64 bytes > bInterval 16 > can't get debug descriptor: Resource temporarily unavailable > Device Status: 0x0001 > Self Powered > > I had also found this thread which seems related: > https://www.spinics.net/lists/linux-usb/msg175130.html Yeah, that's the patch adding support for your device. The descriptors reported there appear to match yours (again, after a quick comparison), so everything should work (unless I'm missing something). Johan