Prüfen, ob ein USB-Device angeschlossen ist (und an welchem Port)

  • Servus zusammen,

    an meinem PI schliesse ich USB-geräte an - wie beispielsweise eine GPS-Mouse oder einen LoRa-Transceiver.

    Manuell kann ich sie finden und zuordnen. Der GPS-Reciver hängt an /dev/ttyACM0 und der LoRa-Transceiver an /dev/ttyACM1.

    Hintergrund:
    Wie aber kann ich ermitteln, ob diese Gerät auch funktionieren? Ich würde für eine Web-Oberfläche gerne dem Benutzer abnehmen eingeben zu müssen, an welchem Port das jeweilige Gerät hängt. Denn ich hatte bei meinen Tests schon den Fall, dass der LoRa-TRX gestern an ttyACM0 und heute an ttyACM1 zu finden war. Das will ich meinen Benutzern nicht zumuten.

    Ich habe die Anschlussnamen in einer Datenbank hinterlegt, damit sie meine Anwendung jederzeit schnell abrufen kann.

    Wie ermittle ich aber, ob das jeweilige Gerät sich auch am bewussten Anschluss befindet - vor allem wenn bei der Installation des Systems noch nicht bekannt ist, welche Geräte angeschlossen werden? Es gibt in diesem Bereich (GPS und LoRa) eine Menge unterschiedlicher Hardware.

    Sprich: Mein Benutzer installiert das System - und dieses sagt ihm dann: "Achtung, ich habe an diesem Port dieses Gerät und an jenem Port ein anderes Gerät gefunden. Ist das richtig so?"

    Das Ganze muss Hardware-unabhängig funktionieren - also auf jedem PI und auch mit zusätzliche USB-Hubs.

    Kann ich das irgendwie automatisieren?

  • Prüfen, ob ein USB-Device angeschlossen ist (und an welchem Port)? Schau mal ob du hier fündig wirst!

  • Mit

    Code
    udevadm info -n /dev/ttyACM0

    solltest Du eine Menge Info erhalten.

    ich erhalte z.B. mit

    Die Info dass dort ein ZTE Surfstick angeschlossen ist. Vermutlich liefert dann noch lsusb -d<vendorid> weitere Info.

    :no_sad: ... Kein raspiBackup - kein Mitleid ... :no_sad:

    Mein Raspberry Garten

    3 * RPi2B, 2 * RPi3B, 2 * RPi4B, 1 * CM4, 1 * RPi5

  • Schau Dir auch mal die udev rules an. Damit kann man bestimmte USB-Geräte an bestimmte device-namen binden. ANsonsten kannst Du vielleicht auch Dein Gerät anhand der Seriennummer binden, und zwar hier: /dev/serial/by-id/ (falls es ein Serielles Device ist, wie ttyUSB* oder ttyACM*).

  • Schau Dir auch mal die udev rules an. Damit kann man bestimmte USB-Geräte an bestimmte device-namen binden. ANsonsten kannst Du vielleicht auch Dein Gerät anhand der Seriennummer binden, und zwar hier: /dev/serial/by-id/ (falls es ein Serielles Device ist, wie ttyUSB* oder ttyACM*).

    Das ist ja gerade das Problem. Ich kann nicht sagen, welche Geräte meine Benutzer an den PI anschliessen - weder Hersteller noch Type etc. Das muss offen bleiben. Ich denke, mit den Infos aus dem udevadmin werde ich zurecht kommen (müssen). Denn diese sind ja nur vorhanden, wenn das gerät auch angeschlossen ist. Danke dennoch.

  • Mit

    Code
    udevadm info -n /dev/ttyACM0

    solltest Du eine Menge Info erhalten.

    Merci vielmohls - damit sind zwei Probleme gelöst: OB die Hardware da und am Leben ist und um welche Hardware es sich handelt. Ich denke, ich werde nicht drum herum kommen, dass mein Nutzer die Geräte manuell identifiziert (aus den udevadm Infos) und dann in der Datenbank abspeichert.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!