Q1) I have obtained a unique VID/PID combination for my VCP or USBXpress (Direct Access) driver and have contacted Silicon Labs to obtain reseller status, however the package that is shipped to me via Microsoft Dashboard has the Silicon Labs default VID/PID. How do I recertify a driver with my VID/PID combination?
Q2) Changing the VID/PID of the default Silicon Labs driver invalidates the driver signature. I understand that that means I must recertify the driver. Does that also mean that I must rigorously retest the driver prior to recertification?
A1) In the case that you have your own VID/PID combination already, you must customize both your devices and your driver with this VID/PID combination according to AN721: CP210x/CP211x Device Customization Guide and AN220: USB Driver Customization, as well as complete the following steps:
1. Purchase the appropriate certificate from a certificate vendor.
2. Contact Silicon Labs technical support (http://www.silabs.com/support) for reseller status. Please provide the driver used (VCP or USBXpress), driver version, and the WHQL registered company name.
3. Add your certificate to the Microsoft Hardware Dashboard.
4. Add the certificate to the certificate store on your computer.
5. Download a file to sign, sign it, and upload the signed file.
6. Download the DUA shell (a .hlkx file) from the driver shipped to you.
7. Download the signed files. Modify the .inf file as desired. (Or upload the modified .inf output of AN220: USB Driver Customization Software. This is how you can create a customized driver using your VID/PID combination.)
8. Download and install the latest version of HLK Studio. Open HLK Studio.
9. Change to the package tab. Right click on the driver and choose [Replace Driver]. Choose a folder with the signed driver files and your modified .inf file.
10. Click [Create Package].
11. Sign from the certificate store on your computer. Save the .hlkx file.
12. In the Microsoft dashboard, click [Upload New] and choose your new .hlkx file.
You can find greater detail on this list of steps in AN807: Recertifying a Customized Windows HCK Driver Package, including illustrative screenshots.
A2) Many driver customizations, including changing the VID/PID, product and manufacturer strings, and other minor changes require modification of the .inf file only and do not affect the binary executable or functional portion of the driver. In such cases the resigning process is eligible for re-certification as Driver Update Acceptable (DUA), which is a streamlined re-certification process that does not require the detailed testing that Silicon Labs must undergo for the initial submission of the original driver that Silicon Labs ships to customers via the Microsoft dashboard. Please follow the steps outlined above and in the linked documentation and customization utilities to complete the process.
首先，CP210x驱动程序v10.1.1是Windows Universal驱动程序。 有关此驱动程序的更多信息，请参阅此KBA - https://www.silabs.com/community/interface/knowledge-base.entry.html/2017/12/27/vcp_driver_-_windows-Ulur.
CP210x驱动程序v6.7.5目前是“传统”驱动程序，可以在Windows 7, 8和10上使用。两个版本的驱动程序之间的差异体现在以下方式:
这写差异可以通过release notes文档获取，可以从此链接获取 - https://www.silabs.com/documents/public/release-notes/CP210x_Universal_Windows_Driver_ReleaseNotes.txt
驱动程序版本v6.7.5适用于Windows 7及更高版本的“桌面”系统，即Windows 7, 8, 8.1和10.请注意，这些驱动程序仅适用于“桌面”系统，即PC和服务器。 Windows v10.1.1是一个通用的Windows驱动程序。 微软在Windows 10中引入了“Universal”。“Universal”表示支持Universal的Windows桌面系统，嵌入式系统和移动操作系统等版本，即Windows 10。有关Universal驱动程序的更多信息，请参阅Microsoft的文章 - https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/getting-started-with-universal-drivers。 SiliconLabs社区论坛上的KBA提供了有关Universal驱动程序的更多信息，特别是驱动程序v10.1.1 - https://www.silabs.com/community/interface/knowledge-base.entry.html/2017/12/27/vcp_driver_-_windows-Ulur。
在v6.7.5中使能了Serial Enumeration，而v10.1.1未启用Serial Enumeration。关于Serial Enumeration的介绍请参阅https://www.silabs.com/community/interface/knowledge-base.entry.html/2016/01/13/what_is_the_seriale-ZSIi
从技术上讲，驱动程序版本v6.7.5几乎是一个“legacy”驱动程序。 Windows和Silicon Labs计划未来仅使用v10.1.1并对该版本的驱动程序进行更新（如有必要）。
CP2102N具有一些其他CP210x器件所没有的附加配置选项。 它们显示在Xpress Configurator的[Advanced Serial Configuration]选项卡中。
[Allowed Baudrates]选项用于设置结构体中的SettableBaud元素，而[Maximum Baudrate]用于设置结构体中的MaxBaud元素
针对SERIAL_COMMPROP结构体对CP2102N做的这些配置对设备的行为没有直接影响。 例如，如果 [Maximum Baudrate] 设置为300，应用程序仍然可以请求更高的波特率，并且CP2102N能够支持请求。由应用程序读取SERIAL_COMMPROP结构，并决定是否阻止用户请求在该结构体中不支持的波特率。
我使用的是CP2102N，还有一个外部的3.3 V稳压器，用于为VREGIN和VDD提供3.3 V电压。 我将VBUS引脚连接到USB 5 V。 VBUS是否需要分压电阻来降低输入电压？ 或者，是否支持将VBUS引脚连接到3.3V稳压器输出引脚这样的配置？如果是，可以去掉VBUS上分压电阻吗？
如果上述电源配置是自供电配置，那么VBUS引脚上的需要分压电阻。 采用分压电阻的这种电源配置如CP2102N数据表第9页的图2.6所示。 请注意，在任何供电模式下（无论是自供电还是总线供电），USB的VBUS信号连接到CP2102N VBUS的引脚都需要分压电阻（如图2.6所示），以避免VBUS上可能出现的过压情况（参见https://www.silabs.com/community/interface/knowledge-base.entry.html/2018/03/31/cp2102n_requiresav-NFly）。
至于VBUS引脚连接到VDD和VREGIN的相同3.3V电源，只要CP2102N上的稳压器被旁路（即VDD = VREGIN =外部提供的3.3 V），该配置应该是可接受的。下面这种情况下不支持：如果器件是自供电的，内部稳压器用于为VDD供电（例如，如果USB 5V VBUS信号连接到VREGIN），VDD上升时间的延迟可能会导致其超出了VBUS PIN上最大额定电压的限定。 在这些情况下，都应使用VBUS分压电阻。
Do I need to install any driver for CP2615 on Windows?
CP2615 USB digital audio bridge is a composite USB device that provides three USB interfaces:
1. USB Audio Class 1.0 to I2S digital audio bridge
2. USB HID Class consumer control device for volume and mute synchronization
3. Vendor specific USB serial data bridge using CP2615 I/O Protocol
The USB HID and digital audio interfaces are standard class implementations and natively supported by most operating systems, no custom driver needed.
The CP2615 serial I/O USB interface uses bulk transfers, and WinUSB driver is required for Windows platform. However, some user may observe one of CP2615 interface cannot enumerate successfully on Windows 7 which the WinUSB driver has not been installed properly. In this situation, you need to install the WinUSB driver by yourself if you want to use this interface. For more information on how to install the WinUSB driver, please see here.
Below is the CP2615 device viewing in Device Manager on Windows 7 with WinUSB driver installation.
Question 1: CP2615 GPIO.9/Buttons can be configured to report common consumer control buttons through HID interface, do the same predefined buttons can be assigned to more than one slot?
Answer: Yes. The HID media buttons can be assigned to more than one slot using Xpress Configurator. When the feature is enabled, USB Host can see the predefined HID consumer reports when associated buttons are pressed. Here note that the report will not contain any slot number information, hence host does not know which slot generated the report.
Question 2: Is GPIO.9/Buttons readable through CP2615 IO Protocol?
Answer: No CP2615 IOP message supports reading GPIO.9/Buttons pin state directly per AN1139. However, there are three IOP messages related analog pin input, GPIO.8/ADC analog input pin, user can use these IOP messages to read the current voltage on GPIO.9/Buttons pin by tying GPIO.8 to GPIO.9 together if desired.
For more information about the GPIO.9/Buttons connection, please see the GPIO section in CP2615 Datasheet.
There are three IOP messages related to analog pin in AN1139.
Configure automatic reporting of analog pin.
Report current analog pin value.
|CP2615||Current analog pin value|
These IOP messages are intended to be used for CP2615 GPIO.8/ADC analog pin only, see AN1139 for more details about the format of these messages.
When USB host sends these API commands, the first parameter 'PinNumber' for iop_SetAnalogPinNotify (0xD300) and iop_GetAnalogPin (0xD301) must be set to 0. It is invalid for the two commands if the pin number is set to other values.
The ADC analog value message returned by iop_AnalogPinValue looks as below:
0x2A 0x2A 0x00 0x0D 0xA3 0x01 pp vv vv tt tt tt tt
0x2A2A is the preamble of CP2615 IOP message
0x000D is the total message length for this message (header + message payload)
0xA301 is the ID of iop_AnalogPinValue message
pp is the analog pin number, here it is 0x00
vv vv is the current value read from the analog pin, 10-bit right-justified, full-scale VDD corresponds to 0x03FF.
tt tt tt tt is 32-bit timestamp, MSB, 1 ms resolution
The CP2615 GPIO pins can be configured using Xpress Configurator in Simplicity Studio. Ensure the GPIO.8 is set as ADC input when using these IOP messages, otherwise host will not receive analog notification if it is configured as GPIO function, although the GPIO.8 is set to ADC input by default.
I am using the CP2102N and I have an external 3.3 V regulator that is used to supply 3.3 V to VREGIN and VDD. I have the VBUS pin connected to the USB 5 V. Do I need a voltage divider for VBUS to reduce the input voltage? Alternately, is connecting the VBUS pin to the 3.3 V regulator output a supported configuration, and if so, can the required voltage divider on VBUS be omitted?
The power configuration described above is that of a self-powered configuration, and requires a voltage divider on the VBUS pin. This power configuration, with the voltage divider, is shown in Figure 2.6 on page 6 of the CP2102N datasheet. Please note that any power configuration (self or bus-powered) in which the USB VBUS signal is connected to the CP2102N VBUS pin requires a voltage divider (as shown in Figure 2.6) on VBUS to avoid a possible overvoltage condition on VBUS (see https://www.silabs.com/community/interface/knowledge-base.entry.html/2018/03/31/cp2102n_requiresav-NFly).
As for the connecting of the VBUS pin to the same 3.3V supply connected to VDD and VREGIN, this configuration should be acceptable as long as the regulator on the CP2102N is bypassed (i.e. VDD = VREGIN = externally supplied 3.3 V). If the device is self powered with the internal regulator used to supply VDD (for instance if the USB 5 V VBUS signal is connected to VREGIN), the delay in the rise time of VDD may cause a violation of the maximum voltage rating on the VBUS pin, which is not supported. In these cases, the VBUS voltage divider should be used.
Problem: Couldn't recognize CP2615 as output audio device in Mac OS when configured for 24-bit-only output.
Root cause: The failure to enumerate is due to the Mac OS not tolerating the Interface 3 Alt 1 zero-bandwidth descriptor that is sent by the CP2615 when configured for 24-bit-only operation. The presence of this zero-bandwidth descriptor is not prohibited by the USB standards and is tolerated by other operating systems (Windows, Linux, Android).
Workaround: The problem can be avoided by configuring the CP2615 Audio Out interface for 24/16 bit operation, instead of 24-bit-only. This just adds the 16-bit capability in addition to 24-bit, so there is no loss in the quality. 24-bit source material will still be sent over USB as 24 bits; the only difference is that 16-bit source material will get transmitted across USB as 16 bits, rather than being artificially padded to 24 bits as it would if the CP2615 was configured for 24-bit-only operation. (Padding 16-bit audio to 24-bit does not increase its actual resolution, it just wastes USB bandwidth.)
CP2114 supports record mute by USB host or GPIO pin. CP2114 mutes Record when the USB host sends an Audio Class-Specific request SET_CUR (0x01) to mute the Record audio. In addition, single-pressing the Record Mute button (GPIO.0 by default) will toggle between record mute and unmute states. The Record Mute LED (GPIO.4 by default) is turned on/off accordingly for both control methods.
For Windows machine, the CP2114 device record can be muted with following steps:
The Record Mute LED on CP2114 evaluation board will be toggled as well.
1. Record Mute controlled by Host PC is available for CP2114-B02 revision only. See CP2114 Errata for more information.
2. Record functionality must be enable. User can test with the index 0 of preprogrammed configuration by installing all jumpers of GPIO.5 ~ GPIO.8 on the CP2114 EVB.