Open-source USB interface: Audio Widget

I don't think either the AB-1.1 or my USB9023 would be a low cost fit to your hpa design. However, I was bored a few weeks ago and turned out quick board, 5cm x 5cm, using the Tenor 7022L and the ES9023 DAC. (I have attached a rendering of the pcb) I expect the circuit boards to arrive this week and will see this layout sounds.

The layout is standalone but there would be no problem adapting the design to take the supply from your HPA and feed the audio back to you.

Thanks. If I read correctly, Borges is selling the complete two board package with the enclosure, connectors, etc. for around $120? I am assuming a single PCB would be significantly less?

I am also curious where you are getting the Tenor TE7022L and does it require licensing or programming? Are you planning on selling completed boards with the Tenor and ESS chips? From what I know the TE7022L is not very DIY-friendly but I might be missing something.
 
Hi,

have you looked at the AB-1.1 homepage (signature below)? Perhaps the USB-I2S module could work with an alternative analog board?

Our design is meant as a starting point. Without increasing the price severely, any headphone amp would have been a pretty poor one. Plus we didn't have the time to do it properly when the boards were ordered.

What the project needs now is more people who wish to do analog hacking (DAC, IVC, power, clocks etc.) to tweak out more.


Cheers,
Børge

This is a very interesting project! I have been looking at USB DAC solutions that operate at 24/44 with native windows drivers as a companion to an upcoming desktop version of the existing O2 Headphone Amplifier.

The ideal would be a single low cost daughter board with a USB jack and the power and line level audio connections via a pin header (getting its power from the headphone amp). The headphone amp's low noise power supply could be adapted to the DAC and analog circuitry's needs. It could use the ES9022 or another DAC. I'm thinking something like a lower cost version of this ($175 US + shipping) Tenor based board:

Violectric USB 24/96 Dac Board

The daughter board could be designed to be as "generic" as possible so it could be incorporated into other designs besides the upcoming desktop amp I'm working on (likely to be called the "ODA"--Objective Desktop Amp).

I'm curious if there's much interest in adapting this design to such a daughter board?
 
Thanks. If I read correctly, Borges is selling the complete two board package with the enclosure, connectors, etc. for around $120? I am assuming a single PCB would be significantly less?

I am also curious where you are getting the Tenor TE7022L and does it require licensing or programming? Are you planning on selling completed boards with the Tenor and ESS chips? From what I know the TE7022L is not very DIY-friendly but I might be missing something.

The USB9023 board is $93 as a kit without an enclosure. (see my website)

The Tenor board was an exercise to combat boredom a few weekends ago and is unpriced. It was not really intended for general release and I was to offer the other 9 boards to interested individuals once I proved the design.

As far as I know the GFEC is the only supplier of the Tenor components. Access to detailed documentation does require a NDA and I expect they will only deal with companies. As for DIY-friendly.. You can pick up the pin layout from the public data sheet and take a shot at building a basic board.

There is nothing special on the board and if the it works I should be able to release the schematic. I did not use any information covered in the NDA to create the board so it should be clean.

Send me your requirements in a private message and I will seen how difficult it would be to modify the existing board.

George
----------
Yoyodyne Consulting
 
Hi,

have you looked at the AB-1.1 homepage (signature below)? Perhaps the USB-I2S module could work with an alternative analog board?

Our design is meant as a starting point. Without increasing the price severely, any headphone amp would have been a pretty poor one. Plus we didn't have the time to do it properly when the boards were ordered.

What the project needs now is more people who wish to do analog hacking (DAC, IVC, power, clocks etc.) to tweak out more.

The I2S module is a possibility. It is very similar in function to the Tenor module sold by MiniDSP for $55 or the $35 Tenor USB-I2S modules on eBay. Clearly your USB-I2S is ultimately more flexible but I'm not sure which will work better, or perhaps they will be essentially the same, for 24/44 USB-to-I2S?

Ideally, it is best to have everything digital on one board and as few clocks as possible. Many contributing to this thread have obviously done a lot of the hard work on the digital side. I would be happy to help out with high quality measurements and perhaps improving the analog side if necessary.

I think there's a real need for a generic USB DAC board/module that supports high resolution formats and offers proven high performance. Most of the existing choices use the very old TI PCM27xx family chips for USB. It goes well beyond something for one headphone amp.

Thanks for confirming the TE7022L is only available from GFEC. That's OK as long as a reliable source is willing to offer it--ideally on an assembled board. :) I'm not looking to sell anything myself.

I'll send a private message regarding the Tenor prototype. Thanks.
 
Compared to the MiniStreamer, the USB-I2S module can do 24/192 and 24/176.4. But those will require Linux, Mac or a Windows driver. We are looking at Windows driver options, like you'll see above in the thread. Driverless asynchronous Windows compatible UAC1 24/44.1 and 24/48 are the default settings the kit ships with.

It is not obvious how the MiniStreamer generates or receives MCLK. The only true way to generate MCLK is to put it close to the DAC, put in a nice PSU and make the entire digital signal chain a slave to it. That applies to both ADC and DAC use.

The AB-1.1 board which holds the USB-I2S module uses high-quality Golledge crystal oscillators. There are two of them since 44.1*2^n and 48*2^n sample rates don't mesh very well. (If you can live with k€N, k!=2^n, where k=mclk/sample rate, there are some tricks available which I am currently exploring. But more on that later.)

And, obviously, the schematics and source code are open source :)

The USB to coax kit looks nice. If you're prepared to use S/PDIF, you know your DAC is the clock slave anyway. In such cases, the S/PDIF generator's XO and the receiver's PLL (and even the cable!) determine jitter performance. I'm not quite sure how audio frequencies are generated from the lare 12.0MHz oscillator on the board.

Cheers,
Børge
 
@borges, thanks. The eBay board claims to have I2S as well. But you often get what you pay for on eBay. There are a lot of poorly designed products for sale there. I had to laugh as the oscillator module has "audio" printed on the top. :) I'm not familiar enough with the Tenor chips to know how they handle different clock options. But you may have a valid point. 12 Mhz is a common USB clock.

Others may not agree with me, but I'd be OK giving up 48 Khz as I can't imagine playing much on a PC that's native 48 Khz where resampling would be an audible problem. 99% of the digital music in the world is 44 Khz or at least available at 44 Khz.

I would prefer to have a single oscillator for the best performance. It also lowers the cost.

And I'm NOT trolling for a flame war, but there's lots of solid evidence 24/192 has no merit as a playback format. So that's not something I'm interested in either. Hardly any music is available in that format. And what little there is is generally available at more rational sampling rates. So I just don't see it as being useful outside of a mastering studio.
 
Hi Korben,

glad you like the thread. The USB-I2S module takes 11.2896 or 12.288MHz analog clocks in. They are used for 44.1/88.2/176.4 or 48/96/192 ksps sample rates. They are also used as I2S bit clock. The control signal MCLK_P48_N44.1 is output form the USB-I2S module. It is 0 for 11.2896MHz selection and 1 for 12.288MHz selection.

The MCLK for the DAC may actually be different from the I2S bit clock. On the AB-1.1 board the DAC MCLK comes from one out of two high-quality XOs from Golledge. They are 22.5792 and 24.576MHz. A simple divider is used between XOs and USB-I2S module. The XO outputs are shorted, and it is their opposite-phase Enable pins which decide which one is used. Just follow the link in my signature to the schematics.

If you wish to use another DAC with the USB-I2S module, the least hassle will follow if the DAC already generates 11.2896 and 12.288MHz clocks. If it generates only one of those two, you can modify the DAC with one more XO, or you can look at the code and make it enumerate with fewer sample rates available.

If your DAC generates a clock which is wildly different from 11.2896 / 12.288MHz, let us know and we may figure something out. Perhaps your DAC chip will work on the same MCLK frequencies as the USB-I2S module.

Hope this helps!

Cheers,
Børge
 
Hi Borges
Thank you for your explanations, but I'm not familiar with those terms/technologies :(
As far as I can understand, the MCLK is generated by the AB-1.1 board.
I've read specs from the WM8741 datasheet :
http://www.wolfsonmicro.com/documents/uploads/data_sheets/en/WM8741.pdf
Most interresting part, from what I've understood is the following attached pic.
Does it make sense or not from what you're advising ?
Sorry for my noob question and weak knowledge.
Regards
 

Attachments

  • Opus MCLK.JPG
    Opus MCLK.JPG
    134.3 KB · Views: 507
Hi Korben,

no worries!

From the table it looks like this DAC chip is 100% compatible with AB-1.1's ES9023. At least when it comes to choice of MCLK. The I2S interface is extremely likely to be the same.

I don't know if you plan to use the chip natively, or if you plan to mod a board where it already sits. The Wolfson DAC probably needs a little bit of initialization code over I2C or SPI. That must match the clock setup it receives.

Power supplies and output stages will probably be different from the ES9023, but if you're starting out with an existing DAC board those are probably not your first worries.

Happy hacking! Wonna buy a kit from me? Hint-hint...

Cheers,
Børge
 
Hi Borges
I've got 2 Opus DAC from Twisted Pear, one with WM8740 the oher with WM8741.
They are both working well ;)
So no PSU troubles or others.
My only goal is to fed them with I2S.
More to come, yes, I'm interested in buying a module, but as you can see I need support :) :) :)
I've to leave now, see you soon
Cheers
 
Hio Borges
Digging the WM8741 specs...
There is no clock, only a MCLK Input on the chip.
Clock are embeded with SPDIF and/or USB modules, same clock 12Mhz/16pf (HC49).
As I understand, Opus/WM8741 is a "Slave", waiting for a MCLK input.
BTW "USB Widget" is supposed to bring it to the WM8741.
Your opinion ?
 

Attachments

  • WM8741 BLock Diagram.JPG
    WM8741 BLock Diagram.JPG
    100.1 KB · Views: 625
  • Opus Board.jpg
    Opus Board.jpg
    37 KB · Views: 621
Last edited:
The Opus Dac seems like it is built on a different philosophy - it is as you say a DAC in slave mode, where the AB1.1 board is the active party, which "pulls out" the bit stream with its master clock.
You would need to have a "clock board" in between the USB board and the Opus DAC to make this work.
 
Exactly, the Opus DAC board would replace the ES9023 DAC component on AB-1.1. Plus youæll have to supply the right kind of power to it. If it runs of 3.3V that too could be fetched directly from where the ES9023 sits. In fact, it should be possible to run the two boards in parallel if the load on the MCLK line isn't too high.

My suggestion to you is to start out with AB-1.1 and USB-I2S module, then patch in the Opus board once you're familiar with the signals already on AB-1.1

If this DAC gives better quality than the ES9023 I wouldn't mind redesigning the Analog Board at some later stage.

Of course, the sales guy in me says you should get two AB-1.1s. That way you can do an A-B test of the DACs :)

Cheers,
Børge
 
Hello everyone,
I was thinking about using OpenPeak's OpenFrame/O2 Joggler (very hackable and quite cheap Atom-based device, alas no longer manufactured) as an alternative to Squeezebox Touch, so as a thing needed to be done is to polish audio output. From integrated STAC9202 could be pulled out just SPDIF, yet that would be unsatisfactory anyway and I was quite pleased to think about purchasing ES9012 based ackoDAC with hiface modified USB-I2S interface. Major issue is m2tech does not provide Linux (seems to be the best OS for this device) drivers for hiface, so I began to looking for other alternatives and just finished reading the whole thread. I noticed excellent work in this great project. It seems to me AW may be at par with hiface (did not found out any tests or experience with using it however), but so far I did not find out ideal DAC to be feed with I2S from it. I still like the idea some of ackoDAC (there is a whole thread actually) designs to be used with, maybe one ES9023 based with 2Vrms driver integrated... Thinking of I would recase/remold the wole thing with USB-I2S and DAC once completed.
 
Hi all,
I just bought the AB/I2S module and can't wait to test it out for real. Now since I just moved I can't find (and this is hard to believe) a single RCA cable in my flat, so tests will have to wait until tomorrow. But at least I managed to get some sound out of it using a 3.5mm plug and a safety pin.

Now to the actual subject. I) seem to get no volume control on the PC. I noticed that in the sound control panel (Ubuntu 11.04) when I choose the DAC as the sink, the volume control for this sink has two markings on it. One is the normal 100% like all other sinks have but there is also a mark for Unamplified. It's very close to the left end of the slider but not exactly at the edge. Normally I would interpret unamplified as no gain or 100%. So in effect there is would be no difference in volume no matter what I set the slider to as it would interpolate between 1 and 1. Point of fact exactly what happens, nothing.

I reckon this has nothing to do with the module itself, it's probably something with how the driver module is implemented in the kernel. Just wanted to see if anyone else has seen this effect.

Aside from this though it at least works, and now I can finally tinker some. I've been looking for somethig like this for so long now. Thanks Børge and everyone else involved in this project!