Forum: PC-Programmierung Computer als USB-OTG-Device mit HID-Gadget


von Benny (cks389)


Lesenswert?

Hallo zusammen,

ich möchte von einem Embedded Linux einen USB-HID-Device per 
HID-Gadget-Treiber an einem OTG-Port zur Verfügung stellen. Soweit kein 
Problem. Um die Entwicklung zu vereinfachen (das Protokoll lässt sich 
dann schneller implementieren) wollte ich dies auf meinem herkömmlichen 
Linux PC (Debian Bullseye) vorbereiten.

So wie ich das gesehen habe, scheinen die USB-Controller im PC keinen 
Device- bzw. OTG-Modus zu besitzen. Somit kann man den 
HID-Gadget-Treiber auch nicht laden. Gibt es eine Möglichkeit eine 
solche Schnittstelle am PC "nachzurüsten"? Hat das schon mal jemand in 
der Richtung gemacht?

Grüße
Benny

von Frank K. (fchk)


Lesenswert?

Sowas gab es mal, war aber sehr teuer (so 300$), aber der passende USB 
Device Controller Chip ist längst abgekündigt.

fchk

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Diverse SBC's wie Raspberry oder BeagleBone sollten das doch auch 
können, oder? Damit kann man das recht günstig ausprobieren.

von Frank K. (fchk)


Lesenswert?

Niklas G. schrieb:
> Diverse SBC's wie Raspberry oder BeagleBone sollten das doch auch
> können, oder? Damit kann man das recht günstig ausprobieren.

Hat er ja. Er wollte das aber auf einem PC haben.

Ich habe die Boards gefunden:

http://www.bplus.com.tw/Adapter/PP2380-AB.html
http://www.bplus.com.tw/Adapter/PP3380-AB.html

Das sind PCIe USB Device Controller mit USB-B Buchse. Genau das willst 
Du haben. Viel Glück beim Organisieren.

fchk

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Frank K. schrieb:
> Hat er ja. Er wollte das aber auf einem PC haben.

Diese SBCs lassen sich aber fast wie ein PC benutzen, mit Monitor, 
Compiler etc. Sind halt nur langsamer.

von Harald K. (kirnbichler)


Lesenswert?

Benny schrieb:
> Gibt es eine Möglichkeit eine
> solche Schnittstelle am PC "nachzurüsten"?

Im Prinzip schon.


Das hier

https://www.analog.com/media/en/technical-documentation/data-sheets/MAX3421E.pdf

ließe sich mit einer USB-SPI-Bridge kombinieren, wie z.B. 
https://ftdichip.com/products/ft4222h/

Dann musst Du "nur noch" eine Treiberschicht auf Deinem PC schreiben, 
die z.B. über die FTDI-DLL mit dem FT4222h redet und darüber via SPI den 
USB-Devicecontroller ansteuert.

Kann man machen, ist halt ... mühsam.

von Le X. (lex_91)


Lesenswert?

Frank K. schrieb:
> Niklas G. schrieb:
>> Diverse SBC's wie Raspberry oder BeagleBone sollten das doch auch
>> können, oder? Damit kann man das recht günstig ausprobieren.
>
> Hat er ja. Er wollte das aber auf einem PC haben.

Naja, mittels ssh und sshfs kann man den Pi schon so an den PC anbinden 
dass man kaum mehr merkt, dass das zu testende Tool auf dem Pi läuft.
Sogar die IDE und der Compiler können auf dem PC laufen (wobei mir die 
Einrichtung eines Crosscompilers zu umständlich wäre).

von Benny (cks389)


Lesenswert?

Hallo und vielen Dank für die zahlreichen Antworten.

@Frank: Jaaaaa genau sowas hatte ich gesucht. Die USB-2.0-Version werde 
ich gleich mal bestellen.

Die Entwicklung auf dem SBC durchzuführen, möchte ich gerne vermeiden. 
Klar, SSHFS usw. machen das alles recht einfach, aber das vorrangige 
Ziel ist eindeutig, dass die Entwicklung auf meinem PC läuft. Deswegen 
werde ich das erstmal mit der PCIe-Karte testen. Ich hoffe, das mit den 
Treibern unter Linux wird kein großes Problem.

Als Fallback bietet sich auch socat an, was dann auf einem SBC laufen 
würde. Ich habe das kurz mal mit einem beliebigen hidraw-Device über 
localhost getestet und bin relativ zufrieden für eine Zweitlösung.

Socat Server:

sudo socat tcp-l:4001,fork,keepalive,nodelay,reuseaddr /dev/hidraw5

Socat Device:

sudo socat pty,link=/dev/lio0,nonblock,raw,echo=0,ignoreof,waitslave 
tcp:localhost:4001

Dann konnte mit dem /dev/lio-Device eigentlich alles machen. Damit 
könnte ich dann das hidraw-Device per Netzwerk auf meinen PC tunneln.

Quelle:

https://www.lucid-control.com/accessing-usb-io-module-network-linux-socat/

Die Lösung vom Harald ist mir auch schon über den Weg gelaufen, ist aber 
sehr kompliziert. Ich würde erstmal davon Abstand nehmen.

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.