Raspberry Pi4 Deskpi-Pro Front-USB

selfmade01

Lieutenant
Registriert
Okt. 2012
Beiträge
802
Halle,

habe auf meinem Raspberry Pi4 was in einem Deskpi-Pro Gehäuse mit zusätzlichen Front-USB Ports diese Front USB-Ports nun so aktualisiert im System das diese auch gefunden und aktiviert werden können.

Das Problem dabei ist... irgendwie scheint die Plug and Play nicht richtig zu funktionieren.

Ich verwende HomeAssistant und benötige diese Front-USB-Ports nur ab und zu wenn ich mal einen ESP32 flashen mus.

Habe ich HA aktiv und versuche dann erst ein Gerät an den USB zu hängen so erkennt HomeAssistant diesen nicht und auch bei einem Reload der Konfiguration und selbst auch bei einem kompletten Neustart von HA nicht.
Boote ich jedoch den Raspberry neu so erkennt dann auch Home Assistant diesen Front-Port aber nur wenn während des Boootens ein gerät angeschlossen ist.

Ich vermute ich muss den Front-USB-Port der sich dann unter HA als /Dev/ttyUSB2 zeigt irgendwie manuelle mounten und aktivieren
oder? wie kann man es einstellen das Linux diesen automatisch mountet in denm Moment in dem man was anschliest?

Ist das möglich?

Grüße Jürgen
 
Denke du meinst sowas?

https://wiki.archlinux.org/title/udev

Habe ich mir auch gebaut damit meine Logitechtastatur wieder die LEDs anmacht wenn ich die per KVM switche.

Funktioniert problemlos mit allem USB Geraffel.
 
Bohnenhans schrieb:
Habe ich mir auch gebaut damit meine Logitechtastatur wieder die LEDs anmacht wenn ich die per KVM switche.
Hallo,
wow Danke, ich denke das sieht genau nach dem aus was ich suche.

Ich raufe mir aber doch die Haare wieso heute im Jahr 2023 (und Linux ist ja nun doch schon ein Opa im BS) sowas nicht schon von Haus aus mit an Board ist.

Oder ist es dies zumindest wenn man Linux mit der grafischen Benutzeroberfläche aufsetzen würde.
Ok ich würde es noch verstehe das man von Drittanbietern für Gehäuse wie hier Deskpi die Frontporst einmal einrichten müsste,,, aber dann sollte es gut sein und solche Dienste wie udev sollten doch automatisch mit an Board sein
edit: bzw... ist udev mit an Board aber wohl nicht eingerichtet... wenn man sowas nicht weiss dann wird das Arbeiten mit USB auch nicht gerade spassig

oder sehe ich da was falsch?
Ergänzung ()

Wow das Tool scheint richtig mächtig und umfangreich zu sein

Man muss wohl irgendwelche rules erstellen...

mein System sieht so aus
Code:
sudo ls -ls /sys/class/tty/
console/   tty1/      tty13/     tty17/     tty20/     tty24/     tty28/     tty31/     tty35/     tty39/     tty42/     tty46/     tty5/      tty53/     tty57/     tty60/     tty7/      ttyprintk/
ptmx/      tty10/     tty14/     tty18/     tty21/     tty25/     tty29/     tty32/     tty36/     tty4/      tty43/     tty47/     tty50/     tty54/     tty58/     tty61/     tty8/      ttyUSB1/
tty/       tty11/     tty15/     tty19/     tty22/     tty26/     tty3/      tty33/     tty37/     tty40/     tty44/     tty48/     tty51/     tty55/     tty59/     tty62/     tty9/
tty0/      tty12/     tty16/     tty2/      tty23/     tty27/     tty30/     tty34/     tty38/     tty41/     tty45/     tty49/     tty52/     tty56/     tty6/      tty63/     ttyAMA0/
grobot@GRobotServer:~/docker $ sudo ls -ls /sys/class/tty/ttyUSB1/
insgesamt 0
0 -r--r--r-- 1 root root 4096  2. Mär 17:15 dev
0 lrwxrwxrwx 1 root root    0 28. Feb 14:46 device -> ../../../ttyUSB1
0 drwxr-xr-x 2 root root    0  2. Mär 17:15 power
0 lrwxrwxrwx 1 root root    0 28. Feb 14:45 subsystem -> ../../../../../../../../../../../class/tty
0 -rw-r--r-- 1 root root 4096 28. Feb 14:45 uevent
grobot@GRobotServer:~/docker $ sudo ls -ls /sys/class/tty/ttyUSB1/

was mich stutzig macht...
ich habe hier am System 5 USB-Anschlüsse am Despi-Gehäuse Rückseite, wobei 2 USB gebrückt sind da ich intern eine SSD-Disk habe, vorne am Gehäuse habe ich auch noch 2 USB.
Im Listing oben finde ich aber gerade mal einen USB Port unter den Ganzen tty's

wie das?
 
Zuletzt bearbeitet:
udev ist IMMER mit dabei seit Kernel 2.6 - das ist eine "Basisschnitstelle" von Linux Also seit 20 Jahren ist das in Linux - davor gab es sicher was ähnliches.

Ich habe das wie gesagt für die Logi Tastatur gemacht, da gab es recht gute Anleitungen, die auch für alle Arten von usb leicht anpassbar sind. Ich war da echt erstaunt wie einfach man USB an und abstecken so mit eigenen Scripten ergänzen kann.

/dev/ttyusb ist bereits ein USB Gerät mit "Textterminalemulation" Fähigkeit also denke irgendwas mit serieller Schnittstellen emu oder sowas.

Du solltest eher erst mal in der Basissuche "lsusb" nehmen


Ich habe aktuell nur einen raspberry (4) im KVM Swuitch im Einsatz zum nachschauen - da sieht das dann so aus (ohne usb geräte)

Dann steckst dein USB Ding an und machst nochmal lsusb - dann siehste ob das prinzipiell erkannt wird. und dann kann man weiterschauen

im /dev/ Bereich bist Du schon evtl zu weit da landen die Geräte erst wenn der Treiber für das spezielle Gerät erfolgreich geladen wurde und das dann auch ansprechbar ist.

Flashen von ESP32 hmmm musst Du da evtl am ESP32 was drücken? ich nutze meine ESP32 nur mit c++ aus Platform I/O heraus weiss nicht wie das bei z.b. MicroPython etc ist?
 

Anhänge

  • raspiusb.jpg
    raspiusb.jpg
    26 KB · Aufrufe: 131
Zuletzt bearbeitet:
Was macht den dein unbekanntes Gerät welches sich als serielle Schnittstelle präsentiert und daher nur bedingt PNP-taulich ist?
Und welche Interaktion erwartest du mit deiner Software?
Was steht in der Dokumention deiner Software und des unbekannten Geräts?
Unterstützt diese Software diese Hardware überhaupt mit der von dir erwarteten Funktion und wurde die Software für diese Funktion überhaupt konfiguriert?
 
Ich habe mal einen ESP32 a meinen PiKVM Switch angeschlossen der meldet sich so:

als "UART Bridge"

Leider ist natürlich piKVM kein wirklich richtig installiertes Linux, weil es halt für die KVM Fuinktionalitöt super optimiert ist und auch USB Host/Device Funktionalität hat.

Getestet auf meinem DailyServer scheint es so zu sein ein ESP32 erzeugt das dev "/dev/ttyUSB*"

* halt je nachdem was angeschlossen war beim mir /dev/ttyUSB0

das /dev/ttyUSB0...99 also welche Zahl da hinten dran ist das kann man glaube ich nicht per Software beeinflussen

Die Flash-Software für den ESP32 muss das dynamisch können - oder Du musst das dann evtl per script und Paramteraufruf nachrüsten?

/dev/ttyUSB* ist kein klassischer mountpoint sondern eine Geräteschnittstelle.

Das Problem denke ich ist evt dass die Flash Software "Hardcoded" auf einen Port ist also z.B. /dev/ttyUSB0

sobald aber Linux den mal vergeben hatte (egal wann) gibt es den nicht vielleicht zu dem Zeitpunkt nicht mehr und sobald du das Gerät wieder ansteckst ist das evtl /dev/ttyUSB1 oder /dev/ttyUSB2 etc..... ?

--------------------------

Welche HA Erweiterung zum Flashen nutzt Du denn?
 

Anhänge

  • raspesp32.jpg
    raspesp32.jpg
    21,3 KB · Aufrufe: 130
Zuletzt bearbeitet:
Bohnenhans schrieb:
davor gab es sicher was ähnliches.
Ja. Da gabs so einige Iterationen. :-)

foofoobar schrieb:
Was ist ein "richtig installiertes Linux"?
Na sagt er doch hier:
Bohnenhans schrieb:
Leider ist natürlich piKVM kein wirklich richtig installiertes Linux, weil es halt für die KVM Fuinktionalitöt super optimiert ist und auch USB Host/Device Funktionalität hat.
 
andy_m4 schrieb:
Na sagt er doch hier:
Offensichtlich lädt das "nicht richtig installierte Linux" den für dieses USB-Device richtigen Treiber und stellt dafür ein Device zur Verfügung.
 
Nein das tut es nicht

Ich habe aktuell nur einen raspberry (4) im KVM Switch im Einsatz zum nachschauen - da sieht das dann so aus (ohne usb geräte) - der kam natürlich auch ohne Sachen wie lsusb.

Und danch steht extra

Getestet auf meinem DailyServer scheint es so zu sein ein ESP32 erzeugt das dev "/dev/ttyUSB*"

Also nein mein DailyServer ist nicht mein KVM Switch - darum gibt es da auch unterschieldiche Namen für die Systeme - zumal pikvm auch read only im root FS ist.
 
Zuletzt bearbeitet:
Bohnenhans schrieb:
Getestet auf meinem DailyServer scheint es so zu sein ein ESP32 erzeugt das dev "/dev/ttyUSB*"
/dev/ttyUSB* ist das korrekte Device für ein USB CDC Virtual COM Device.

Ob dahinter eine Tomate, ein Fernseher, ein Terminal, ein Drucker, ein anderer Computer oder ein Modem angeschlossen ist ist außerhalb des Scopes der USB-Spec.

Und ein ESP32 kann sich in alle diese Geräte verwandeln, sogar in mehrere dieser Geräte gleichzeitig.

Welcher Device Descriptor ( https://www.beyondlogic.org/usbnutshell/usb5.shtml#DeviceDescriptors ) wäre den deiner Auffassung der korrekte für dein ESP32-Device?
 
Zuletzt bearbeitet:
Ja aber nochmal mein piVKM zeigt das nicht an der hat keine USB Treiber - der zeigt lediglich per lsusb devices. Deshalb Test auf meinem DailyServer.

----------------------------------------------------------

Das könnte die USB Devices resetten - weiss allerdings nicht welche hci System ein volles Linux auf dem Raspberry hat - da muss man halt evtl den Pfad anpassen - meiner als piKVM hat nur xhci

Es gibt [e,u,o,x]hci_hcd auf meinem DailyServer

Einfach bevor und nachdem man das Gerät angesteckt hat die Verzeichnisse unter /sys/bus/pci/drivers/[e,u,o,x]xhci_hcd/ anschauen

Wenn man die Zeile mit bind weglässt sollten alle nur abgemeldet werden (aber vorher alles USB Geraffel wie Sticks etc unmounten!) Danach könnte die USB[*] Vergabe wieder mit den Werten wie nach einem reboot starten - muss man halt testen.



Ich habe das vor den udev Rules für das reattachen nach dem KVM Switchen so gemacht mit Treiber detach / reattach

Code:
#!/usr/bin/bash

#..... USB Stick UNMOUNT Geraffel hier

myUSBDriverPath="/sys/bus/pci/drivers/xhci_hcd/"

for myEntry in "${myUSBDriverPath}"*:*
do
    if  [ -e "${myEntry}" ]; then
       myUSBDev="$(basename "${myEntry}")"
       echo -n "Versuche Reset von "
       printf '%s' "${myUSBDev}" |  tee "${myUSBDriverPath}unbind"
       echo -n "...   Starte neu von "
       sleep 2
       printf '%s' "${myUSBDev}" | tee "${myUSBDriverPath}bind"
       echo -n "   "
       echo "OK"
    fi
done

echo ""
echo ""


-------------------------

Da ich sowas auch evtl mal brauche habe ich daw auch mal gegoogelt

das ist evtl noch einfacher, das startet das gesamte USB System neu, das sicher in Deinem Fall besser als mein Reset Skript :D

"modprobe -r usbhid && sleep 5 && sudo modprobe usbhid"
 
Zuletzt bearbeitet:
Es wird erkannt aber die /dev/ttyusb[] nummer passt nicht.

Dazu bleibt entweder das Flash Script anpassen auf dynamisch oder usb module dazu zu bringen die devs[x] neu zu vergeben
 
Zuletzt bearbeitet:
Hallo und erstmal ein großes Dankeschön an Alle hier.
Ich werde mir das Ganze am WE intensiver ansehen damit ich die vielen Infos dann auch mal verstehen und ausprobieren kann.

Ich gebe dann bescheid

Grüße aus Franken
 
Welche modul nutzt du denn im in HA zum flashen?
 
Zurück
Oben