UVCView: A component of the Windows Driver Kit, available for download from Microsoft.
UVCView displays the USB information in a device (like VID, PID, Product String, descriptors, etc) connected to the bus. The driver for the device does not need to be installed or loaded for UVCView to read the information, as the utility uses the low-level USB driver to talk to the device. This is useful for when a CP210x is not enumerating because of an incorrectly programmed PID.
UPDATE -- 1 OCT 2014:
"UVCView" is now called "USBView" and is available as part of the Debugging Tools for Windows. See this link for download and installation instructions.
PortMon is a serial port monitoring program that records the transactions between the host application and the serial interface. PortMon is useful for determining if invalid settings are accidentally being used with the CP210x or if the data is being sent properly to the device.
Component Software, Inc: http://www.componentsoftware.com/Products/CSDiff/
CSDiff is a file comparison program. This can be used to compare the input to the CP210x to the output to verify that all data is being sent.
Terminal is a basic serial communication program that can be used to connect to the CP210x VCP or the UART side of the CP210x.
SnoopyPro is a USB software monitoring program that records the transactions between the CP210x driver and the low level Windows USB driver. Much like PortMon, this program can be used to verify that the data is being properly sent to the CP210x from the CP210x driver.
USBlyzer is another useful USB software monitoring program like SnoopyPro.
USBTrace is another USB software monitoring program that has class decoders available for many of the most commonly used USB classes.
Suggested CP210x Troubleshooting Steps
In order for the CP210x to work properly:
· the CP210x has to enumerate properly on the USB bus
· the correct driver has to install
· the host application has to properly open, send data to, and close the handle to the CP210x
Run UVCView (or USBView) on the PC to verify if the CP210x properly enumerated. If all of the data in the selected CP210x looks valid and no errors are reported, then the device has enumerated. Here is an example of proper CP2101 enumeration:
However, if all the data is zeroes (0x0000, for example) or if an error is reported, the device did not properly enumerate. The following is an example of improper enumeration.
A possible cause for improper enumeration is soldering. Please see the attached “SolderingGuidelines” PDF document.
CP210x Driver Installation
If the CP210x driver is not installing, check:
· that any older CP210x drivers are uninstalled by going to Add or Remove Programs in the Control Panel and removing the “CP210x USB to UART Bridge Controller” BEFORE installing the latest driver
· that the CP210x VID and PID match the VID and PID of the driver using UVCView and the Application Note AN220 Driver Customization software. Application Notes can be found on the Silicon Labs Applications webpage: https://www.silabs.com/products/mcu/Pages/ApplicationNotes.aspx
· that another driver of the same VID and PID is not already installed
· the PreInstaller has been run prior to connecting the CP210x. This is especially important for Windows 98 SE, as this operating system will not automatically find the driver for the device if the device is connected before the driver is installed (Windows must be restarted for it to work again).
If the Add New Hardware wizard appears, simply hit Next several times to install the driver. If an error appears, try rebooting the computer before attempting to install the driver again. If the driver is still not installing correctly, please contact us (https://www.silabs.com/support/pages/contacttechnicalsupport.aspx) for assistance.
Once the CP210x hardware is properly enumerating and the CP210x driver is properly installed, the host application software must properly open, access, and close the CP210x handle. If the CP210x is not properly transferring data:
· Verify that the latest driver is installed by going to Device Manager -> right click on the driver and select Properties -> click the Driver tab. Also, verify that the application is using valid settings for the CP210x by checking the appropriate datasheet. For example, not all baud rates supported on the CP2102 are supported on the CP2101 and the application may be attempting to use an invalid baud rate for a CP2101.
· In our testing, the CP210x device and driver do not typically drop data (the USB Bulk protocol guarantees the transfer of all data). If the application is losing data, how is the application handling the VCP? Is some form of handshaking being used (software protocol, hardware CTS/RTS, XON/XOFF)? Is the COM port being closed prematurely (before all data is sent out the CP210x device)? Where in the stream is the data being dropped (driver/USB bus/CP210x)?
* Note that if the COM port is being closed prematurely and data is being lost at the end of the transmission from the host to the device (PC to printer, for example), try testing with the Flush Buffers configuration option enabled (available on CP2104, CP2105, and CP2108). This prevents the device from flushing the data buffers when the host closes the port, and allows any information still residing in the device to drain to the device.
· Use PortMon to view the transactions on the CP210x COM port. Are there any irregularities in the logs? Is the application closing the COM port immediately after writing the last data? Is some data not being transferred for one reason or another? These logs can be sent to MCU Tools for review. Check whether the application works with a real COM port. How do the real COM port PortMonlogs differ from the CP210x PortMonlogs?
Before generating any PortMon logs, change the default “Max Output Bytes” PortMon setting, as follows:
The maximum value for this setting is 4096. Changing this value will change the number of bytes that are shown in the program for each read and write. By setting this to the maximum setting, it may be easier to see if data is not being sent correctly.
Additionally, the data can be shown as hexidecimal values by checking the “Show Hex” option.
If the CP210x application is causing the PC to crash, then the “Log to File” option allows PortMon to record the last instruction or data sent or received before the crash. This option is available in the File menu.
The PortMon logs display timestamps, driver and application names, IOCTL commands, and the data associated with the commands. The example section of a PortMon log displays the opening of a port. As shown in the log, the port is opened at 115200 baud with 8 data bits, 1 stop bit, no parity, and hardware handshaking (Shake: 9... no handshaking is Shake: 1).
In this example, the IOCTL_SERIAL_CLR_RTS command receives an “INVALID PARAMETER” return value from the driver and the IRP_MJ_READ commands return with “TIMEOUT” instead of “SUCCESS.” These types of return values may indicate where the problem may be occurring. Please contact MCU Technical Support for help with deciphering the PortMon logs.
· If the USB device is getting spurious resets or USB disconnects, adding a pull-up can help increase noise immunity. The /RST pin has an internal pull-up of ~100 kΩ. To get better noise immunity, add a pull-up on the /RST pin as shown in the device data sheet (1 kΩ to 5 kΩ).