Homebrew CMI 8738 drivers
Homebrew CMI 8738 drivers
Oct 16 2006, 16:50
Joined: 17-November 05
Member No.: 25818
I'm currently working on WDM drivers for soundcards based on the C-Media 8738/8768 chip. I plan to release the entire source code under a BSD-like license sometime in the future. I'm mainly interested in the S/PDIF connectivity because the DAC of the card sucks.
For testing, you need:
- a CMI 8738-MX/8768 based soundcard with S/PDIF (which are available for around 10-15 USD)
- Windows 2000/XP
Some of the features are:
- bitperfect S/PDIF output for 16bit 44.1/48/88.2/96kHz stereo signals through kernel streaming / dsound / waveout
- bitperfect AC3/DTS passthrough
- multi-channel output (that disables the S/PDIF output port unfortunately)
- recording support
- basic mixer support
- UART support (but disabled for now)
Apparently, the C-Media chip supports only 16 bit contrary to the claims in their specs. I haven't been able to get 24bit output even with the official drivers. But 96kHz output seems to work fine on the newer 8738 chips.
You can help me by posting your chip version and configuration, and testing whether 16bit/96kHz and 24bit/48kHz output through kernel streaming works (foobar2000, winamp have the necessary plugins). I'm specifically looking for people who have means to tell a 16bit S/PDIF stream from a 24bit stream.
When the driver loads, it prints the version of your chip to the kernel debugger. You need a running instance of DebugView (http://www.sysinternals.com/Utilities/DebugView.html) to catch the strings. In other words: open DebugView before updating the drivers.
Note that the drivers aren't signed, so you have to install them manually (Update Driver => Install from a list or specific location => Don't search. I will choose the driver to install => Continue anyway).
A 64-bit build has been successfully tested, and I'll probably release a build sometime soon.
Here are the download links for the latest version:
This post has been edited by d0gbert: Mar 14 2008, 20:30
Jan 3 2007, 20:12
Joined: 31-December 06
Member No.: 39169
I hooked up my oscilloscope to a CMI8738 SPDIF output, and studying the resulting waveforms I draw these conclusions:
1) original driver V 188.8.131.524 (identical results on 6.39)
SPDIF OUTPUT IS LIMITED TO ONLY 14 BIT RESOLUTION!!
sorry for the caps
I tested this using both foobar2000 and windows media player on a clean XP install
Moreover I also tested the C-Media audio rack on 24 bits content, also ending up with only 14 audio bits.
(I created the 24 bit content in cooledit. first I converted a file to 32 bits sample depth. Then I reduced amplitude by 90 dB, to create LSB content. Then I tried all 6 modes cooledit could store this file to wav)
The 24 bit is claimed by cmedia is bogus!
2) Linux (Ubuntu edgy Alsa)
After counting bits in the waveform over and over, I still was confused about the missing 2 bits, so I tested in Linux.
Right away I saw the 2 extra bits, not only confirming my aritmetic skills but also proving the device 16 bit capability.
3) your driver CMIDriver-0.9.8-bin-x86. Date 2-1-2007
Also your driver gives correct 16 bits spdif resolution
btw: Is there a way with your driver to set spdif mode without the cmedia mixer?
I'd like to have these controls in control panel/ sound and audio devices / tab audio / playback device -advanced
|Lo-Fi Version||Time is now: 29th November 2015 - 14:04|