I hope you don't mind me moving this to a new thread. Please use this
thread to share your thoughts and ideas on how we may put together an
UAC2 Windows driver.
The ALSA project has Linux kernel support for USB audio including
UAC2. Could we reuse code from there, particularly on the protocol
side?
Libusb-win32 may is a candidate for lower-level USB programming on
Windows. Please read the intro at
http://sourceforge.net/apps/trac/libusb-win32/wiki
Driver signing needs not be a large issue. It is possible to set up
Win7's bootloader to open the doors wide and not require signed
drivers. That makes sense during development. Then for any released
driver there is the Reactos driver signing Nikolay found
http://www.reactos.org/wiki/Driver_Signing
Dean and George in a previous mail:
Its been a while since I did any serious systems programming, that is
why the virtual soundcard port to UAC2 is going to take some time (if
I can even make it), although a good sign is that I have the barebones
soudcard drivers working, now next step is to work out how to move
data between kernel mode (where the device driver runs) to user mode
UAC2 code.
I think if you take a stab and post your work on in the .git you will
gather a following. They may get in your way or they may be able to
help but you will generate interest either way.
Børge
> compression formats like tgz where the only Windows tools that open these files are $50 utilities
Take a look at
*am*
--
Andrea Montefusco IW0HDV
thanks for your response. The un4seen stuff is new to me. Interesting!
On Tue, Nov 8, 2011 at 10:45, dea...@hotmail.com <dea...@hotmail.com> wrote:
> I haven't done any open-source projects, I'm pretty much a Windows guy
> and I have no Linux experience (but have done Unix and a fair bit of
> QNX). I don't even know what a git is, and I get annoyed with obscure
> compression formats like tgz where the only Windows tools that open
> these files are $50 utilities (why isn't the standard zip format
> used???).
I'm pretty much a Windows guy with Linux experience. One thing I
always add to my Windows systems is Cygwin. Gives you a nice bash
shell so that I can grep for code lines. "tar xvzf stuff.tgz" will
Xtract, Verify and unZip the File stuff.tgz. "tar cvzf stuff.tgz *"
will Create, Verify and Zip * into the File stuff.tgz.
> However I have looked into LibUSB as part of a Pic project from a year
> back but it won't help much
OK. But have you tried the filter driver? I'll install it and toy with
it a bit.
> but the ALSA project source should help if
> we can get it (with documentation preferably).
The ALSA main page is here:
http://www.alsa-project.org/main/index.php/Main_Page I am not familiar
with ALSA work. Anybody on the group with alsa experience who could
elaborate and point to USB code?
> For the MSVAD driver I have to implement a shared circular buffer and..
So that is the stuff which says "Windows, I'm an audio device", rigth?
As in the opposite side of the driver compared to "Hello USB-thingy,
I'm your friend"? (Pardon me for sounding naïve here :)
> call). The .NET layer is specific to my project although still pretty
> useful to be able to do mixing / processing generically. Is this
> approach of interest?
Anything which brings us closer to an UAC2 driver is of interest! Will
the driver or the Windows OS be responsible for sample rate
conversion, should it be needed?
> compression formats like tgz where the only Windows tools that open
> these files are $50 utilities (why isn't the standard zip format
> used???).
I could say the other way 'round. Why dos/windows insist on using zip
when there were already tar, compress and gzip?
Unix and its tools were here long before DOS, let alone windoze. Yet
windoze pretend to reinvent the wheel (usually making it edgy if not
square) and call it "standard". No way. :@
BTW: I second Cygwin suggestion. It brings a (little) bit of Unix
power to that colorful useless mess.
You may also like this GUI supporting a lot of different archive
formats:
http://en.wikipedia.org/wiki/ZipGenius
P.S.: if you miss the power of DCL, you should try bash (on Unix/Linux,
of course. ;-)
Ciao,
Paolo.
--
http://borex.lngs.infn.it
You can still escape from the GATES of hell: Use Linux!
Save a tree:
please don't print this e-mail unless you really need to.
There might be some people there that will assist or join your efforts to
create a UAC2 Windows driver. I recommend at least subscribing to their
listserv, so you can monitor the discussions.
-Gregg
It'll be interested to see if any part of the ALSA implementation can
be recycled.
> George/Borge, I see on DIYAudio that several folks earlier this year
> volunteered to help with coding up a Windows driver (Nikolay, Tdtsia).
> What happened to them?
A lot of the people I have spoken to feel the tast at hand is too
large. I don't know about the guys you name, though. The more code
exists in a project, the easier it is to recruit.
Starting out with a virtual device which talks to players is good.
Then people with other skills can try bridge the gap towards the USB
side of things. Still a long way to go but must certainly shorter than
it was to begin with.
Børge
I ran out of money before I could develop a product that would be popular
with the HTPC niche.
There were a few other things I wanted to do.
First, I wanted to use an interface that was included on any motherboard, so
I needed to switch from FireWire to USB2. With USB2, you could still have
the same 8 channel, 24 bit/192 KHz performance. However, I couldn't afford
the cost of developing a proprietary multichannel driver. I was really
hoping Microsoft would provide a native USB Audio Class 2.0 driver with
their OS. I also wanted the scalability of FireWire in case someone wanted
to use more than 8 channels for digital crossovers in a
multi-driver/multi-speaker setup. I think you can still do this with USB2.
With the FireWire drive we are using, you can daisy chain the DACs and it
will just multiply the number of available channels by however many you
have.
Second, If I was going to offer an integrated DAC/amp, I wanted to reduce
the footprint and weight by replacing the monstrous toroid/linear supply
with SMPS. However, I wanted an SMPS that didn't sacrifice sound quality. I
haven't been able to determine if this is the case. Manufacturers like Hypex
don't really say much about the SQ of their SMPS.
Third, I wanted to upgrade the SQ of my device by using the ESS Sabre ES9018
DAC and the upcoming Hypex NCore amp modules.
Fourth, I'd like to create a modular system that allows users to snap in
components to either build or upgrade their audio system. So we'd need to
standardize things like the chassis, the main board, power supplies, DAC
modules, amp modules and interconnects. So you'd have capability similar to
what a PC enthusiast has when s/he purchases components from Newegg to build
or upgrade a PC.
I was also probably going to offer separate components, so you could just
buy an external DAC, without the amps.
As you know, some of the pieces are/were coming together. Now there's the
exaU2I USB to I2S interface and 8 channel DAC kits like the Buffalo III or
the AckoDAC ES9018 system. However. I'm not sure exa's drivers are ready for
a commercial product. There's just too many hoops to jump through to play
full resolution audio from a Blu-ray (or Blu-ray rip) running Windows 7 and
Windows Media Center. It probably works pretty well for JRiver Media Center
and Foobar or other products for enthusiasts. However, I really wanted to
create a product that my less-than-computer-fanatic friends and family could
simply plug in and use.
If I ever come across a chunk of money and the driver situation improves,
someday... Hopefully this project will make a lot of headway. I'd be happy
to license open source components.
The ZAudio pages at Sourceforge look empty. I take it that is a
project with no USB but with plenty nuts and bolts and Windows OS
interface.
As I see it, we need (at least!) two fundamental things here. The
first is to present an audio interface to Windows. This is where
Dean's work can come in handy, and where existing Windows Drivers are
very usefull.
The second fundamental thing is where we talk to an USB interface over
the UAC2 protocol. This is where I'm hoping ALSA code and libusb-win32
can play a role. Unfortunately, I don't know how much hassle is
involved in making Linux USB code happy on a Windows system.
Installing a libusb-win32 shadow driver for the UAC2 option in the
audio-widget-nik branch went smooth. (Before this I removed any UAC2
driver which recognizes our VID/PID.) Now the question is what can be
done using their driver to talk to the widget.
Two AB-1.1 kits go out free of charge as a bonus to the first guy who
can put together some code to make it go beep over UAC2 :-)
Perhaps this is easier with firmware which doesn't give rate feedback?
Børge
> Driver over libusb can't be used for standart windows multimedia
> applications
Why? And what could be possible alternatives?
Børge
Dean may be able to create a virtual device which appears to Windows
as an audio device. Libusb won't be involved there.
But libusb may be a good tool to talk low-level to the USB device. My
promised rerward is for libusb (or similar) + Audio Widget = annoying
beep through DAC :-)
Then, somewhere between Dean's code and libusb is my hope to reuse as
much existing (ASIO / ALSA / other drivers) code as possible.
Børge
good to know the virtial device came up that fast!
> I'm not clear on the USB bits, AFAIK libUSB can't be used unless you
> can implement UAC2 protocols over libUSB. If we can get the libUSB or
> ALSA driver working on Windows it would be easy to bridge the the two
> drivers using some user mode code
I share that opinion. I was hoping libusb could be the library by
which a Windows UAC2 driver talks with the audio widget. We will need
isochronous support. That rules out quite a few USB libraries for
Windows. In an ideal world there is a way to replace ALSA's USB kernel
calls with wrapper code + libusb.
> as I don't have any audio-widget hardware (need to decide if
> George or Borg's implementation is better for tweaking & purchase a
> kit!)
With mine you won't have to solder :-)
Cheers,
Børge
Cheers,
Børge
Solder is OK as I worked out how to solder that 144 pin monster! I
need to take a closer look at both your & Georges schematics to see
which better suits my needs & who has the better components (I don't
want to go chasing down too many new parts like clocks).
Alan, I guess having a working UAC1 driver would be a tremendous help.
Then we can start with a UAC1 firmware and slowly introduce UAC2
features in firmware and driver alike.
Børge
the UAC1 is asynchronous. Nikolay has the details.
It's great that you wish to participate! Will you sneak a peak at ALSA
UAC1 code?
Assuming working UAC1 driver code is written, I believe UAC2 features
may slowly be introduced to UAC1 driver and firmware alike.
Børge
I understand your choice of the path of least resistance... In the
meantime I am discussing USB techniques with colleagues. Outcome not
yet certain.
BUT: Are you able to share your virtual device driver code? The USB
guys I talk to have no idea how to make Windows aware of a soundcard
(and I guess vice versa, that those here who can talk Windows don't
necessarily talk USB.)
Thanks,
Borge