A customer is using the CP2103 in one of their products. They supplied us with custom drivers and a USB configuration tool that's basically a stripped-down CP210xSetIDs.exe.
Everything seemed to be working fine at first. When I changed the product's serial number, I would be prompted to reinstall the drivers, and new registry keys in the format Vid_[VID]&Pid_[PID]&[Serial #] (for the USB bus entry) and Vid_[VID]&Pid_[PID]&[Serial #]_00 (for the virtual COM port) were created.
At some point, I tried to reprogram the serial # on one of the products and the unit stopped responding. I looked at the registry entry, and the serial # section of the key name was garbled text. Even worse, when I change the serial # now, it has no effect on the product - the drivers don't reload, and no new registry key is created.
I uninstalled all the customer drivers/software, and I downloaded the latest SiLabs default drivers. I changed the VID/PID back to 10C4/EA60 and loaded the CP210x drivers. I'm still getting the same problem.
I can use the CP210xManufacturing API to change and read back serial number stored in the CP2103's EEPROM, and that works. But no matter what I change it to, the registry entry looks something like this (multiple entries from plugging the product into multiple USB ports):
I was expecting the keys to follow the serial #, like this:
I read about the [Manufacturing Ignore Serial Numbers] option in AN335, but I don't see that set anywhere in the drivers they gave me, and I'm still getting the problem using the default SiLabs drivers. I also get the issue if I move to a different PC.
Did I somehow screw up the CP2103's? Any ideas on what caused this problem, and is there any way of fixing it?
I'm having the exact same problem with my CP2102s. Did you ever find a solution?
Yes, see this thread:
We've seen a few cases of this issue recently. The ID of the device, as shown in device manager consists of the Hardware ID (based on the VID and PID; multiple devices can have the same hardware ID) and the Instance ID (usually based on the serial number; each device has a unique ID). While the unique ID is based on the serial number, it is not guaranteed to be (usually varying based on the host computer). See this article for more information: https://msdn.microsoft.com/en-us/library/windows/hardware/ff547656%28v=vs.85%29.aspx
Programs like UCVview and the manufacturing dll can read the serial number field no matter what. We're looking into the best way for customers to read the serial number when the device is in use.