CM6631 usb audio interface .... any good?

successful chip swap

the cm6631 was successfully swapped out for a cm6631a on friday evening. also, the reset IC was desoldered. i2c eeprom was left in place.

interestingly, it wasn't necessary to short out or otherwise disable the parallel flash for the device to enumerate via usb.

using the fw update utility, i settled on 6631A-UsbDAC20Only-0101-ALL.hex as this "breeze audio" adapter is wired for spdif/toslink only (along with unpopulated i2s headers internally).

after several hours of testing plugged in to the "ouya" where the out-of-sync sample rate issue was happening with the cm6631, the cm6631a has not once shown the issue!

so this was a success. $6.15 shipped for the IC from symmetry electronics and i've got a brand new usb spdif interface ;) instead of upsampling to 96khz, i'm now taking advantage of the 88.2khz sample rate.

attached is a picture of the board post swap.
 

Attachments

  • breeze_audio_cm6631a_usb_spdif.jpg
    breeze_audio_cm6631a_usb_spdif.jpg
    997.9 KB · Views: 532
Any firmware to work with S/PDIF I/O?
Is it very difficult to develop? (With 24bit support, because 16bit is easily reached with PCM29xx).
I'm not even interested in I²S, just spdif would be great! :D
I've been looking for stuff like that for a long time, and I can not find it.:(
I also do not meet for other chip.
Can anyone help?
 
Any firmware to work with S/PDIF I/O?
Is it very difficult to develop? (With 24bit support, because 16bit is easily reached with PCM29xx).
I'm not even interested in I²S, just spdif would be great! :D
I've been looking for stuff like that for a long time, and I can not find it.:(
I also do not meet for other chip.
Can anyone help?

You can just use any other chips for SPDIF I/O, am I missing something?
 
Any firmware to work with S/PDIF I/O?
Is it very difficult to develop? (With 24bit support, because 16bit is easily reached with PCM29xx).
I'm not even interested in I²S, just spdif would be great! :D
I've been looking for stuff like that for a long time, and I can not find it.:(
I also do not meet for other chip.
Can anyone help?
In the basic firmware made available in sdk from the s/pdif options, both inputs and output work, besides of course, i2s are still available:

Code:
& G_Audio20InterfaceAudioCtrl,
& G_Audio20InterfaceSpeaker,
[B]& G_Audio20InterfaceSpdifOut,[/B]
& G_Audio20InterfaceHeadphone,
& G_Audio20InterfaceMicIn,
& G_Audio20InterfaceLineIn,
[B]& G_Audio20InterfaceSpdifIn,[/B]
& G_InterfaceHid

You can use the basic firmware without changes and do not use the options you do not want, or change the source code accordingly.
 
You can just use any other chips for SPDIF I/O, am I missing something?

I purchased PCM2906C, it does not require custom firmware. I liked the tests I did.
But another one that supports 24bit, would make me very happy! :D
Unfortunately I have not found it yet, and I realize that content related to this is also very scarce.
Do you have any suggestions?

Try to find a simple SPDIF input module.

As well? Any suggestion?
Maybe you did not understand.

An example is USBStreamer.
But it is very expensive, with the cost of shipping exceeds $100.
At this value, relying on a single unit, is very bad. :eek:
There must be another solution in the DIY world.


In the basic firmware made available in sdk from the s/pdif options, both inputs and output work, besides of course, i2s are still available:

Code:
& G_Audio20InterfaceAudioCtrl,
& G_Audio20InterfaceSpeaker,
[B]& G_Audio20InterfaceSpdifOut,[/B]
& G_Audio20InterfaceHeadphone,
& G_Audio20InterfaceMicIn,
& G_Audio20InterfaceLineIn,
[B]& G_Audio20InterfaceSpdifIn,[/B]
& G_InterfaceHid

You can use the basic firmware without changes and do not use the options you do not want, or change the source code accordingly.

I'll check it out right now! THX!
 
Last edited:
Exactly, this is the basis for further experiments. The datasheet is quite poor, but the hardware layout itself is not complicated. You will have much more "fun" with reworking the firmware, of course if you want to delete the unnecessary properties related to i2s interfaces and leave only s/pdif. In any case, good luck!
 
I'm using CM6631A+PCM1974A as my USB DAC. PCM1974A is connected to headphone output I2S pins of CM6631A. It works well on my PC, then I try to plug CM6331A into the USB port of volumio, volumio can recognize "USB 2.0 High Speed True HD Audio" and I set volumio to use CM6631A as output, but I can't hear anything from my headphone. I have worked on it for some days, but nothing works. Is there anyone who have any ideas to solve this problem? Very appreciate for that.
 
Hi everyone,

I am trying to activate one of the I2S inputs (Mic in) on the CM6631A.
I have been reading through the documentation for the SDK, but when I attempt to build a firmware .hex using the build.bat file I get the following error;
Build_bat not working.jpg - Google Drive

I have tried to change the names and PID in the build.bat to match my CM6631A but nothing seem to work.
Could someone point me in the right direction?

thanks!
 
Last edited:
Hi everyone,

I am trying to activate one of the I2S inputs (Mic in) on the CM6631A.
I have been reading through the documentation for the SDK, but when I attempt to build a firmware .hex using the build.bat file I get the following error;
Build_bat not working.jpg - Google Drive

I have tried to change the names and PID in the build.bat to match my CM6631A but nothing seem to work.
Could someone point me in the right direction?

thanks!

Do you have the Keil C51 compiler installed? It looks like you either don't have it installed, or it's not in your PATH environment variable.
 
Do you have the Keil C51 compiler installed? It looks like you either don't have it installed, or it's not in your PATH environment variable.

Ah so that's the problem? I thought the SDK came with some GUI-less version of the compiler.

My experience with coding is limited to arduino, I'm more of a hardware guy. My angle on this is a personal project, evolved from a mint tin headphone amp, to now include a PCM1792A DAC and this CM6631A as USB interface. Thus far it has been a success but it seems that adding a MIC input will be a chore.

So if I can get my hands on a copy of the C51 compiler I'm one step closer?

Thanks for the swift answer.
 
Yes, the Keil c51 compiler is necessary. By the way, be sure to read the description attached to the SDK - first "CM66xx-A Source Code Programming Guide"

Ok so I got my hands on a copy of the Keil C51, and after reading through the programming guide I set up the build.bat file to the correct chip type, VID and PID:

build.bat.jpg

After that i set up the config.h file in the custom folder, the only change here is the commenting out of #define _EXT_CLK_SI5351_

config.h.jpg

after this I executed the build.bat 0203 from command promt, which successfully created a file named 6631A-0203-ALL.hex.

I then flashed this firmware to my board, no problems here, but upon the re-plugging the device the PID of my board mysteriously had changed to 0400 instead of 0004.
I thought oh well, how does it look in the sound device manager?
All bells and whistles, all outputs and inputs are enabled! There is just one problem: I have no volume/mute control anymore...

Back to creating firmware.. After som trial and error I found out that I can manipulate the PID with the tool called AddInfo located in the boot folder.

I then change my PID to 0314 to match the v0108 firmware uploaded to this thread. After flashing the 0108 firmware the changing PID problem is gone, and all inputs and outputs are enabled, but still no volume control.

When I revert to the firmware created by the CM6631AConfigurateTool; volume control is back, but the input/outputs are gone.

Any suggestions? Thanks for the help so far.
 
I'm using CM6631A as my USB DAC. It works OK on my PC, and I plug CM6331A into the USB port of volumio, volumio can recognize it, but I can't hear any sound from it. Then I use XMOS instead of CM6631A, connect to volumio, everything is OK, the setting of volumio is all the same, so what’s the problem with my CM6631A?