Computer als USB-OTG-Device mit HID-Gadget

OP #7696624
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

#7696705
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

#7696740
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.

#7696898
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).

OP #7697064
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren