Claude-skill-registry cmedia

C-Media Electronics MPN encoding patterns, USB audio controller decoding, and handler guidance. Use when working with C-Media audio ICs or CMediaHandler.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/cmedia" ~/.claude/skills/majiayu000-claude-skill-registry-cmedia && rm -rf "$T"
manifest: skills/data/cmedia/SKILL.md
source content

C-Media Electronics Manufacturer Skill

MPN Structure

C-Media specializes in USB and HD audio controller ICs.

CM Series (USB Audio)

CM[SERIES][VARIANT]-[PACKAGE][PINS]
   |   |      |        |       |
   |   |      |        |       +-- Pin count (optional)
   |   |      |        +-- Package code (QFP, LQFP, etc.)
   |   |      +-- Variant (A, AH, B)
   |   +-- Series (108, 109, 119, 6xxx)
   +-- CM = C-Media prefix

CMI Series (HD/PCI Audio)

CMI[SERIES][VARIANT]
    |   |      |
    |   |      +-- Variant suffix
    |   +-- Series (8738, 8768, 8788)
    +-- CMI = C-Media Interface

Example Decoding

CM108AH
|  | ||
|  | |+-- H = variant revision
|  | +-- A = first variant
|  +-- 108 = Basic USB stereo audio codec
+-- CM = C-Media prefix

CM6631A-S
|  |   ||
|  |   |+-- S = SSOP package
|  |   +-- A = variant
|  +-- 6631 = Professional USB 2.0 audio processor
+-- CM = C-Media prefix

CMI8788
|   |||
|   ||+-- 8 = series number
|   |+-- 8 = 8-channel HD audio
|   +-- 87 = HD audio codec series
+-- CMI = C-Media Interface

Product Families

CM108 Series - Basic USB Audio Codec

Entry-level USB stereo audio for PC peripherals.

PartDescriptionFeatures
CM108USB stereo codecBasic stereo
CM108AHEnhanced versionHigher quality
CM108BCost-optimizedLower cost

CM109 Series - USB Audio with HID

USB audio with keyboard/HID controller for headsets.

PartDescription
CM109USB audio + HID keyboard
CM109AEnhanced variant

CM119 Series - USB 7.1 Channel Audio

Multi-channel USB audio for gaming and surround sound.

PartDescriptionChannels
CM1197.1 USB audio8
CM119AEnhanced version8
CM119BCost-optimized8

CM6xxx Series - Professional USB Audio

Higher-end USB audio ICs for professional applications.

PartDescription
CM6206USB 2.0 basic audio
CM6400USB audio controller
CM6631USB 2.0 audio processor
CM6631AEnhanced CM6631
CM6632USB audio DAC

CMI87xx Series - HD Audio Codec (PCI/PCIe)

HD audio codecs for motherboards and sound cards.

PartDescriptionFeatures
CMI8738PCI audio codecLegacy 7.1
CMI8768PCI-E audio7.1 surround
CMI8788Oxygen HD AudioHigh-end 8-ch

CMI83xx Series - Legacy PCI Audio

Older PCI audio codecs.

PartDescription
CMI8330Legacy PCI audio

Package Codes

CodePackageNotes
QFPQFPQuad flat package
LQFP, LQLQFPLow-profile QFP
QFNQFNQuad flat no-lead
SSOP, SSSOPShrink small outline
TQFPTQFPThin QFP
PLCCPLCCPlastic leadless
BGABGABall grid array

Package Code Extraction

// Handle hyphenated suffixes
// CM6631A-LQ -> LQFP
// CM6631A-S -> SSOP

// Handle embedded package codes
// After variant letters, look for package indicators

Variant Suffixes

SuffixMeaning
AFirst variant revision
AHEnhanced variant
BSecond variant (often cost-optimized)

Handler Implementation Notes

Series Extraction

// CM108, CM109, CM119 - return 5 characters
if (upperMpn.matches("^CM108.*")) return "CM108";
if (upperMpn.matches("^CM109.*")) return "CM109";
if (upperMpn.matches("^CM119.*")) return "CM119";

// CM6xxx - return 6 characters (CM + 4 digits)
if (upperMpn.matches("^CM6[0-9]{3}.*")) {
    return upperMpn.substring(0, 6);  // CM6631
}

// CMI87xx - return 7 characters (CMI + 4 digits)
if (upperMpn.matches("^CMI87[0-9]{2}.*")) {
    return upperMpn.substring(0, 7);  // CMI8788
}

Base Part Number Extraction

// Include variant letters in base part
// CM108AH -> CM108AH
// CM6631A -> CM6631A

// Stop at package indicators
if (remaining.matches("^(QFP|LQFP|QFN|SSOP|TQFP).*")) {
    break;
}

Matching Patterns

// CM10x series
"^CM10[89][A-Z]*.*"

// CM119 series
"^CM119[A-Z]*.*"

// CM6xxx series
"^CM6[0-9]{3}[A-Z]*.*"

// CMI87xx series
"^CMI87[0-9]{2}[A-Z]*.*"

// CMI83xx series
"^CMI83[0-9]{2}[A-Z]*.*"

Replacement Rules

Same Series Variants

Parts in the same series with different variants (A, AH, B) are generally compatible:

  • CM108 -> CM108A -> CM108AH (increasing quality)
  • CM119 -> CM119A -> CM119B (same features, different optimization)

Different Series

Different series are NOT compatible (different USB classes, channel counts):

  • CM6206 != CM6631 (different USB audio implementations)
  • CM108 != CM119 (stereo vs 7.1 channel)

Related Files

  • Handler:
    manufacturers/CMediaHandler.java
  • Component types:
    ComponentType.IC

Common MPNs

MPNDescriptionApplication
CM108AHUSB stereo codecUSB headsets
CM109USB audio + HIDGaming headsets
CM119USB 7.1 audioGaming audio
CM6631AUSB 2.0 audio processorUSB DACs
CM6632USB audio DACExternal audio
CMI8788Oxygen HD AudioSound cards

USB Class Compliance

SeriesUSB ClassDriver Required
CM108USB Audio Class 1.0No (driverless)
CM119USB Audio Class 1.0No (driverless)
CM6631USB Audio Class 2.0Yes (on Windows)

Applications

  • USB headsets
  • USB sound cards
  • Gaming audio devices
  • USB DACs
  • Webcams with audio
  • Conference devices
  • PCI/PCIe sound cards
  • Motherboard audio

Learnings & Edge Cases

  • CM vs CMI prefix: CM = USB audio controllers, CMI = PCI/PCIe HD audio codecs.
  • USB Class matters: CM108/CM119 are class-compliant (driverless), CM6631 needs drivers on Windows.
  • 7.1 channel support: CM119 series is for 7.1 surround, CM108 is stereo only.
  • HID keyboard support: CM109 has integrated HID controller for headset buttons/volume.
  • CMI8788 "Oxygen": High-end part used in audiophile sound cards (Asus Xonar, etc.).
  • Variant progression: A < AH < B is not always quality progression - check datasheets.
  • Package suffix position: Package code comes after variant letter(s) in hyphenated format.
<!-- Add new learnings above this line -->