USB Bridge: CP2114
Audio DAC: Cirrus Logic WM8510
Target OS: Android 4.4
UART: libslabhidtouart (via libusb)
We use the above-mentioned hard- and software environment for a USB Phone with dial buttons.
Our approach can be briefly summarized as follows:
We combined the CP2114 with Cirrus Logic WM8510 (DAC) to
1.) have mono speaker output
2.) have mono microphone input
3.) use the virtual UART to an ARM controller
Currently, the configuration is resulting in an errorneous USB descriptor. The problem occurs after writing our own CP2114 and DAC settings to the device. (The bare metal CP2114 does not complain about the USB descriptor and the UART communication works as expected.)
The linux kernel reports:
config 1 interface 1 altsetting 1 has 2 endpoint descriptors, different from the interface descriptor's value: 1
Please find the descriptor attached and the configuration below. The descriptor has been read by "Thesycon USB Descriptor Bumper" tool.
It would be great if you could kindly help us to identify the wrong parameter(s) and fix it/them.
Current device configuration string:
01 02 34 C4 00 3F 01 40 6C 6C 6C 6C 6C 6C 6C 6C 60 66
00 3F 00 6C 6C 6C 6C 00 00 00 00 00 02 7F 04 15 06 ED
08 54 0A 00 0C 00 0E 00 10 00 14 00 16 FF 1D 00 1E FF
30 32 32 00 36 00 38 00 3A 00 3C 00 40 38 42 0B 44 32
46 00 48 08 4A 0C 4C 93 4E E9 50 00 58 03 5A 1F 5F 11
62 02 64 01 6C 30 70 01
Many thanks & Best Regards
There isn't anything wrong with your configuration - this is a known issue with the current release of the CP2114. The issue is that, in synchronous mode, the device will declare the current number of endpoints that it will use, but then it continues to describe an endpoint that isn't used, causing the problem. Luckily, in Windows, this problem is ignored. In Linux, however, the OS stops reading the descriptor after this error. The device's audio interfaces will continue to function, but the HID interface, which occurs after the error, will never enumerate.
This error will be fixed in a future release of the CP2114.