Hallo, hat jemand eine Ahnung ob es ein freies Projekt gibt welches ein GPIO HID Device zur Verfügung stellt? Ich spezifiziere die Sache noch etwas weiter, ja es gibt hierzu kommerzielle Lösungen die funktionieren alle über Treiber. Es gibt auch freie Lösungen z.Bsp über Serielle USB-Wandler mit GPIO Ports, aber der Support über Standard Treiber wird nicht unterstützt. Es wird doch ein Projekt geben welches dann die GPIOs standardmäßig einfach zur Verfügung stellt? Gefundene Lösungen war die Kommunikation per HID sehr speziell. Mein Problem ist eigentlich das ich für ein Entwicklungssystem zum Testen GPIOs benötige, da aber so ein PC die nicht zur Verfügung stellt wäre eine Lösung die man per USB ansteckt sehr schön. Nur leider stellen gefundene Lösungen diese GPIOs dem System nicht so zur Verfügung das sie von Systemlösungen z.Bsp gpiolib verwendet werden können. Was ich bereits ahne ist das es so ein GPIO Profil als HID in der USB-Spezifikation nicht gibt und deshalb die Sache nicht so einfach ist.
:
Bearbeitet durch User
Marco H. schrieb: > hat jemand eine Ahnung ob es ein freies Projekt gibt welches ein GPIO > HID Device zur Verfügung stellt? Das hier ist HID-basiert und mit Open-Source-Demosoftware: https://www.pollin.de/p/odroid-usb-io-board-pic18f45k50-qfn-810267 https://github.com/hardkernel/Odroid-USBIO/tree/master/usbio/linux
Marco H. schrieb: > Es gibt auch freie Lösungen z.Bsp über Serielle USB-Wandler mit GPIO > Ports, aber der Support über Standard Treiber wird nicht unterstützt. Ja, das liegt daran, daß "Standard Treiber" kein GPIO kennen. USB-Seriell-Bridges sind halt USB-Seriell-Bridges und keine GPIO-Geräte, die können serielle Daten senden und empfangen und gegebenenfalls auch mit ihren Handshakeleitungen wackeln. Bei HID sieht es nicht sehr viel anders aus; für die üblichen Standard-HID-Geräte wie Maus & Tastatur gibt es natürlich Standardtreiber, aber für das, was darüber hinausgeht, auch nicht. GPIO via USB erfordert also immer irgendeine Speziallösung, auch wenn da mit einem USB-Gerät mit einer Standardgeräteklasse wie HID abgewickelt wird.
Marco H. schrieb: > hat jemand eine Ahnung ob es ein freies Projekt gibt welches ein GPIO > HID Device zur Verfügung stellt? Sowas kann man kaufen. MCP2200 und MCP2221A sind vorprogrammierte USB-PICs, die neben einen UART gemäß CDC-ACM GPIOs und im Falle vom MCP2221A auch I2C via HID bereitstellen. In den Datenblättern stehen die erforderlichen Reports drin. Funktioniert auch, hab ich ausprobiert - ich brauchte das für eine Art Programmierschnittstelle bei einem NVidia-Board. https://www.microchip.com/en-us/product/mcp2200 https://www.microchip.com/en-us/product/mcp2221a fchk
Hmmm schrieb: > Marco H. schrieb: >> hat jemand eine Ahnung ob es ein freies Projekt gibt welches ein GPIO >> HID Device zur Verfügung stellt? > > Das hier ist HID-basiert und mit Open-Source-Demosoftware: > > https://www.pollin.de/p/odroid-usb-io-board-pic18f45k50-qfn-810267 > > https://github.com/hardkernel/Odroid-USBIO/tree/master/usbio/linux Das Teil habe ich schon seit 2011 im Schrank und ich habe mir auch die Beispiele in C angeschaut. Man operiert mit den HID Device ziemlich umständlich. Es gibt keinen Treiber der die GPIOs dem System zur Verfügung stellt. Der MCP stellt auch keine GPIOs zur Verfügung und es gibt ja auch Boards dafür. Überall steht das der Microchip Treiber keine GPIOs unterstützt.
:
Bearbeitet durch User
Marco H. schrieb: > Man operiert mit den HID Device ziemlich > umständlich. Es gibt keinen Treiber der die GPIOs dem System zur > Verfügung stellt. Also willst Du eigentlich keine GPIOs als USB-HID-Device, sondern ein beliebiges USB-GPIO-Interface, für das es einen Kerneltreiber gibt, der es Dir als Linux-GPIO-Device serviert. Einen generischen Treiber dafür kann es nicht geben, weil es - wie Du schon korrekt vermutet hast - keine "GPIO Device Class" gibt.
Marco H. schrieb: > Das Teil habe ich schon seit 2011 im Schrank und ich habe mir auch die > Beispiele in C angeschaut. Man operiert mit den HID Device ziemlich > umständlich. Es gibt keinen Treiber der die GPIOs dem System zur > Verfügung stellt. Und das ist jetzt Dein Problem? Du bist unbedingt und unter allen Umständen darauf angewiesen, die GPIOs unter /sys/gpio/... zur Verfügung gestellt zu bekommen, und es ist Dir Dir unmöglich, alternative Routinen zu schreiben? > Der MCP stellt auch keine GPIOs zur Verfügung und es gibt ja auch Boards > dafür. Überall steht das der Microchip Treiber keine GPIOs unterstützt. Ja. Es steht Dir aber frei, das zu ändern. Du hast ja den gesamten Quellcode. Wie Du schon geahnt hast: es kann keine generischen Lösungen geben. Das eheste, was ich mir vorstellen könnte: ein FT260 USB-I2C (der wird out-of the box) als /dev/i2c-... erkannt, und daran einen von Linux unterstützten I2C-GPIO-Expander anklemmen. Den musst DU dann "nur noch" in einer udev-Rule irgendwie angemeldet bekommen. fchk
Der Klassiker der I/O-Controller der über Generic HID läuft, ist der IO-Warrior: https://www.codemercs.com/de/io Aber wie On-Board-GPIO können die Pins nicht zur Verfügung stehen, da sie sich nun mal nicht im Adressraum der CPU befinden. Also etwas USB-Kommunikation ist notwendig.
Du kannst einen (vom Kernel unterstützten) USB->I²C Adapter nehmen, notfalls den I2C-Tiny-USB, und am I²C-Bus einen GPIO-Chip (PCF8574 usw) anschließen. das ganze entsprechend verheiraten (echo "pcf8574 0x55" > /sys/bus/i2c/devices/i2c-99/new_device) und schon hast du schöne, vom Kernel verwaltete GPIOs...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.