Forum: PC Hard- und Software USB Host-zu-Device Adapter bauen


von Fabiano S. (fabiano)


Lesenswert?

Hallo zusammen!

Ich bräuchte ein Gerät, das auf jeweils 2 verschiedenen USB-Ports im 
Device- und im Host-Modus läuft. Auf dem Gerät will ich ggf. USB-Traffic 
manipuliern, weshalb darauf Linux laufen soll. Ausserdem muss es am 
Device-Port vom angeschlossenen Host mit Strom versorgt werden.

Gibt es da etwas?

Liebe Grüsse,
Fabiano

von Rolf M. (rmagnus)


Lesenswert?

Fabiano S. schrieb:
> Hallo zusammen!
>
> Ich bräuchte ein Gerät, das auf jeweils 2 verschiedenen USB-Ports im
> Device- und im Host-Modus läuft. Auf dem Gerät will ich ggf. USB-Traffic
> manipuliern, weshalb darauf Linux laufen soll. Ausserdem muss es am
> Device-Port vom angeschlossenen Host mit Strom versorgt werden.
>
> Gibt es da etwas?

Wenn auch ohne Betriebssystem aber mit für einen µC üppigen Resourcen 
geht, könntest du einen Teensy 4.1 nehmen. Der kann host und device 
gleichzeitig, allerdings nur USB 2.

von Thorsten (Gast)


Lesenswert?

Hi,
Nimm einen RPi 4, der hat auf USB C einen device Anschluss und 
offensichtlich 4 USB Host - damit kann man das machen was du willst.
Grüße
 Thorsten

von Rolf M. (rmagnus)


Lesenswert?

Thorsten schrieb:
> Nimm einen RPi 4, der hat auf USB C einen device Anschluss und
> offensichtlich 4 USB Host

Hmm, cool. Das wusste ich gar nicht. Ich hatte bisher gedacht, der 
Typ-C-Anschluss sei nur für die Stromversorgung da.

von Fabiano S. (fabiano)


Lesenswert?

Vielen Dank für die Antworten!

