

The CM108B, manufactured by C-Media, is a USB audio controller designed to deliver high-quality audio input and output capabilities. It integrates a USB interface with audio codec functionality, making it an ideal solution for computer audio applications. The CM108B supports various audio formats and features a built-in DAC (Digital-to-Analog Converter) and ADC (Analog-to-Digital Converter), ensuring excellent audio performance. Its compact design and versatile functionality make it suitable for multimedia devices, USB headsets, sound cards, and other audio peripherals.








| Parameter | Specification |
|---|---|
| USB Interface | USB 2.0 Full-Speed |
| Audio Codec | 16-bit ADC and DAC |
| Sampling Rates | 8 kHz, 11.025 kHz, 16 kHz, 22.05 kHz, |
| 32 kHz, 44.1 kHz, 48 kHz | |
| Output Channels | Stereo (2 channels) |
| Input Channels | Mono microphone input |
| Operating Voltage | 3.3V (internal LDO regulator for 5V) |
| Power Consumption | Low power consumption |
| Package Type | 48-pin LQFP |
The CM108B comes in a 48-pin LQFP package. Below is a summary of key pins and their functions:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | VDD33 | 3.3V Power Supply |
| 2 | GND | Ground |
| 10 | MIC_IN | Microphone Input |
| 15 | SPK_OUT_L | Left Speaker Output |
| 16 | SPK_OUT_R | Right Speaker Output |
| 20 | USB_DP | USB Data Positive |
| 21 | USB_DM | USB Data Negative |
| 30 | RESET_N | Active Low Reset |
| 40 | GPIO1 | General Purpose I/O Pin 1 |
| 41 | GPIO2 | General Purpose I/O Pin 2 |
For a complete pinout, refer to the CM108B datasheet provided by C-Media.
While the CM108B is primarily a USB audio controller, it can be interfaced with an Arduino UNO for GPIO control or other custom applications. Below is an example code snippet for toggling GPIO1:
// Example code for controlling GPIO1 on the CM108B using Arduino UNO
const int gpio1Pin = 7; // Connect GPIO1 of CM108B to Arduino pin 7
void setup() {
pinMode(gpio1Pin, OUTPUT); // Set GPIO1 as an output
}
void loop() {
digitalWrite(gpio1Pin, HIGH); // Turn GPIO1 ON
delay(1000); // Wait for 1 second
digitalWrite(gpio1Pin, LOW); // Turn GPIO1 OFF
delay(1000); // Wait for 1 second
}
Note: Ensure proper level shifting if the GPIO pins of the CM108B operate at 3.3V while the Arduino operates at 5V.
No Audio Output:
Microphone Not Working:
Device Not Recognized by USB Host:
Distorted Audio:
Q: Does the CM108B support stereo microphone input?
A: No, the CM108B supports mono microphone input only.
Q: Can the CM108B be used without additional firmware?
A: Yes, the CM108B is designed to work as a plug-and-play USB audio device on most operating systems. However, custom firmware may be required for advanced features.
Q: What is the maximum sampling rate supported by the CM108B?
A: The CM108B supports a maximum sampling rate of 48 kHz.
Q: Is the CM108B compatible with Linux?
A: Yes, the CM108B is compatible with Linux, as well as Windows and macOS, without requiring additional drivers in most cases.
Q: Can the GPIO pins be used for custom applications?
A: Yes, the GPIO pins can be configured for various purposes, such as controlling LEDs or interfacing with other peripherals.