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