Audio treiber selber machen

Gast #2990767
Lesenswert?

Hallo,

ich will für eine eigene USB Audio Karte einen Windows Treiber bauen.

Hat jemand damit Erfahrung oder kann mir Quellen nennen wo ich Gute 
Informationen finde. Am besten gleich mit Code.

Das ganze USB Zeugs ist übrigens nicht das Problem, sondern wie man so 
einen Treiber schreibt.


Peter
Persönliche Seite #2990852
Lesenswert?

Peter schrieb:
> ich will für eine eigene USB Audio Karte einen Windows Treiber bauen.

Wenn die die USB-Audio-Standardgeräteklasse implementiert, musst Du das 
gar nicht, weil dann nämlich der bei Windows standardmäßig enthaltene 
Treiber für diese Geräteklasse verwendet wird.

Windows-Devicetreiber-Entwicklung ist alles andere als trivial, Du musst 
wirklich einen sehr guten Grund dafür haben, Dich damit zu 
beschäftigen.

Der Compiler ist hierbei das geringste Problem, die kostenlose 
Express-Version des Visual Studio sollte ausreichen.
#2990948
Lesenswert?

Rufus Τ. Firefly schrieb:
> Peter schrieb:
>> ich will für eine eigene USB Audio Karte einen Windows Treiber bauen.
>
> Wenn die die USB-Audio-Standardgeräteklasse implementiert, musst Du das
> gar nicht, weil dann nämlich der bei Windows standardmäßig enthaltene
> Treiber für diese Geräteklasse verwendet wird.

sehe ich auch so. Es gibt nur ganz wenige Fälle wo es Sinn macht von der 
USB-Audio-Klasse abzuweichen. Z.B. wenn man für professionelles 
Studioequipment genau definiterte Latenzen braucht.

> Windows-Devicetreiber-Entwicklung ist alles andere als trivial, Du musst
> wirklich einen sehr guten Grund dafür haben, Dich damit zu
> beschäftigen.

Full Ack. Es kommen noch die Unterschiede zwischen 32 und 64 Bit 
Versionen von Windows hinzu und für 64 Bit brauchst Du im Normalfall ein 
Zertifikat um den Treiber signieren zu können (kostet mehrere 100 EUR 
pro Jahr).
#2991476
Lesenswert?

Peter schrieb:
> Hat jemand damit Erfahrung oder kann mir Quellen nennen wo ich Gute
> Informationen finde. Am besten gleich mit Code.
"Programming the Microsoft Windows Driver Model" von Walter Oney.
Wenn du das gelesen hast, weisst du erstens, was du alles beachten 
musst, wirst du zweitens nie wieder auf die Idee kommen, selbst einen 
Treiber zu schreiben.

Rufus Τ. Firefly schrieb:
> Der Compiler ist hierbei das geringste Problem, die kostenlose
> Express-Version des Visual Studio sollte ausreichen.

"System Requirements
Before you begin, you must first install Visual Studio Professional 2012 
or above."
(http://msdn.microsoft.com/en-us/windows/hardware/hh852362)

mfg.
Gast #2991838
Lesenswert?

>Bin ja schon am lesen, nur wenn jemand gleich sagt es geht oder es geht
nicht nimm DAS. Dann würde es mir etliche Stunden lesen und suchen
ersparen.


Aeh. Ja. Ich kenn Leute die haben das mal bei WinNT durchgezogen. Unter 
einem halben Jahr lief gar nicht. Ich bekam damals regelmaessig 
Infomaterial von Sysinternals, einem Anbieter von Devicedriver Kits und 
Kursen. Der Kurs dauerte damals 3 Tage oder eine Woche und kostete 4000 
Pfund. Kursort war in England.

Dh. Lass es sein.
Persönliche Seite #2991865
Lesenswert?

Peter schrieb:
> Nur gibt es keine 32 Bit/256kSampels Audio Treiber.
>
> Windows macht von hause aus nur 16/48.

Tja, dann wirst Du in den sauren Apfel beißen müssen.

Da Du anscheinend noch keinerlei Erfahrung auf dem Gebiet hast (sonst 
hättest Du ja auch nicht so danach gefragt), mach Dich auf mehrere Jahre 
Entwicklungszeit gefasst.
#2992320
Lesenswert?

>> Nur gibt es keine 32 Bit/256kSampels Audio Treiber.
>
> Windows macht von hause aus nur 16/48.

directX macht nur bis 200
http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice.setsourcesamplerate%28v=vs.85%29.aspx

oder so..
(zumindest sagt das der 1. beste google hit)

wird also schwierig..

du brauchst sowieso spezielle Software (also warum einen AUDIO treiber, 
???)

vielleicht einfach ein OSZI nehmen ;-)


Nachtrag: willst was aufnehmen, oder abspielen??
Persönliche Seite #2992356
Lesenswert?

Thomas schrieb:
>> Windows macht von hause aus nur 16/48.
> woher hast du den diese Info?

Er wird sich auf die USB-Audio-Standardgeräteklasse beziehen. Die 
schränkt das ein. Natürlich kann man über USB auch mehr, das dann aber 
nur mit einem eigenen Devicetreiber -- und den möchten der Herr ja 
wohl auch erstellen.

Fensterzumauern reicht übrigens nicht. Der PC muss eingemauert werden, 
da er sonst mit Äxten, Hämmern, Kettensägen und was auch immer gerade 
zur Hand ist, zerfetzt werden wird.
#2992733
Lesenswert?

Rufus Τ. Firefly schrieb:
> Fensterzumauern reicht übrigens nicht. Der PC muss eingemauert werden,
> da er sonst mit Äxten, Hämmern, Kettensägen und was auch immer gerade
> zur Hand ist, zerfetzt werden wird.

