Forum: Mikrocontroller und Digitale Elektronik Wie: "USB Host Controller/Connector" auf PC-Board (VIA EPIA M700) montieren u. Treiber schreiben


von Aron Homberg (Gast)


Lesenswert?

Hi Leute,

habe ein experimentelles Projekt in Planung. Zum Umsetzung eines 
Features möchte ich - wie von USB-Festplatten bekannt, eine 
1:1-Verbindung zwischen PC (flacher USB Stecker männlich) zu Gerät 
(Host-Mini-USB bzw. Host-USB (kleiner männlicher/großer rechteckiger, 
konische Kanten Stecker) herstellen.

Mir ist klar, dass ich zur Ansprache des Geräts seites des PC's einen 
USB-Treiber benötige, welchen ich selbst schreiben muss. Mir ist auch 
klar, dass ich gleiches für mein Gerät tun muss, welches ich mit Linux 
betreiben werde.

Unklar ist mir allerdings noch, ob es die Bauteile für Host-USB irgendwo 
für Standard-PC's z.B. wie VIA EPIA M700 zu kaufen gibt, wo diese dann 
angeschlossen werden (interner USB pin-connector?) etc. und ob die VIA 
EPIA M700 Chipsatz einen Controller besitzt der eine solche 
Konfiguration überhaupt erlaubt.

Ziel ist es, per USB 2.0 Audio-Daten vom PC auf das Gerät zu übertragen. 
Möglichst Latenzfrei. Es entsteht dann in externer DAC. (Digital/Analog 
Converter für Audiodaten)

Nebenfragen: Wie sieht das ganze rechtlich aus? Darf man 
Consumer-Hardware "neu zusammensetzten", eigene Software schreiben und 
als neues Consumer-Device vertreiben? Gibt es ein Lizenzrecht für die 
Verwendung von USB als Host eines Devices etc.?

LG,
Aron

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

meiner Meinung nach ist das Konzept falsch: Der PC ist USB-Host, soweit 
herrscht noch Einigkeit. Dann ist aber dein Gerät USB-Client - du 
beschreibst ja selbst den entsprechenden Stecker richtig. Um das zu 
implementieren, nützt dir ein wie auch immer geartetes USB-Host-Modul 
nichts, denn du brauchst ja einen Client wie Tastatur, Maus, Festplatte 
oder auch Audiosystem. Das letztere ist genormt und könnte dir als 
Vorlage für die Treiberprogrammierung dienen, vielleicht könnte man auch 
gleich einen Windows-Standard-Treiber verwenden.

Gruss Reinhard

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Es gibt 2 Methoden das zu erreichen.
1. Client als Massenspeicher. Beim Host kein Treiber nötig
2. Emulation einer Netzwerkkarte und Dateifreigabe. Viel Aufwand, hat 
Intel beim US15W so gemacht. Die Treiber dazu sind eher wacklig.

Hardwareseitig: Mir fällt jetzt kein käuflicher USB-Client-Controller 
ein. Du müßtest den in ein CPLD/FPGA reinprogrammieren und an den PCI 
hängen. Auch nicht unbedingt einfach.

von Aron Homberg (Gast)


Lesenswert?

Re,

gute Ideen! Client als Massenspeicher wäre prinzipiell ja gar keine 
schlechte Idee. Ich könnte dann den Treiber auf dem PC so entwerfen, 
dass er sich in die Audio Queue hängt, die Daten abfängt, sie 
Schrittweise auf den emulierten Massenspeicher des DAC in einer Datei 
ablegt und so "gebuffert" die Daten überträgt.

Für den DAC entwickel ich dann ein Programm, welches synchronisiert in 
einem Intervall-Loop die Daten gebuffert abfängt und an in die eigene 
Audio-Queue als Playback-Daten einfügt.

Die Digitalen Audiodaten würden so über die High-Quality Audio-Karte des 
DAC umgewandelt werden.

Fragt sich dann jedoch: Woher bekomm ich so etwas wie einen PCI USB 
Stick? :-D

Danke euch!!

LG,
Aron

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nein, der Client muss natürlich kein Massenspeicher sein. Es reicht ein 
USB-Audio-Device. So etwas ist ebenfalls eine Standardgeräteklasse, die 
von den meisten Betriebssystemen mit den mitgelieferten Treibern 
unterstützt wird.

Könnte es sein, daß Du in Deiner Beschreibung irgendwie "Host-USB" etwas 
irreführend verwendest?

von Aron Homberg (Gast)


Lesenswert?

Oder man macht es sich ganz einfach:

http://www.pearl.de/a-PE187-1414.shtml?query=USB

LACH

LG,
Aron

von Stephan (Gast)


Lesenswert?

Hi
als Beispiel für die Chips, schau mal hier:

http://www.stericsson.com/products/products_home.jsp

mfg
Stephan

von Aron Homberg (Gast)


Lesenswert?

ah, super :)

Fallen euch sonst noch Ideen ein, wie ich den Digitalen Audio Output 
evtl. einfach als Coaxial / Optical out an meinen DAC bekommen könnte?

Prinzipiell ist der DAC ja das gerät was allein digitale Input-Daten 
braucht. USB ist da für mich halt bloss die bisher einzig sichtbare 
"Notlösung" die Audiodaten latenzfrei zum DAC zu bringen.

Vl. gäb es ja auch noch andere gute Wege? Evtl. über DVI oder 
DisplayPort, oder HDMI.. aber alle diese Schnittstellen sind nur wenn 
man Glück hat bei PC's mit den Audio-Chips verbunden, oder?

LG,
Aron

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Äh, was genau möchtest Du eigentlich erreichen?

Möchtest Du nur Audiosignale mit einem PC erzeugen, den dafür 
verwendeten DAC aber abgesetzt vom PC betreiben?

Oder möchtest Du in Deinem "Gerät" doch noch irgendwelche anderen Dinge 
tun?

von X- R. (x-rocka)


Lesenswert?

Rufus t. Firefly schrieb:
> Äh, was genau möchtest Du eigentlich erreichen?

genau, gib uns ein Blockschaltbild.
Mir scheint das alles recht konfus, und vermutlich gibt's das schon als 
USB Audio Interface (neudeutsch für Soundkarte) für weniger als 200€.

von Aron Homberg (Gast)


Lesenswert?

Ihr habt recht, meine Beschreibung zerstreut sich logisch ein wenig.
Mittlerweile wird mir auch immer klarer, was eigl. das Optimum für das 
Projekt wäre:

Grundsätzlich plane ich, ein VIA EPIA M700 mit einer sehr guten PCI 
Sound Karte zu bestücken. Durch eine Modifizierung meines LFS-Systems 
(Linux From Scratch), u.A. ALSA-Plugins etc. erreiche ich, die digitalen 
und analogen Input-Daten der Soundkarte (1x Coax / 1x Optical In, 2x 
analog In) durch ALSA zu schleifen, zu processen und an Headphone, 
Digital Out (Coax), 2x Analog out wieder raus zu geben.

Möglich ist es also bereits, alle möglichen Quellen von Audiodaten (sei 
es Coax/Optical input oder stereo analog Input) durch das Gerät zu 
jagen. (1:1 Durch zu schleifen und durch gute Hardware, ein sehr gutes 
Wandlungsergebnis zu erhalten)

Jetzt würde ich gern noch erreichen, dass ich auch den PC / Mac als 
Signalquelle für mein Gerät verwenden kann. Dazu muss ich die 
Ausgangsaudiodaten des PC's digital an mein Gerät (den DAC) übertragen - 
und das möglichst latenzfrei.

Ein PC / Mac hat nun verschiedene Schnittstellen zur Verfügung, womit 
ich die physikalische Signalübertragung anstellen könnte.

Nutze ich USB, müsste ich bestenfalls in meinem Gerät eine Art Chipsatz 
für Client USB (Generic Audio Device) einbauen, um den PC mit meinem 
Gerät per USB-Kabel zu verbinden. Wäre es ein Generic Audio 
Device-Chipsatz bräuchte ich für den PC nicht mal groß Treiber 
schreiben, da jedes moderne Betriebsystem Generic USB Audio Device's 
unterstützt.

Was ich eigentlich benötige, wäre lediglich ein Chipsatz, den ich in ein 
VIA EPIA (PC Architektur) einbauen kann (wie auch immer verbunden. Sei 
es PCI, internal USB etc. pp.), welches nach außen hin ein Generic USB 
Audio Device darstellt, sodass ich den PC mit meinem Gerät per 
Standard-USB-Kabel verbinden kann - und bestenfalls nach innen hin, also 
zum VIA EPIA Chipsatz das gleiche tut. Dann müsste ich auf keiner Seite 
einen Treiber schreiben.

Zur Übermittlung des Audio-Signals auf PC-Seite wird einfach das Generic 
USB Audio device als primäres Abspiel-Device gewählt. Seitens meines 
Geräts greife ich einfach die eingehenden Daten per ALSA ab.

Vermute aber, sowas ich so einfach nicht umsetzbar. Wäre jedoch echt 
happy, wenn es eine Lösung gäbe, die in diese Richtung ginge.

Habe bereits einen Chipsatz gefunden, der ähnliches täte. Der ist 
allerdings für ARM und ich hab keine Ahnung ob ich den an nen EPIA 
patchen kann. Da würde dann die Treiber-Entwicklungs-Party außerdem 
losgehen:
http://www.keil.com/mcb2140/

LG und Danke für eure Hilfe,
Aron

von Aron Homberg (Gast)


Lesenswert?

Btw: Ja, das ganze gibt es als guten extenen USB-DAC auf dem Markt. Ich 
plane jedoch größeres.

Der digitale Audiosignalstrom soll im Gerät manipuliert werden. Ich habe 
einige exzellent funktionierende Algorithmen, welche das Klangerlebnis 
ungemein erhöhen. Jetzt möchte ich einen Prototypen als Hardware-Device 
bauen, um die Umsetzbarkeit eines solchen Projekts zu prüfen.

Raus käme dann ein hervorragendes selbstbau-Produkt zur exzellenten 
D/A-Wandlung von Audiodaten inkl. Kopfhörerverstärker und präzise 
konfigurierbarer Klangverbesserung  Optimierung  Anpassung des 
Audiosignals an die für den wiedergebenden Lautsprecher optimale 
Signatur.

Ich habe das ganze als Beta-Software auf meinem Rechner / mit externem 
DAC laufen und erhalte unglaubliche Klangverbesserungen. Ich würde 
sagen, jede Art von Musik hört sich durchweg 20-30% "besser" an. Je nach 
Konfiguration der Algorithmen-Variablen.

LG,
Aron

von X- R. (x-rocka)


Lesenswert?

Aron Homberg schrieb:

> Der digitale Audiosignalstrom soll im Gerät manipuliert werden. Ich habe
> einige exzellent funktionierende Algorithmen, welche das Klangerlebnis
> ungemein erhöhen.

Aha, und was machen die Algorithmen?
Frequenzgangausgleich der Lautsprecher?
Exciting?
Röhrensimulation?
Transientenoptimierung?
Oder was ganz neues?

Messtechnisch belegbares?

Edit: es gibt einen "VST-Player", da lädt man VST-Plugins zur 
Audio-Bearbeitung in eine Hardware Kiste, und hat somit sein virtuelles 
Plugin als Hardware mit analog IO.
Also bau doch aus deinen "exzellent funktionierenden Algorithmen" VST 
Plugins (Steinberg stellt SKD) und lad sie da rein. Wenn die Algorithmen 
gut sind, kannst du die VST Plugins sicher auch verkaufen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Was sich hier als Schnittstelle anbietet, ist Firewire. Macs haben 
praktisch alle Firewire-Schnittstellen, viele PCs auch, und es lässt 
sich notfalls einfach nachrüsten.

Im Gegensatz zu USB ist Firewire eine Schnittstelle mit 
gleichberechtigten Teilnehmern, d.h. es können ohne weiteren Aufwand 
z.B. zwei PCs darüber miteinander verbunden werden.

Seit Windows XP wird Firewire standardmäßig als schnelle 
Netzwerkverbindung genutzt.

Und Firewire wird im professionellen Umfeld auch für Audio-Anwendungen 
genutzt, mal völlig willkürlich das Angebot eines Händlers dazu:
http://www.thomann.de/de/firewire_audio_interfaces.html

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.