Wusste auch nicht, dass der RP4 Device-Modus kann, ist aber logisch, 
wenn der als PIKVM (https://pikvm.org/) dienen kann.
Allerdings ist der zu gross und eigentlich bräuchte ich die 
USB-Anschlüsse gegenüber der Platine. So dass das Ding halt möglichst 
wie eine Verlängerung eines USB-Sticks aussieht.

Linux ist erforderlich, weil Linux-Treiber darauf laufen müssen. 
Ausserdem wäre USB3 schon nett. Aber von der Grösse perfekt!

von Frank K. (fchk)


Lesenswert?

Du könntest auch einen PocketBeagle nehmen:

https://beagleboard.org/pocket

USB0 ist direkt auf eine Buchse herausgeführt, USB1 list für auf einer 
der STiftleisten zu finden. Da musst Du halt ein Kabel anschließen.

fchk

von Imonbln (Gast)


Lesenswert?

Vielleicht ist das,was du suchst ist zwar schon älter aber wenn es 
hilft...

http://travisgoodspeed.blogspot.com/2012/07/emulating-usb-devices-with-python.html

von Fabiano S. (fabiano)


Lesenswert?

Ja, sowas in die Richtung such ich, nur sollte es halt vom Format her 
etwa dem eines USB-Sticks (also Massenspeicher) entsprechen, mit einem 
USB-Port je schmaler Seite, wenn möglich Typ A. Lässt sich sowas 
allenfalls (fürs Prototyping in geringen Stückzahlen) produziern?

von Horft (Gast)


Lesenswert?

Fabiano S. schrieb:
> Hallo zusammen!
>
> Ich bräuchte ein Gerät, das auf jeweils 2 verschiedenen USB-Ports im
> Device- und im Host-Modus läuft. Auf dem Gerät will ich ggf. USB-Traffic
> manipuliern,

> weshalb darauf Linux laufen soll.

Da ist Linux aber komplett fehl am Platz! Das musst du über einen FPGA 
machen. Die Soft kann dann auf dem PC laufen der Linux hat. Ist aber 
sehr unkompfortabel. Da nimmst lieber die aktuelle Version für Windows 
10

> Ausserdem muss es am
> Device-Port vom angeschlossenen Host mit Strom versorgt werden.
>
> Gibt es da etwas?

Leider nein. Ich empfehle dir selbst eine PCB zu machen. Wegen der 
Signalintegrität empfehle ich dir 4 Layer. Bei BiDi wären aber 6 Layer 
sinnvoller. Achte auf die Wellenwiderstände der Leiterbahnen.

von Frank K. (fchk)


Lesenswert?

Fabiano S. schrieb:
> Ja, sowas in die Richtung such ich, nur sollte es halt vom Format her
> etwa dem eines USB-Sticks (also Massenspeicher) entsprechen, mit einem
> USB-Port je schmaler Seite, wenn möglich Typ A. Lässt sich sowas
> allenfalls (fürs Prototyping in geringen Stückzahlen) produziern?

Warum ist das mechanische Format für Dich wichtig?

Und ja, technisch ginge da was, aber das wird teuer, eben wegen der 
geringen Stückzahlen. Rechne mal mit 10k. Da nimmst Du besser was 
fertiges, was aber mechanisch nicht ganz passt.

fchk

von Fabiano S. (fabiano)


Lesenswert?

Horft schrieb:
> Da ist Linux aber komplett fehl am Platz!

Linux ist deshalb nicht fehl am Platz, weil auf dem Teil Linuxtreiber 
laufen müssen.

> Das musst du über einen FPGA machen.

Ich verstehe deinen Einwand schon, aber leider geht das hier nicht.

> Die Soft kann dann auf dem PC laufen der Linux hat. Ist aber
> sehr unkompfortabel. Da nimmst lieber die aktuelle Version für Windows
> 10

Also ich finde Linux wesentlich komfortabler als Windows...;)

> Ich empfehle dir selbst eine PCB zu machen. Wegen der Signalintegrität
> empfehle ich dir 4 Layer. Bei BiDi wären aber 6 Layer sinnvoller. Achte
> auf die Wellenwiderstände der Leiterbahnen.

Ich habe mir zum Thema PCB einmal paar Google-Ergebnisse angeschaut und 
tatsächlich wäre ein Selbstdesign zumindest nicht sooo unerreichbar wie 
ich es erwartet hätte. Kannst du irgendwelche Youtube-Videos, Howtos und 
dergleichen empfehlen, wo so ein selbstdesigntes Gerät vom PCB über die 
Bestückung mit Komponenten bis vielleicht zur Gehäusekonstruktion 
abgehandelt wird? Ich bin leider extrem schlecht darin, losgelöst 
irgendwelche Formeln und Begriffe zu lernen, aber anhand eines konkreten 
Beispiels sollte ich es eher schaffen.

von oerks (Gast)


Lesenswert?

> eines konkreten Beispiels

Lach, in so einem Projekt stecken dutzende Beispiele.

Die Platine ist nun wirklich für den Anfang das, worum man sich
am wenigsten Sorgen machen muss.

Die Anregung das ganze überhaupt erst einmal, z.B. auf einem
Raspberry lauffähig zu haben, kann ich nur unterstützen.
Alternativ, such dir ein Evalboard dass eine USB-E/XHCI-PHY,
einen USB-Client-Port und den gewünschten Controller enthält.

Du darfst auch nicht damit rechnen, dass die bereits vorhandene
Treiberschicht des Linuxkernel, dein Vorhaben allzu sehr
unterstützen wird. USB ist kein Protokoll, wo man so einfach
eine Bridge zwischen zwei Ports klemmen kann.

Nicht das ich bezweifle das es grundsätzlich möglich ist.
Aber der Weg wird lang werden.

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.