Open-source USB interface: Audio Widget

Hello all!

I work with another avr32-based device for usb-audio (and in future as standalone player). My firmware code is based on asf 2.0 with USB Audio code from sdr-widget project.
I tested my device on Windows with Thesycon USB Class 2 driver from Wavelength USB Dac (i found only one UAC 2.0 driver for Windows for tests). With some modifications from sdr-widget code my device is working successfully on Windows.
I will glad to help writing open-firmware device and Windows driver.

schematic my device

Nikolay

P.S. UAC 1.0 also is working on Windows with my device (44100 and 48000 Hz)
 

Attachments

  • avr32eval.jpg
    avr32eval.jpg
    117.8 KB · Views: 1,860
Last edited:
Hi Nikolay,

Excellent !!!

The audio-widget firmware source is hosted at github. Let us know if u are interested in joining the development work and help us test against the Thesycon driver :)

It will be really nice to have an open source win uac2 driver. U might like to start a repo at github as well and we in the sdr-widget/audio-widget will be glad to help out.

Your project looks very interesting and it is our hope that many uac2 devices will be developed in part encouraged by our open source firmware :)

Alex
 
Hi Alex!

I am ready to help the owner SDR-Widget with debugging on Windows. Unfortunately my device is somewhat different from the SDR-Widget, therefore, requires code changes are not related to USB Audio.

I have no experience in driver development, so I can't take the development itself, but I can help in testing and debugging.

Nikolay
 
An open source Windows driver will always be difficult because of the relatively-new Windows x64 driver signing requirement. Basically, all kernel modules loaded on Windows x64 must be signed by a trusted authority, and the only authorities that are still around charge a fair bit (~$1k) for a private key to sign with. It can be avoided for development by setting "test signing" mode, but setting that would never be suitable for distribution.

I've been spending some time poking at a driver; however, I think I'm going to give up because of the above. I didn't know about it when I started, and didn't notice it because I was playing in a 32-bit virtual machine until I tried it on a 64-bit VM. The Thesycon and C-Media drivers have commercial backing, so they can afford to sign their drivers.
 
Hi
If you want to start a open source WDM audio driver maybe you can start here. cmediadrivers - Open Source WDM Drivers for C-Media 8738/8768 based soundcards - Google Project Hosting . This is a opensource WDM Audio driver. And this is the only one that I can find open source audio driver.
Its seem MS don't want to provide UAC 2.0 driver in Windows even Mac OSX had support it. Basically C-Media's driver only support their UAC 2.0 device. If you want to use Thesycon's driver on your device you need extra fee for it.
Does any know how many device Thesycon's driver had supported?

An open source Windows driver will always be difficult because of the relatively-new Windows x64 driver signing requirement. Basically, all kernel modules loaded on Windows x64 must be signed by a trusted authority, and the only authorities that are still around charge a fair bit (~$1k) for a private key to sign with. It can be avoided for development by setting "test signing" mode, but setting that would never be suitable for distribution.

I've been spending some time poking at a driver; however, I think I'm going to give up because of the above. I didn't know about it when I started, and didn't notice it because I was playing in a 32-bit virtual machine until I tried it on a 64-bit VM. The Thesycon and C-Media drivers have commercial backing, so they can afford to sign their drivers.
 
Does any know how many device Thesycon's driver had supported?
I just added my custom VID/PID to thesycon .inf files and installer successfully found my device.

Original inf file contains only XMOS devices

;******************************************************************************
; Models sections
;------------------------------------------------------------------------------
[_Models]
"XMOS XS1-L1"=_Install, USB\VID_20B1&PID_0001
"XMOS XS1-L1"=_Install, USB\VID_20B1&PID_0002
"XMOS XS1-G4 XDK"=_Install, USB\VID_20B1&PID_AD10
"XMOS XS1-L2"=_Install, USB\VID_20B1&PID_0004
 
Hi Zelter,

not right now, but I have started sourcing components for a new batch! I'll cross-post updates here and on the Audio-Widget list.

The 22.5792MHz oscillator isn't really that mainstream, so delivery time of that one is the largest stumbling block right now.

Børge
 
Okay Alex. That is possible. AB-1 and the module itself are $120 + shipping. With the Hammond box (which Alex paid for in both the two kits reserved for him) it is $147. I suggest the two of you sort out the money and let me know where to send stuff.

What would you like to see on AB-2? I'm planning to use the same AB-1 PCB on the next batch. Perhaps with revised clock muxing. But changes will probably only be in BOM to save the cost of a new paste printing stencil.

Børge
 
Hi Borge & Zelter:

Zelter can PayPal $147 to me: alexlee188 att gmail dott com, and the shipping cost to Borge. Once I receive payment, I'll notify Borge.

Alex

P.S.
btw, I am working on a customized firmware to interface with the Windows uac2 driver that is being developed by Tsai. The customized usb descriptors are here:

http://dl.dropbox.com/u/8145461/audio-widget descriptor - single clock source
 
Hi Nikolay,

Yes, please help with the uac1 async coding. Email Andrea to put your name in developers list at the github repo and u can start :)

Our unified firmware supports uac1, uac2, multiple boards, different ADC and DAC's etc, and the image that is booted can be selected via a GUI program on the PC host, or via a rotary encoder/LCD screen connected to the widget.

Alex
 
For AB-2, I would really like to see coax and optical S/PDIF transmitters on board. I think that would please a lot of people, because then if someone wanted a different DAC, but still wanted to use your simply lovely UAC2 chip, they would be able to without having to build a board themselves.

I don't think the chips would take up much board space either. It's a pretty simple design, basically a reference implementation of any of the I2S to S/PDIF converters, or just outputting S/PDIF data directly with firmware. Maybe this can already be done with AB-1 and some creative wiring/firmware.