Re: cp210x module broken in 5.12.5 and 5.12.6, works in 5.11.21 (with bisection)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



El 7/6/21 a las 15:44, David Frey escribió:
On Mon, Jun 7, 2021 at 11:02 AM David Frey <dpfrey@xxxxxxxxx> wrote:
I made a bit of progress.  I found that CP210xManufacturing.dll was
bundled with Simplicity Studio and in the same folder as the DLL was
inspect_usbxpress.exe.  It looks like that tool is able to report the
firmware version of the device.  In the output below, the first run is
against the device that I am able to program successfully on any
kernel and that shows firmware 1.0.6.  The second run is against a
device that I can't program and it shows firmware version 1.0.4.  I
recall reading some information that 1.0.6 is A02 and that 1.0.4 is
A01, but I think there might have been another firmware revision
that's also A01 (maybe 1.0.2?).  I can't find the source of this
information anymore.  I'm going to try to figure out how to use
wireshark to capture USB traffic now.

C:\SiliconLabs\SimplicityStudio\v5\developer\adapter_packs\inspect_usbxpress>.\inspect_usbxpress.exe
-slist
serial_no =
deviceCount = 1
device (0) {
   SoftIndex = 0
   adapterLabel = CP2102N USB to UART Bridge Controller (ID:0)
   SerialNo = 1017bfe99d98e8118ea47540c3e5cfbd
   Vid = 0
   Pid = 0
   PartNumber = 32
   BoardID =
   BoardCount = 0
   FirmwareVersion = 1.0.6
   Name = cp2102N version 1.0.6
   Type = CP210x
   Family = USBXpress
   Locked = 1
}

C:\SiliconLabs\SimplicityStudio\v5\developer\adapter_packs\inspect_usbxpress>.\inspect_usbxpress.exe
-slist
serial_no =
deviceCount = 1
device (0) {
   SoftIndex = 0
   adapterLabel = CP2102N USB to UART Bridge Controller (ID:0)
   SerialNo = f06e721e74e1ea11bd9ddc2d9a583cc7
   Vid = 0
   Pid = 0
   PartNumber = 32
   BoardID =
   BoardCount = 0
   FirmwareVersion = 1.0.4
   Name = cp2102N version 1.0.4
   Type = CP210x
   Family = USBXpress
   Locked = 1
}
I configured wireshark on Windows to capture the USB traffic and I ran
the inspect_usbxpress.exe.  I believe the request/response where the
firmware version is provided is in packets 38/39 in the attached
trace.  Perhaps the mailing list will strip the trace, so I will
describe it a bit.

Setup packet:
   bmRequestType: 0xC0 (device-to-host, vendor, device recipient)
   bRequest: 255
   wValue: 0x0010
   wIndex: 0
   wLength: 3

Response Data: {0x01, 0x00, 0x04}

When I captured the trace for the other device, the response data was
{0x01, 0x00, 0x06} indicating firmware version 1.0.6.

Let me know if there is any other information I can provide.

Yes! This is exactly the information required to query the firmware. Now a patch should be made that calls cp210x_read_vendor_block(), which internally uses CP210X_VENDOR_SPECIFIC (0xFF) with a #define CP210X_READ_FIRMWARE_VER    0x0010, and a 3-byte buffer that will contain the firmware version. Then the driver will refrain from programming the XON/XOFF limits if the firmware version is not the fixed one.




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux