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]

 



On Mon, Jun 7, 2021 at 9:53 AM Johan Hovold <johan@xxxxxxxxxx> wrote:
>
> On Mon, Jun 07, 2021 at 09:44:59AM -0700, David Frey wrote:
> > On Sat, Jun 5, 2021 at 3:13 AM Johan Hovold <johan@xxxxxxxxxx> wrote:
> > >
> > > I found an errata for A01 on here, but no mention if this particular
> > > bug:
> > >
> > >         https://www.silabs.com/documents/public/pcns/190315471-CP2102N-Product-Revision-with-Datasheet-and-Errata-Update.pdf
> >
> > I believe this document has some more errata details:
> > https://www.silabs.com/documents/public/errata/cp2102n-errata.pdf'
>
> Thanks for the link.
>
> This seems to confirm that this is a known issue with A01 that was fixed
> in A02:
>
>         3.6 CP2102N_E104 – IO Exception in .NET Applications when
>         Manually Controlling RTS
>
>         The CP2102N uses the incorrect byte of the SERIAL_HANDFLOW
>         structure
>         (https://msdn.microsoft.com/en-us/library/windows/hard-
>         ware/jj680685(v=vs.85).aspx) to control the RTS signal. Instead
>         of looking at the first byte of FlowReplace, the device is
>         reading the first byte of the XonLimit and interpreting that as
>         the first byte of FlowReplace.
>
>         Applications written in .NET set the Xon/Xoff limits to 160,
>         equal to 0xA0, which the CP2102N interprets as hardware flow
>         control, and so it returns an error when manually setting RTS.
>
> Now we just need to figure out how to determine the firmware revision.
>
> Johan

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
}




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

  Powered by Linux