1 =================================================
2 Brief Notes on C-Media 8338/8738/8768/8770 Driver
3 =================================================
5 Takashi Iwai <tiwai@suse.de>
8 Front/Rear Multi-channel Playback
9 ---------------------------------
11 CM8x38 chip can use ADC as the second DAC so that two different stereo
12 channels can be used for front/rear playbacks. Since there are two
13 DACs, both streams are handled independently unlike the 4/6ch multi-
14 channel playbacks in the section below.
16 As default, ALSA driver assigns the first PCM device (i.e. hw:0,0 for
17 card#0) for front and 4/6ch playbacks, while the second PCM device
18 (hw:0,1) is assigned to the second DAC for rear playback.
20 There are slight differences between the two DACs:
22 - The first DAC supports U8 and S16LE formats, while the second DAC
24 - The second DAC supports only two channel stereo.
26 Please note that the CM8x38 DAC doesn't support continuous playback
27 rate but only fixed rates: 5512, 8000, 11025, 16000, 22050, 32000,
30 The rear output can be heard only when "Four Channel Mode" switch is
31 disabled. Otherwise no signal will be routed to the rear speakers.
32 As default it's turned on.
35 When "Four Channel Mode" switch is off, the output from rear speakers
36 will be FULL VOLUME regardless of Master and PCM volumes [#]_.
37 This might damage your audio equipment. Please disconnect speakers
38 before your turn off this switch.
42 Well.. I once got the output with correct volume (i.e. same with the
43 front one) and was so excited. It was even with "Four Channel" bit
44 on and "double DAC" mode. Actually I could hear separate 4 channels
45 from front and rear speakers! But.. after reboot, all was gone.
46 It's a very pity that I didn't save the register dump at that
47 time.. Maybe there is an unknown register to achieve this...
49 If your card has an extra output jack for the rear output, the rear
50 playback should be routed there as default. If not, there is a
51 control switch in the driver "Line-In As Rear", which you can change
52 via alsamixer or somewhat else. When this switch is on, line-in jack
53 is used as rear output.
55 There are two more controls regarding to the rear output.
56 The "Exchange DAC" switch is used to exchange front and rear playback
57 routes, i.e. the 2nd DAC is output from front output.
60 4/6 Multi-Channel Playback
61 --------------------------
63 The recent CM8738 chips support for the 4/6 multi-channel playback
64 function. This is useful especially for AC3 decoding.
66 When the multi-channel is supported, the driver name has a suffix
67 "-MC" such like "CMI8738-MC6". You can check this name from
70 When the 4/6-ch output is enabled, the second DAC accepts up to 6 (or
71 4) channels. While the dual DAC supports two different rates or
72 formats, the 4/6-ch playback supports only the same condition for all
73 channels. Since the multi-channel playback mode uses both DACs, you
74 cannot operate with full-duplex.
76 The 4.0 and 5.1 modes are defined as the pcm "surround40" and "surround51"
77 in alsa-lib. For example, you can play a WAV file with 6 channels like
80 % aplay -Dsurround51 sixchannels.wav
82 For programming the 4/6 channel playback, you need to specify the PCM
83 channels as you like and set the format S16LE. For example, for playback
87 snd_pcm_hw_params_set_access(pcm, hw, SND_PCM_ACCESS_RW_INTERLEAVED);
88 // or mmap if you like
89 snd_pcm_hw_params_set_format(pcm, hw, SND_PCM_FORMAT_S16_LE);
90 snd_pcm_hw_params_set_channels(pcm, hw, 4);
92 and use the interleaved 4 channel data.
94 There are some control switches affecting to the speaker connections:
97 an enum control to change the behavior of line-in
98 jack. Either "Line-In", "Rear Output" or "Bass Output" can
99 be selected. The last item is available only with model 039
101 When "Rear Output" is chosen, the surround channels 3 and 4
102 are output to line-in jack.
104 an enum control to change the behavior of mic-in
105 jack. Either "Mic-In" or "Center/LFE Output" can be
107 When "Center/LFE Output" is chosen, the center and bass
108 channels (channels 5 and 6) are output to mic-in jack.
113 The CM8x38 provides the excellent SPDIF capability with very cheap
114 price (yes, that's the reason I bought the card :)
116 The SPDIF playback and capture are done via the third PCM device
117 (hw:0,2). Usually this is assigned to the PCM device "spdif".
118 The available rates are 44100 and 48000 Hz.
119 For playback with aplay, you can run like below:
122 % aplay -Dhw:0,2 foo.wav
128 % aplay -Dspdif foo.wav
130 24bit format is also supported experimentally.
132 The playback and capture over SPDIF use normal DAC and ADC,
133 respectively, so you cannot playback both analog and digital streams
136 To enable SPDIF output, you need to turn on "IEC958 Output Switch"
137 control via mixer or alsactl ("IEC958" is the official name of
138 so-called S/PDIF). Then you'll see the red light on from the card so
139 you know that's working obviously :)
140 The SPDIF input is always enabled, so you can hear SPDIF input data
141 from line-out with "IEC958 In Monitor" switch at any time (see
144 You can play via SPDIF even with the first device (hw:0,0),
145 but SPDIF is enabled only when the proper format (S16LE), sample rate
146 (441100 or 48000) and channels (2) are used. Otherwise it's turned
147 off. (Also don't forget to turn on "IEC958 Output Switch", too.)
150 Additionally there are relevant control switches:
153 Mix analog PCM playback and FM-OPL/3 streams and
154 output through SPDIF. This switch appears only on old chip
155 models (CM8738 033 and 037).
157 Note: without this control you can output PCM to SPDIF.
158 This is "mixing" of streams, so e.g. it's not for AC3 output
159 (see the next section).
162 Select SPDIF input, the internal CD-in (false)
163 and the external input (true).
166 SPDIF input data is loop back into SPDIF
170 Set the copyright bit.
173 Select 0.5V (coax) or 5V (optical) interface.
174 On some cards this doesn't work and you need to change the
175 configuration with hardware dip-switch.
178 SPDIF input is routed to DAC.
180 IEC958 In Phase Inverse
181 Set SPDIF input format as inverse.
182 [FIXME: this doesn't work on all chips..]
185 Set input validity flag detection.
187 Note: When "PCM Playback Switch" is on, you'll hear the digital output
188 stream through analog line-out.
191 The AC3 (RAW DIGITAL) OUTPUT
192 ----------------------------
194 The driver supports raw digital (typically AC3) i/o over SPDIF. This
195 can be toggled via IEC958 playback control, but usually you need to
196 access it via alsa-lib. See alsa-lib documents for more details.
198 On the raw digital mode, the "PCM Playback Switch" is automatically
199 turned off so that non-audio data is heard from the analog line-out.
200 Similarly the following switches are off: "IEC958 Mix Analog" and
201 "IEC958 Loop". The switches are resumed after closing the SPDIF PCM
202 device automatically to the previous state.
204 On the model 033, AC3 is implemented by the software conversion in
205 the alsa-lib. If you need to bypass the software conversion of IEC958
206 subframes, pass the "soft_ac3=0" module option. This doesn't matter
210 ANALOG MIXER INTERFACE
211 ----------------------
213 The mixer interface on CM8x38 is similar to SB16.
214 There are Master, PCM, Synth, CD, Line, Mic and PC Speaker playback
215 volumes. Synth, CD, Line and Mic have playback and capture switches,
216 too, as well as SB16.
218 In addition to the standard SB mixer, CM8x38 provides more functions.
219 - PCM playback switch
220 - PCM capture switch (to capture the data sent to DAC)
223 - Aux playback volume/switch and capture switch
230 With CMI8338 chips, the MPU401-UART interface is disabled as default.
231 You need to set the module option "mpu_port" to a valid I/O port address
232 to enable MIDI support. Valid I/O ports are 0x300, 0x310, 0x320 and
233 0x330. Choose a value that doesn't conflict with other cards.
235 With CMI8738 and newer chips, the MIDI interface is enabled by default
236 and the driver automatically chooses a port address.
238 There is *no* hardware wavetable function on this chip (except for
240 What's said as MIDI synth on Windows is a software synthesizer
241 emulation. On Linux use TiMidity or other softsynth program for
248 The FM OPL/3 is also enabled as default only for the first card.
249 Set "fm_port" module option for more cards.
251 The output quality of FM OPL/3 is, however, very weird.
254 CMI8768 and newer chips do not have the FM synth.
260 The legacy joystick is supported. To enable the joystick support, pass
261 joystick_port=1 module option. The value 1 means the auto-detection.
262 If the auto-detection fails, try to pass the exact I/O address.
264 The modem is enabled dynamically via a card control switch "Modem".
267 Debugging Information
268 ---------------------
270 The registers are shown in /proc/asound/cardX/cmipci. If you have any
271 problem (especially unexpected behavior of mixer), please attach the
272 output of this proc file together with the bug report.