Forum: PC Hard- und Software Linux sysfs USB GPIO Expander


von Martin W. (Firma: Neuberger Gebäudeautomation) (mwagner)


Lesenswert?

Hallo,

ich bin auf der Suche nach einem USB GPIO Expander für Linux, der GPIOs 
im sysfs (/sys/class/gpio) anlegt.
Dafür gibts scheinbar zig Bastellösungen mit diversen FTDI Chips, ich 
suche aber eine Ready-to-use Lösung. Daher folgende Bedingungungen:
- funktioniert mit Distributionskernel (Debian)
- Als Produkt fertig kaufbar in DE
- Lösung funktioniert an einem Desktop PC.

Kennt jemand ein entsprechendes Produkt? Muss nicht zwingend USB sein, 
alternative Lösungen sind willkommen.

Danke!

von Jim M. (turboj)


Lesenswert?

Suche mal lieber nach PCI(E) Karten. Dafür sehe ich im Kernel Tree ein 
paar Treiber. Die haben anders als die USB Teile auch kein 
Latenzproblem.

Was ist Dein Anwendungsfall denn genau? Eventuell tut es ja auch ein 
I²C/SPI nach GPIO Chip, den man einfach an einen der PC-internen I²C 
Busse klemmt...

von Christoph F. (chf)


Lesenswert?

Martin W. schrieb:
> ich bin auf der Suche nach einem USB GPIO Expander für Linux, der GPIOs
> im sysfs (/sys/class/gpio) anlegt.

Ist sysfs ein Muß? Wenn nicht wird die Auswahl wesentlich einfacher.

Apropos Basteln mit USB und sysfs-GPIOS, da werden Erinnerungen wach:
http://www.linuxtag.org/2013/fileadmin/www.linuxtag.org/slides/Christoph_Fritz_-_Basteln_mit_USB.e294.pdf

von Martin W. (Firma: Neuberger Gebäudeautomation) (mwagner)


Lesenswert?

Ist in der Firma, daher scheidet Löten am PC und zeitintensives 
Selbstbauen von Adaptern aus.

Ich brauche das ganze fürs Debuggen einer Embedded Linux Anwendung. Das 
Debuggen auf dem x86 System ist erheblich komfortabler :-). Diese 
Anwendung greift auf das sysfs Interface zu, daher wäre das mein 
bevorzugter Weg.

Latenz ist unkritisch. Ein paar 100 ms sind vollkommen ausreichend.

USB wäre bevorzugt da so ein Adapter auch mit Laptops und VMs 
funktioniert. Die Notlösung wäre den GPIO von der tatsächlichen Hardware 
per SSH in das Hostsytem einzubinden, aber ein Teil das man ansteckt und 
funktioniert würde ich bevorzugen...

Wo finde ich die Teile im Kernel Tree?

: Bearbeitet durch User
von fchk (Gast)


Lesenswert?

Wäre ein MPSSE-Kabel genehm? Da ist ein FT232H drin, und der gesamt Port 
A wird herausgeführt.

http://www.ftdichip.com/Products/Cables/USBMPSSE.htm
http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_C232HM_MPSSE_CABLE.PDF

fchk

von Jim M. (turboj)


Lesenswert?

Martin W. schrieb:
> Ich brauche das ganze fürs Debuggen einer Embedded Linux Anwendung.

Dann würde ich eher zu einem der FT2232H-basiertem JTAG Adapter greifen, 
und mit OpenOCD arbeiten.

Anders als die - billigeren - FT232H Adapter hätten die oft auch noch 
einen 2. UART fürs serielle Terminal.

von Martin W. (Firma: Neuberger Gebäudeautomation) (mwagner)


Lesenswert?

Danke für die Antworten. Ich entnehme dem ganzen das es keinen fertigen 
Adapter (im Sinne von Hardware UND Software) gibt.

Tagelanges Gebastele ist mir die Sache einfach nicht Wert. Ich kann auf 
dem Embedded Linux System per Remote GDB arbeiten. Auf dem x86 geht es 
nur einfach noch ein Stückchen schneller und bequemer :-).

von Martin W. (Firma: Neuberger Gebäudeautomation) (mwagner)


Lesenswert?

Bin nun doch noch fündig geworden.

- Board mit CH341
- Diesen Treiber compilieren und in Kernel laden: 
https://github.com/gschorcht/i2c-ch341-usb

Out of the Box sind 8 GPIOs im Sysfs aufgetaucht.

: Bearbeitet durch User
von Enrico W. (Firma: metux IT consult) (nekrad)


Lesenswert?

Martin W. schrieb:

> Ich brauche das ganze fürs Debuggen einer Embedded Linux Anwendung. Das
> Debuggen auf dem x86 System ist erheblich komfortabler :-). Diese
> Anwendung greift auf das sysfs Interface zu, daher wäre das mein
> bevorzugter Weg.

Gehts Dir nur darum, zwecks Testing die Anwendung auf einem 0815-PC 
laufen zu lassen ?

Wenn ja, wie wär's denn mit einfach /sys/class/gpio/... über's Netz zu 
mounten ? Sind ja nur triviale FS-Operationen, sollte also mit 9P oder 
NFS trivial gehen.

> Wo finde ich die Teile im Kernel Tree?

Üblicherweise unter ./drivers/gpio/ - ein paar andere Devices (aus 
anderen Ecken können aber auch noch gpio's mitbringen) ...

By the way hab ich grad ein etwas ähnliches Problem - nur suche ich ein 
Relais-Modul für 230V mit USB-Anbindung. Finde da (abgesehen von alles 
selbst zusammen löten) grad nix. Sollte schon etwas fertiges zum einfach 
hinstellen sein. Die großen 19'' power switches scheiden aus (zu groß, 
zu schwer, zu teuer).

Hat jemand einen Tip ?

Kann auch gut damit leben, falls es noch keine richtigen Treiber gibt 
(solange das Protokoll sauber beschrieben ist). Kernel-Treiber schreiben 
gehört ja schließlich zu meinem täglich Brot.


--mtx

von Kaj (Gast)


Lesenswert?

Enrico W. schrieb:
> By the way hab ich grad ein etwas ähnliches Problem - nur suche ich ein
> Relais-Modul für 230V mit USB-Anbindung. Finde da (abgesehen von alles
> selbst zusammen löten) grad nix. Sollte schon etwas fertiges zum einfach
> hinstellen sein. Die großen 19'' power switches scheiden aus (zu groß,
> zu schwer, zu teuer).
Ist zwar etwas gebastel, aber du koenntest dir z.B. so eine Master-Slave 
Steckdosenleiste mit USB Relais kaufen und auseinander bauen:
https://www.amazon.de/Gembird-PCW-MS-5fach-Master-%C3%9Cberspannungsschutz/dp/B000KPS3FY/
Ueber USB kann man die Leiste dann Ein- und Ausschalten. Ich habe so ein 
Teil mal mit einem uC angesteuert. Da reicht es dann einfach einen Pin 
zu setzten + vielleicht einen Transistor als Treiber. Man braucht also 
kein Protokoll als steuerung (also, kommt natuerlich auf die konkrete 
Leiste an!). Muesstest dann nur halt gucken wie du unter Linux an dem 
USB-Pin wackeln kannst.
Kabel fuer USB und 230V sind auch schon dran, fuer gut 20 Euro.

Vielleicht hilft dir das ja.

Gruesse

von Kaj (Gast)


Lesenswert?

Kaj schrieb:
> Da reicht es dann einfach einen Pin
> zu setzten + vielleicht einen Transistor als Treiber. Man braucht also
> kein Protokoll als steuerung (also, kommt natuerlich auf die konkrete
> Leiste an!). Muesstest dann nur halt gucken wie du unter Linux an dem
> USB-Pin wackeln kannst.
Vergiss was ich schrieb. Bei der Leiste die ich hatte (ich glaube es war 
die verlinkte) muss man am Vcc Pin (roter Draht im USB-Kabel) wackeln. 
Und ich bin mir nicht sicher ob man das ueber das OS hinbekommt. Oder 
kann man einen einzelnen USB-Port abschalten (also stromlos)?

von Enrico W. (Firma: metux IT consult) (nekrad)


Lesenswert?

Kaj schrieb:

> Bei der Leiste die ich hatte (ich glaube es war
> die verlinkte) muss man am Vcc Pin (roter Draht im USB-Kabel) wackeln.
> Und ich bin mir nicht sicher ob man das ueber das OS hinbekommt. Oder
> kann man einen einzelnen USB-Port abschalten (also stromlos)?

hmm, ja, kann man - über's Power-Management.

Ist aber auch nervig ... muß man erstmal zur Laufzeit rausbekommen, an 
welchem Port das Ding hängt (blöd, wenn man öfters umsteckt :o) und dann 
das Port schlafen legen (sofern der Controller das per Port kann).

Sofern man keinen Hub dazwischen hat. Und da haben wir das nächste 
Problem - mir werden schnell die Ports ausgehen, sodaß ich einen Hub 
dazwischen legen müßte :(

Hast Du das Ding zufällig noch irgendwo rumliegen ? Dann könnten wir ja 
mal schauen, ob da eine MCU dranhängt, mit der man evtl. reden kann.
Schön wäre es zumindest, wenn sich das Ding enumerieren ließe - dann 
könnte man das auch probe'n und ggf. gleich einen Treiber basteln, der 
das Ding ins LED-Subsystem einklinkt (zwecks einfachen schaltens via 
cmdline).

Hab mir unterdessen mal ein sonoff s20 aus China bestellt (mal sehen, 
ob's noch in diesem Jahr ankommt :o). Die Dinger haben auch WLAN. Sind 
zwar für die Klaut gebaut (irks, will ich garnicht), aber man kann die 
wohl auch austricksen, daß sie mit einem eigenem Server reden. Gibt dann 
allerlei schräges websockets-Gebastel, aber das kann ich mir ja in den 
R4D reinpatchen ...

Alternativ hätt ich eine andere Idee:

Falls es hier paar Leute gibt, die sich an eine richtige 
Produktentwicklung rantrauen (mit all dem Abhahme-Krams, den man da so 
braucht), könnten wir das ja gern mal in Angriff nehmen. Irgendein 0815 
SoC, auf dem Linux läuft, Ralais per GPIO angeflanscht und 'ne richtige 
Buchse dran. Um die Software-Seite würde ich mich kümmern, aber der 
schaltungstechnische Teil ist nix für mich :o.

--mtx

von Nano (Gast)


Lesenswert?

Martin W. schrieb:
> Ich brauche das ganze fürs Debuggen einer Embedded Linux Anwendung. Das
> Debuggen auf dem x86 System ist erheblich komfortabler :-). Diese
> Anwendung greift auf das sysfs Interface zu, daher wäre das mein
> bevorzugter Weg.
>
> Latenz ist unkritisch. Ein paar 100 ms sind vollkommen ausreichend.
>
> USB wäre bevorzugt da so ein Adapter auch mit Laptops und VMs
> funktioniert. Die Notlösung wäre den GPIO von der tatsächlichen Hardware
> per SSH in das Hostsytem einzubinden, aber ein Teil das man ansteckt und
> funktioniert würde ich bevorzugen...

Ich würde ja einfach einen Raspberry Pi 3 nehmen, der liefert die GPIOs 
gleich mit.

Auf dem läuft ein Linux, man hat also die gewohnte Umgebung und wenn man 
die Daten wirklich auf dem PC benötigt, dann kann man ja die 
Netzwerkfunktionalität des Raspberry Pi nutzen und die Daten an den PC 
weiterleiten.

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.