Hallo,
ich habe ein Ethernet-Gerät, dass nun in einer neuen Version als
USB-Gerät arbeiten soll. Nun gibt es Adapter wie "Anker USB 3.0 auf
RJ45", womit sich ohne Treiber ein Ethernet-Adapter in Windows ergibt.
Eigentlich genau das was ich suche. Über 300Mbit/s werden erreicht.
Nun die Frage: wie bekommt man so eine Lösung auf eine eigene Platine?
Ist das so ein Chip wie der Microchip LAN7801?
Wie geht man da vor, lädt man da einfach einen USB-Deskriptor rein und
Windows kann dann automatisch den Rest?
Kennt jemand vielleicht eine Variante als fertiges PCB-Submodul?
Tim schrieb:> Ist das so ein Chip wie der Microchip LAN7801?
Ja, plus ein wenig Hühnerfutter.
Tim schrieb:> Wie geht man da vor, lädt man da einfach einen USB-Deskriptor rein und> Windows kann dann automatisch den Rest?
Ich gehe von Plug&Play aus. Was sagt das Datenblatt dazu?
Tim schrieb:> ich habe ein Ethernet-Gerät, dass nun in einer neuen Version als> USB-Gerät arbeiten soll.
So einfach wird es nicht sein.
Es muss natürlich die passende Netzwerkkonfiguration durchgeführt
werden.
Es ist und bleibt ein Ethernet-Gerät, welches an einem Ethernet-Port
angeschlossen ist.
Tim schrieb:> Wie geht man da vor, lädt man da einfach einen USB-Deskriptor rein und> Windows kann dann automatisch den Rest?
Windows schon, aber du hast da ja ein internes Ethernet-Netzwerk, du
musst ja den Adapter mit deinem Gerät per Kabel verbinden. Und dann
musst du dieses interne Netzwerk noch konfigurieren, z.B. mit festen
IP-Adressen, wenn du nicht auch noch DHCP usw. einbauen willst.
Davon den Adapter zu zerlegen und auszuschlachten kann ich nur abraten,
bei solcher Chinaware bekommst du wahrscheinlich nicht zweimal das
gleiche Innenleben. Ausserdem hat dein Gerät dann ja immer noch einen
Kabelanschluss.
Georg
Hast Du das Ethernet-Gerät selber gebaut? Wenn ja, mit welchen
Komponenten?
Meine Frage geht dahin:
Wenn Du das Ethernet-Gerät nicht modifizieren kannst, brauchst Du einen
Switch-Chip und eine USB-Ethernet Bridge. Im Allgemeinen ist es nicht
wirtschaftlich, diese Komponenten im eigenen Produkt zu integrieren, das
kaufst Du besser für wenige € zu und legst es mit in den Karton.
Wenn Du das Ethernet-Gerät selber entwickelt hast und Du einigermaßen
geschickt warst bei der Auswahl des Prozessors, dann hat dieser
Prozessor ein USB Device. Und über dieses USB Device kannst Du für
Windows ein RNDIS und für alle anderen Betriebssysteme ein CDC-EEM oder
CDC-ECM Interface implementieren. Das ist dann reine Software.
Idealerweise baust Du dann noch einen DHCP-Server ein, der dem
angeschlossenen PC dann die passenden IP-Adressen konfiguriert.
fchk
PS: Läuft auf dem Gerät ein Linux? Dann brauchst Du den USB Gadget
Support. Der macht das dann, aber Du brauchst dafür ein USB-OTG oder ein
USB Device, keinen USB Host.
Frank K. schrieb:> Idealerweise baust Du dann noch einen DHCP-Server ein, der dem> angeschlossenen PC dann die passenden IP-Adressen konfiguriert.
Und der darf nicht mit den anderen verwendeten Netzen kollidieren!
Christian H. schrieb:> Tim schrieb:>> Wie geht man da vor, lädt man da einfach einen USB-Deskriptor rein und>> Windows kann dann automatisch den Rest?> Ich gehe von Plug&Play aus. Was sagt das Datenblatt dazu?
Das Datenblatt finde ich sehr allgemein. Gefühlt kann sich das Gerät per
USB als alles anmelden, jedoch funktionieren wird es wohl nur mit
ausgewählten Konfigurationen. Wahrscheinlich wegen mehreren
Anwendungsfällen für den Chip. Der Plug&Play-Modus würde mir reichen.
Christian H. schrieb:> Tim schrieb:>> ich habe ein Ethernet-Gerät, dass nun in einer neuen Version als>> USB-Gerät arbeiten soll.>> So einfach wird es nicht sein.> Es muss natürlich die passende Netzwerkkonfiguration durchgeführt> werden.> Es ist und bleibt ein Ethernet-Gerät, welches an einem Ethernet-Port> angeschlossen ist.
Wenn es mit dem USB-Chip wieder wie ein Ethernet-Port funktioniert, dann
ist es ausreichend.
Ich weiß gar nicht warum das Ethernet-Gerät wichtig für die Auswahl sein
soll. Die Adapter auf Amazon machen doch auch nichts besonderes. Man hat
quasi per USB eine Netzwerkkarte. Wenns also damit funktioniert, sollte
es doch auch mit dem Chip gehen.
Ich fand diesen Ansatz interessant, da man sich nicht mit einem
USB-Treiber rumschlagen muss und trotzdem weiter Ethernet nutzen kann.
Tim schrieb:> Ich weiß gar nicht warum das Ethernet-Gerät wichtig für die Auswahl sein> soll. Die Adapter auf Amazon machen doch auch nichts besonderes. Man hat> quasi per USB eine Netzwerkkarte. Wenns also damit funktioniert, sollte> es doch auch mit dem Chip gehen.>> Ich fand diesen Ansatz interessant, da man sich nicht mit einem> USB-Treiber rumschlagen muss und trotzdem weiter Ethernet nutzen kann.
Das ist alles nicht so einfach, wie Du Dir das denkst.
Die üblichen Netzwerkadapter mit Chips von Realtek oder Asix oder
Microchip/SMSC brauchen spezielle Treiber, die Du vorher installieren
musst. Nachdem Du das gemacht hast, hast Du in der Systemsteuerung eine
weitere Netzwerkkarte, die Du konfigurieren kannst, genau so wie die
eingebaute. Ohne installierte Treiber siehst Du bei einigen Adaptern
eine Art USB-CDROM, wo die benötigten Treiber abgelegt sind. Wenn die
Treiber aktiviert sind, schalten sie das virtuelle CDROM-Laufwerk weg
und das Netzwerkinterface an.
Dann gibt es RNDIS. Das ist eine Spezifikation für eine virtuelle
USB-Netzwerkkarte. Die Spec ist von Microsoft, und nur Windows kann
damit etwas anfangen. Die dafür erforderlichen Treiber sind bei Windows
dabei, man braucht keine weiteren zu installieren.
Dann gibt es CDC-EEM (Ethernet Emulation Mode) und CDC-ECM (Ethernet
Control Module). Das sind Standards vom USB-Forum, die alle
Betriebssystemhersteller implementiert haben ... alle bis auf einen -
3mal darfst Du raten, wer mal wieder sein eigenes Ding dreht... Kann
sein, dass Windows 10 das inzwischen kann.
Die aktuell erhältlichen USB-Ethernet Adapter, die mir bislang in die
Finger gekommen sind (und das sind einige), brauchen allesamt
proprietäre Treiber und können mit RNDIS und CDC-EEM/ECM nichts
anfangen. Um wirklich treiberlos zu werden, brauchst Du eine
Prozessor-Software-Lösung. Nur dann ist es wirklich treiberlos.
fchk
RNDIS ist eine Spezifikation von Microsoft, aber bei weitem ist sie
nicht die einzige Platform, die was damit anfangen kann...
Im Gegenteil! RNDIS wird ebenso vom Linux Kernel und MacOS unterstützt.
Ich habe eine RNDIS library für den STM32F4 geschrieben und eine Demo in
ein git repo hochgeladen:
https://github.com/nicokorn/STM32F4XX_RNDIS_DEMO
Die Demo funktioniert auf allen gennanten Platformen.