I see errors when I attempt to install your CP2114 package on Linux. What is going on?
This is a known issue with InstallAnywhere, the installation software used for the CP21xx software packages. To fix this, unset the TITLEBAR and PS1 environment variables prior to running the installer. Keep in mind that if PS1 is unset, then the shell prompt will be invisible.
How do I force the CP210x to use particular COM port numbers in Windows 8/8.1?
Change the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter\ComDB binary record with bit-mask of the latest usable/workable com port you have on the system (not including the CP210x you want to add). This key has the following mask properties: (1st byte MSbit...LSbit)[COM8...COM1], (2nd byte)[COM16...COM9]... (n-th Byte)[COM[n*8]...COM[n*8-7]]
Reboot the OS.
After following these steps, a CP210x is plugged into USB on a PC with the driver preinstalled will enumerate on the next COM port available in the bit mask. If the driver is not preinstalled, it can be installed in the middle of enumeration.
There are no issues with audio bandwidth, but with audio Record and/or Playback operational, the bandwidth of the full-duplex UART interface is significantly reduced.
There are also a couple of external factors that must be considered:
To achieve error-free communication with hardware flow control enabled, the remote terminal must be well-behaved, i.e. it must not continue to send data when the CP2114 deasserts its RTS output.
Without hardware flow control, the maximum error-free baud rate may be as low as 19,200 bits/second if the remote terminal is transmitting continuously. If there is idle time between bytes sent by the remote terminal, higher baud rates can be used.
Note that since the CP2114 serial interface is a DTE, a null modem cable is required to connect to another DTE (e.g. PC COM port).
Why does the function CP213x_SetGpioValues() only work for GPIO0, GPIO1, GPIO2, and GPIO7?
The CP213x_SetGpioValues() function requires that a pin’s function be set to GPIO open-drain or push-pull output in OTP (or in default configuration if OTP has not been programmed) to be able to modify its value. If a pin is set to a special function, the command to change the pin value is ignored. This behavior is by design.
The reason you are seeing CP213x_SetGpioValues() only work for GPIO0, GPIO1, GPIO2, and GPIO7 is most likely that you are using a device whose OTP memory has not been programmed. GPIO functionality using the CP213x_SetGpioValues() function can be achieved by programming the OTP memory. Alternatively, the CP213x_SetGpioModeAndLevel() function can be used to override the output mode of any GPIO pin without programming the OTP memory. Note that overridden mode and level settings will remain in effect only until a CP2130 device reset or power cycle occurs.
Note: The OTP memory setting for each GPIO pin can only be written once.
If I call CP213x_SetGpioModeAndLevel, followed by CP213x_GetGpioModeAndLevel, why does the value of mode not match?
CP213x_GetGpioModeAndLevel() returns mode as defined in OTP memory and cannot be used to determine the mode as overridden using the CP213x_SetGpioModeAndLevel() function. If the device is being used in override mode, software will need to remember the last written value and write it again each time it needs to update the level.
In Asynchronous Mode, the CP2114 audio output works fine on Windows 32-bit systems but exhibits dropouts on Windows 64-bit systems? Why?
Some Windows 64-bit machines do not behave correctly in Asynchronous mode; instead of providing feedback packets at the 2ms rate specified by the bRefresh element of the CP2114’s feedback endpoint descriptor, they send (at most) one feedback packet shortly after streaming begins but never send another. Consequently, any clock mismatch between the host and CP2114 will result in eventual buffer overflow or underflow, which produces a dropout or discontinuity in the analog output signal.
The Windows 64-bit systems behave as expected when bRefresh has a value of 4 (corresponding to a 16ms feedback period) or greater. To avoid audio dropouts due to improperly behaving host machines, the next-revision CP2114 device (CP2114-B02-GM) will allow users to configure the bRefresh parameter.
In this case, the latest version of CP210xManufacturing.DLL depends on the WinUSB.DLL, which is not installed in Windows XP by default. After installing WinUSB, the CP210xManufacturing.DLL should work.