CMPCI(4)
π NAME π
okay bestie, welcome to the CMPCI(4) page from the Kernel Interfaces Manual β aka cmpci, the C-Media CMI8x38 audio device driver, and she is literally the main character π
β¨
β¨ SYNOPSIS β¨
here's how she shows up, no cap:
cmpci* at pci? dev ? function ?
audio* at audiobus?
mpu* at cmpci?
opl* at cmpci? flags 1
πΈ DESCRIPTION πΈ
okay so the cmpci device driver supports C-Media CMI8x38 based sound cards π
the device has SPDIF input/output interfaces, a 16bit CODEC with analog mixer, an OPL3 FM Synthesizer, and an MPU401 compatible MIDI I/O port interface. it's giving iconic, honestly π¦
ποΈ MIXER DEVICE ποΈ
you can access the mixer device of the cmpci driver via the mixerctl(1) command. the complex structure is analyzed as follows β buckle up bestie, she's a lot but she's worth it π
SPDIF in ----------------------
#1(coax)->|spdin1 | R -----------------------
#2(opt)-->|spdin2 spdif.input |--*->--|spdin spdif.output |--> SPDIF
-->|spdout | | -->|playback | output
| ---------------------- | | -----------------------
--------------------<------+-*
---------<-------------------+-+----------------------------------
| ------------------------ | | ----------------------- |
-->|legacy spdif.output. |--+-*-->|spdout | |
-->|wave playback | ----->|spdin spdif.monitor |---- |
| ------------------------ NC-|off | | |
---------<-- spdif ----------------------- | |
-------+------- dac ------------ ----------------- v |
wave -->|playback.mode|---->|inputs.dac|-*->|inputs.dac.mute|->----- |
playback --------------- ------------ R ----------------- | + | |
----------------- --------------------- |mix| |
FM synthesizer -->|inputs.fmsynth |--*->|inputs.fmsynth.mute|-->----- |
----------------- R --------------------- *->--
CD ---------------------- --------------------------- v
LINE-IN ->|inputs.{cd,line,aux}|-*>|inputs.{cd,line,aux}.mute|->-----
AUX ---------------------- R --------------------------- | |
------------------ | |
PC-SPK -->| inputs.speaker |----------------------------------->| + |
------------------ | |
------------------- ------------ ----------------- |mix|
MIC --*-->|inputs.mic.preamp|->|inputs.mic|->|inputs.mic.mute|->| |
| ------------------- ------------ ----------------- -----
| ------------ ----------------- |
--->|record.mic|-->| | v
------------ | record.source |-->to -----------
*R-->| (select, mix) | recording |outputs.*|-->
----------------- ----------- SPK
(front)
lowkey important: the 2nd SPDIF input exists only on CMI8738/PCI-6ch versions. don't @ me if your card doesn't have it π«Ά
πΈ MIXER EXAMPLES πΈ
here are examples about wave playback and SPDIF input/output ports β copy these exactly, they're load-bearing bestie π
π Playback to speaker, SPDIF input to SPDIF output
mixerctl -w playback.mode=dac spdif.output=spdin
spdif.monitor=off
π Playback to SPDIF output, SPDIF input to speaker
mixerctl -w playback.mode=spdif spdif.output=playback
spdif.output.playback=wave spdif.monitor=spdin
π SPDIF input to both SPDIF output and speaker
mixerctl -w spdif.output=spdin spdif.monitor=spdin
π Playback to both SPDIF output and speaker
mixerctl -w playback.mode=spdif spdif.output=playback
spdif.output.playback=wave spdif.monitor=spdout
π Mix playback and SPDIF input to speaker
mixerctl -w playback.mode=dac spdif.monitor=spdin
π SEE ALSO π
go read these too, they're all part of the lore β¨
π°οΈ HISTORY π°οΈ
the cmpci device driver appeared in NetBSD 1.5 β vintage but still cute π
π BUGS π
4ch/6chplayback is not yet available β sad, I know π- Joystick port is not supported β π
spdif.output.playback=legacydoes not seem to work properly β π
this page is from Debian, dated June 22, 2005 β mwah, stay slaying bestie πβ¨
π¦ where this page comes from
- nixpkgs unstable: netbsd-source 11.0
- Copyright (c) 2000, 2001 The NetBSD Foundation, Inc
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms