mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USB auf Ethernet-Konverter


Autor: Alexander Laue (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte mir gerne einen USB auf Ethernet Konbverter bauen. Das ganze
hat den Hintergrund, dass mein Festplattenreceiver zwar eine USB, aber
keine LAN-Schnittstelle hat. Ich möchte also den Receiver ans Netz
bekommen.

Ich habe mir das ganze in etwa so vorgestellt:
Ein uC fungiert als Host zwischen Receiver und Netzwerk. Auf dewm uC
läuft ein Programm, mit dem der uC in der Lage ist, die Aufnahmen vom
Receiver abzurufen und über die LAN-Schnittstelle weiterzuleiten.

Jetzt müsste ich mir dann überlegen, auf welche Art und Weise
(Protokoll) ich die Daten abrufen möchte. Ich habe da an FTP gedacht.
Auf dem uC soll also ein rudimentärer FTP-Server laufen. (SMB wäre
natürlich noch besser, aber den Aufwand scheue ich ;o) Sobald ich mich
mit dem PC zum uC verbinde, soll dieser den Festplatteninhalt des
Receivers auslesen. Bei einer veranlassten Übertragung ruft der uC die
Aufnahmen (Dateien) vom Receiver ab und leitet sie dann per FTP direkt
an den Client (PC) weiter.

Und hier fangen dann die Probleme an: Hätte hier jemand Vorschläge,
welche uCs sich für dieses Szenario besonders eigen?

Eine andere Idee, die ich hätte, wäre folgende: Man schreibt eine Art
Softwareemulation auf der PC-Seite. Also eine Software emuliert quasi,
dass der Receiver direkt per USB am PC angeschlossen ist. Dieser
Software-Treiber (Emulator) leitet dann alle Daten in Ethernetframes
verpackt an den uC weiter. Dieser entpackt dann die Ethernetframes und
schickt die USB-Daten dann an den Receiver. In die Gegenrichtung das
selbe Spiel: die USB-Frames werden vom uC in Ethernetframes verpackt,
zum PC verschickt, dort von dem Emulator entpackt und dann dem
Anwendungsprogram serviert.

Also ganz ähnlich wie bei diesem RS232-LAN-Adapter, den mal die c't
vorgestellt hat.

Das Problem hierbei liegt wohl eindeutig darin, auf der PC-Seite diesen
Emulator zu schreiben. Das stelle ich mir alles andere als leicht vor.

Auch hier wieder die Frage nach geeigneter Hardware.

Ich bedanke mich schon jetzt für Eure Tipps, Ideen und Ratschläge.

Viele Grüße...

Alexander

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alexander,

ich sehe da noch ein weiteres Problem. Wie läuft die Kommunikation auf
der USB-Schnittstelle Deines Receivers ab? Wenn Du den Receiver über
USB an den PC anschließt, meldet sich dieser dann als Massenspeicher
o.ä. an? Um dass mit einen µC zu emulieren brauchst Du einen
USB-Host-Controller und die entsprechenden Treiber. Nach meinen
bisherigen Recherchen hat sich da noch keiner so richtig ran gewagt.
Falls Du da gegenteiliges hörst, wäre ich sehr interessiert.

Als µC-Hardwareplattform mit Ethernet-Anschluss kenne ich nur Projekte,
die auf dem ATmega128 basieren. Diese dürften aber für die hohen
Datenmengen (mehrere GB) nicht den erforderlichen Datendurchsatz
bringen.

Alles in allem würde ich das Projekt als sehr ehrgeizig einstufen, aber
dass scheint Dir ja auch bewusst zu sein.

Gruß Steffen

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich will Dich nicht entmutigen, aber ich habe mir mal eine
USB-Netzwerkkarte für 1 Euro bei eBay ersteigert. Also mach es nicht
wegen des Geldes ;-)

Gruss
 Alexander

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine usb-netzwerkkarte ist nicht das was er sucht/braucht. das ist das
falsche ende. er braucht einen host und keinen 2. client. die
netzwerkkarte wird am reciver sicher nicht laufen. alles in allem wird
das ganze vielleicht doch recht "teuer".
guck dir mal den ARM an. auf nen 9200 kannst du linux installieren was
das ganze etwas konfortabler macht. ich schätze aber das du mindestens
100 euronen investieren mußt um zu einem brauchbaren ergebnis zu kommen

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> eine usb-netzwerkkarte ist nicht das was er sucht/braucht.

Ja ok akzeptiert, wenn der Receiver keinen LAN-Treiber hat. Nur frage
ich mich dann, wie ein USB-Gerät dem Teil sagen soll, dass es Daten
haben will. Gibt es da einen Mechanismus/Automatismus? Was steckt man
denn sonst da rein? Er wird dann ja auch keinen Treiber für einen
µC-der-die-daten-ins-Netz-weitergibt haben, oder verstehe ich das jetzt
völlig falsch?

Gruss
  Alexander

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau doch mal unter Druckerserver -> die gibt es mit Ethernetloch und
USB Host (ist eigentlich gedacht um USB Drucker ans Netz zu bringen)
Evtl. können die auch Festplatten verwalten.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es gibt in der Tat mittlerweile Geräte die einen USB Host haben und
damit zB einen USB Stick ins Netzwerk stellen.
zB von digitus:
http://www.digitus.de/produkte/network/A-product-n...


Martin

Autor: Alexander Laue (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

erstmal vielen Dank für das Feedback.

> Wie läuft die Kommunikation auf der USB-Schnittstelle Deines
Receivers ab?

Das Gerät meldet sich unter Windows leider nicht als Massenspeicher
oder ähnliches an, sondern als - ich nenne es mal - properitäres Gerät.
Platt gesagt weiss Windows nur, dass ein USB-Gerät angeschlossen wurde.
Windows weiss nicht, was das ist und was es kann. Dementsprechend ist
ein Datenaustausch zwischen PC und Receiver auch nur mit einem
FTP-Client ähnlichen Programm möglich, dass der Hersteller zur
Verfügung stellt.Die Quelltexte des Programms (und somit auch das
Übertragungsprotokoll) sind aber frei verfügbar.

Dementsprechend ist es richtig, dass ich einen USB-Host-Controller
benötigen würde, dem ich aber, aufgrund der Tatsache, dass die nötigen
Quelletxte verfügbar sind, alles nötige beibringen kann.

Bei meiner zweiten skizzierten Lösung würde ich hingegen wohl um einen
"richtigen" Host-Controller herumkommen, denn in diesem Fall
übernimmt der uC ja nur die Rolle einer Brücke und hat nichts mit dem
Verbindungsaufbau etc. direkt selbst zu tun. Das bleibt alles beim PC
selbst. Der uC horcht nur auf seiner IP, entfernt die Ethernetframes,
defragmentiert ggf. die Daten (wenn USB-Pakete größer als
Ethernetpakete sind, was ich leider nicht weiss, aber nachzulesen wäre
;o) und reicht diese Daten 1-zu-1 an den Receiver weiter. Wenn was vom
Receiver kommt, werden die Daten ggf. aufgespalten, in Ethernetframes
gepackt und an die entsprechende IP auf der client-seite geschickt.

Ich weiss nicht so recht, welche Lösung "schöner" ist. Universeller,
wenn auch vom hardwaremäßigen Anspruch her aufwendiger, ist sicherlich
die Lösung mit einem richtigen Hostcontroller, wo der uC quasi den
kompletten Datenabruf vom Receiver selbst übernimmt.

Etwas einfacher, und daher vermutlich auch mit geringere Hardware
schneller, ist die Lösung mit dem emulierten USB-Treiber auf dem PC.

Hier sieht es aber bisher so aus, dass ich nicht genügend Know-How zum
schreiben eines solchen Treibers habe.

Die angesproche Lösung mit einer USB-LAN-Karte geht leider nicht, da
ich auf der Receiver-Seite ja keine Möglichkeit habe, einen Treiber für
diese USB-Karte einzubinden. Zudem fehlen auf der Receiver-Seite auch
TCP/IP-Stack etc.
Das Ding ist halt für Netzwerkverbindungen nicht vorbereitet.... :(

Nunja, ich schau mir erstmal den USB-Host von digitus an, den Martin
verlinkt hat, ebenso den ARM, werde mal etwas recherchieren, wie
"komplex" das USB-Protokoll ist und welche Möglichkeiten bestehen,
einen USB-Emulator zu schreiben und überlege mir dann, was ich mache.

Jedenfalls vielen Dank für Eure Tipps....

Alexander

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alexander,

schade, dass der Receiver nicht als Massenspeicher ansprechbar ist,
sonst wäre so ein Gerät wie es Martin vorgeschlagen hat, eine elegante
Lösung.

Einen Gerätetreiber zu schreiben, der ein USB-Device emuliert stelle
ich mir auch recht kompliziert vor.

Dagegen scheint die Realisierung eines FTP-Servers per µC einfacher. Da
gibt es bestimmt schon Lösungen.

Hier noch ein interessanter Link auf einen anderen Forum-Beitrag.
http://www.mikrocontroller.net/forum/read-4-179126.html
Der Autor hat schon vor einiger Zeit einen "einfachen" Webserver mit
einem AVR realisiert. Nach eigenen Angabe versucht er dieses jetzt mit
einem ARM zu realisieren.

Zum Thema USB-Host-Controller scheint es interessante ICs zu geben,
z.B.
http://www.semiconductors.philips.com/cgi-bin/pldb...
(ist neuerdings für etwas über 7 EUR bei Reichelt zu bekommen). Habe
allerdings noch keine Erfahrungen damit.

Gruß Steffen

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir mal den Keyspan USB Server dazu an.
http://www.format.de/shop/openstore.htm?HSKeyspan,8450

Keine Ahnung ob es geht, konnte aber tun.
Bernd

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.