Tag Archives: Audio

Fake CM108 USB Audio Devices

While working on some projects for APRS, I had the need for some more USB audio devices. LONG ago, I had purchased some “3D Sound” USB devices on eBay. These old devices used a chipset (Tenx TP6911) designed for “headsets” and have a fairly poor ADC, with a max of 24 KHz resolution (pretty low). The C-Media 108 chipset has long been considered a decent value chipset, so I went to eBay to find some CM108 based USB devices. I found a listing that was explicitly stating that it had this chipset.

eBay listing for CM108 USB Audio chipset devices
Clearly claims to be CM108 Chipset… but what is it really!?

I had heard about fake chips being out there, and knew that it was a strong chance of this being the case. But hey, these are plenty cheap and it was a low risk experiment!

I plugged one into my Raspberry Pi and ran dmesg

[  136.786975] usb 1-1.3: new full-speed USB device number 3 using xhci_hcd
[  136.933737] usb 1-1.3: New USB device found, idVendor=08bb, idProduct=2902, bcdDevice= 1.00
[  136.933757] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  136.933774] usb 1-1.3: Product: USB PnP Sound Device
[  136.933789] usb 1-1.3: Manufacturer: C-Media Electronics Inc.
[  136.956376] input: C-Media Electronics Inc.       USB PnP Sound Device as /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3/1-1.3:1.3/0003:08BB:2902.0001/input/input0
[  137.017913] hid-generic 0003:08BB:2902.0001: input,hidraw0: USB HID v1.00 Device [C-Media Electronics Inc.       USB PnP Sound Device] on usb-0000:01:00.0-1.3/input3
[  137.110053] usbcore: registered new interface driver snd-usb-audio

So far, it seems to be OK. dmesg is clearly saying this is a C-Media device that has been detected. Next I ran lsusb:

pi@raspberrypi:~ $ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 08bb:2902 Texas Instruments PCM2902 Audio Codec
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@raspberrypi:~ $

Hmmm, that doesn’t look like C-Media! It clearly shows that it is a TI PCM2902 chipset! Well, let’s try another command, which is likely looking at similar datapoint:

pi@raspberrypi:~ $ inxi --audio
Audio:     Device-1: bcm2835-audio driver: bcm2835_audio
           Device-2: bcm2711-hdmi0 driver: N/A
           Device-3: bcm2711-hdmi1 driver: N/A
           Device-4: Texas Instruments PCM2902 Audio Codec type: USB driver: hid-generic,snd-usb-audio,usbhid
           Sound Server: ALSA v: k5.4.83-v7l+
pi@raspberrypi:~ $

If you look at the PID and VID from the dmesg and lsusb outputs, it shows “08bb:2902”. Doing some independent Google searches and you’ll see that it is indeed referencing the PCM2902 chipset.

So, we seem to have devices that are PCM2902 and NOT the CM108. Presumably, the eBay seller altered the firmware to display the C-Media in the labeling. If someone plugs these into a Windows machine, they would just see the C-Media labeling and be unaware of what is actually being used. Because most USB audio devices use a universal standard, there isn’t a driver confusion that would have made it obvious.

How do these chipsets compare?

C-Media CM108Texas Instruments PCM2902Tenx TP6911
DAC Sampling Rate48 / 44.1KHz48 / 44.1 / 32KHz48 KHz
ADC Sampling Rate48 / 44.1KHz48 / 44.1 / 32 / 22.05 / 16 / 11.025 / 8 KHz24 KHz
DAC SNR93 dB96 dB?
DAC Dynamic Range92 dB93 dB?
ADC SNR90 dB89 dB?
ADC Dynamic Range88.5 dB89 dB?
Resolution16 bit16 bit?
CM108 vs PCM2902 vs TP6911

Based on these specs, the PCM2902 isn’t a whole lot different than the CM108. There are certainly other things to consider when comparing. I included the TP6911, as that was what I was initially trying to replace and improve. Clearly either of the PCM2902 and CM108 are going to be better. I couldn’t even find more details or specs on the TP6911, even on the official datasheet!

For now, I plan to just use these PCM2902 and see how they perform. They may not be what I expected to receive, but they should get the job done.