was kann denn der arme PC dafür, daß der Benutzer ihm so ein 
widerspenstiges Betriebssystem installiert hat, welches die 
Treiberentwicklung so kompliziert macht?

Ich würde also eher die Festplatte und die Windows-CD bzw. -Schachtel 
vor Zerstörung schützen. Die sind viel näher am Problem als der Rest der 
Hardware. Und damit auch mehr gefährdet.
#2992845
Lesenswert?

Christian R. schrieb:
> Der Aufwand, einen Kernel-Treiber zu schreiben, zu debuggen und zu
> testen ist doch bei Linux kaum weniger hoch. Mag sein, dass es
> stellenweise besser dokumentiert ist, aber wenn ich mal so typische
> Quelltext vergleiche, ist das strukturell nicht viel Unterschied.

Im Gegensatz zu Windows, wo quasi alle Treiber Closed-Source sind, sind 
unter Linux alle ernstzunehmenden Treiber im Kernel integriert und Open 
Source.

Du hast also jede Menge funktionierenden Beispielcode der ähnliche 
Probleme löst. Das alleine macht meiner Meinung schon einen wesentlichen 
Unterschied aus.

Wenn man möchte, kann man unter Linux Treiber mittlerweile auch im 
Userspace schreiben. Das vereinfacht die Entwicklung deutlich, da 
reboots bei Änderungen wegfallen und man Werkzeuge wie einen Debugger, 
Valgrind etc. verwenden kann. Allerdings geht durch den Userspace die 
Latenz ein wenig hoch, ob das hier zum Problem wird oder nicht kann ich 
so nicht beurteilen.
Persönliche Seite #2992864
Lesenswert?

Andreas Schwarz schrieb:
> USB Audio Class 2.0 macht mind. 192 kHz, 24 Bit und zig Kanäle.

Und unterstützt das der mit üblichen Windows-Versionen mitgelieferte 
Standardgeräteklassentreiber?
In Ermangelung entsprechender Hardware kann ich das nicht prüfen; wenn 
der Treiber das tun sollte, hat sich die Problemstellung des 
Threadstarters gelöst, bzw. er kann sich mit dem nächsten Problem seines 
Unterfangens beschäftigen.
Gast #2992894
Lesenswert?

Vielfach basiert USB Audio 2.0 auf den XMOS-Chips. Diese Teile 
ermöglichen 24/192. Unter Linux das XMOS-Board einfach angesteckt und 
Audacity spielt eine 192kHz-Datei bitperfekt mit 192kHz ab. Bei MacOS 
soll es ähnlich sein. Nur Windows verhält sich anders: Man muss erst 
einen Treiber kaufen und diesen dann installieren, um in den Genuss von 
24 Bit und 192kHz Samplerate zu kommen.
#2992929
Lesenswert?

Gerd E. schrieb:
> Du hast also jede Menge funktionierenden Beispielcode der ähnliche
> Probleme löst. Das alleine macht meiner Meinung schon einen wesentlichen
> Unterschied aus.

Dann installier mal das WDK, dann bekommste du auch massig Beispiele 
incl. aller Quellen und Doku. Natürlich ist der Windows Kernel an sich 
Closed Source, aber ansonsten nimmt sich das nicht viel. Mit VS2012 ist 
das WDK jetzt auch integraler Bestandteil von VS, ist nur noch ein 
Plug-In, das macht die Sache nochmal einfacher. Ob es inzwischen bessere 
Debug-Möglichkeiten als das FireWire oder Serial Kabel gibt, weiß ich 
allerdigs nicht. Ist einige Zeit her, dass ich damit mal näher zu tun 
hatte.
#2992942
Lesenswert?

Hi Thomas,
> Peter schrieb:
>> Hat jemand damit Erfahrung oder kann mir Quellen nennen wo ich Gute
>> Informationen finde. Am besten gleich mit Code.
> "Programming the Microsoft Windows Driver Model" von Walter Oney.
> Wenn du das gelesen hast, weisst du erstens, was du alles beachten
> musst, wirst du zweitens nie wieder auf die Idee kommen, selbst einen
> Treiber zu schreiben.
>
Ich hab's gelesen. Ich kann Thomas nur zu 100% recht geben. Selbst 
beruflich würde ich mich inzwischen weigern, diesen unsäglichen Kram zu 
programmieren. Und falls es privat ist: Tu Dir einen Gefallen und nutze 
Deine Zeit sinnvoller als mit Windows-Treiberprogrammierung. Du wirst es 
uns noch danken!!! ;-)

Gruß,
#2993224
Lesenswert?

ist schon witzig, meist liest man ja Sätze wie:

"die Deppen von XY, wieder mal so ein sch.. der  AMD treiber XY ist 
Schei..., der Nvidia Treiber noch schei..iger..

sollte man die Programmierer nicht LOBEN, dass sie es, trotz aller 
Widrigkeiten, geschafft haben, überhaupt ein Bild auf den LCD zu zaubern 
;-)



wegen linux:
wenn ich mir anschauen, wie lange ich zu analogen Zeiten , auf DVB-S 
Treiber gewartet habe, (um es dann irgendwan naufzugeben) und dann 
später auf DVB-S2 treiber.. (um es dann wieder aufzugeben)
für Windows gab es das jeweils schon JAHRE vorher..

mir ist das egal, ob es unter linux EINFACHER ist, unter Windows geht es 
auf jeden Fall SCHNELLER (das sind Fakten, warum es so ist, ist auch 
klar... da kann "Linux" nicht viel dafür: da ist eher die Henne oder das 
Ei schuld)

nochmal @to: willst du aufnehmen oder abspielen???

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren