USB Ports auslesen / ansprechen über port ID

  • Hallo,

    baue gerade an einer Funktionalität um automatisiert Daten von Go-Pro Kameras aus USB Sticks zu kopieren.

    Zum Hintergrund:
    Wir sind ein Fallschirm Sprungbetrieb und machen für unsere Tandemgäste Sprungvideos. Hierfür haben wir mehrere Go-Pro Kameras. Ziel ist es, die 4 USB Ports der Pi zum automatischen kopieren der Videos auf USB-Karten zu verwenden. Hierzu sollen jeweils 2 Kameras und 2 USB Karten an der PI angeschlossen werden. Im Anschluss soll ein Skript alle Daten der jeweiligen Go-Pro auf die zugehörige USB-Karten kopiert werden. Die Go-Pros sollen am Port 2 und 4 des USB-Hubs angeschlossen werden. Die USB-Karten werden am Port 3 und 5 (siehe Beispiel nachstehend) angeschlossen.
    Das Skript kopiert dann die Daten von Go-Pro Port 2 auf USB-Karte Port 3 sowie Go-Pro Port 4 auf USB-Karte Port 5.

    Hier ein Auszug mit angeschlossenen USB Karten (die Go-Pro's sind nicht angeschlossen)
    [font="Menlo"]pi@raspberrypi:~ $ lsusb -t[/font]
    [font="Menlo"]/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M[/font]
    [font="Menlo"] |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M[/font]
    [font="Menlo"] |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M[/font]
    [font="Menlo"] |__ Port 3: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M[/font]
    [font="Menlo"] |__ Port 5: Dev 6, If 0, Class=Mass Storage, Driver=usb-storage, 480M[/font]


    Zu meiner Frage:
    Wie kann ich die Port-Nummern des USB Hubs verwenden um Quelle und das Ziel für das Kopierskript zu verwenden?
    Wir wollen die Kameras und die Sticks immer am gleichen physischen USB-Anschluss anschließen.

    Ich komme da nicht weiter.

    Vielen Dank schon mal

  • Hallo skydive,

    herzlich Willkommen in unserem Forum!

    Wenn Du den Weg über lsusb weiter gehen möchtest, dann brauchst Du noch die Ausgaben von

    Code
    df

    und

    Code
    mount


    um sagen zu können, mit welchem Gerätenamen welcher Datenträger wo angemeldet ist.

    Für eine Auftragsentwicklung habe ich das mal so gemacht. War eine interessante Tätigkeit und funktioniert sogar. Dann reicht es vollkommen von einem Gerät zum anderen zu kopieren.


    Heute würde ich mich wahrscheinlich mit UDEV und den UDEV-Regeln beschäftigen, um das gleiche zu erreichen.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Jürgen Böhm
    10. August 2017 um 00:06

    bin noch am tüfteln, ist aber in etwa das gleiche Thema.

    MfG

    Jürgen

  • Hallo zusammen,
    danke für Eure Antworten. Ich habe das Jetzt über ein Shell-Skript gelöst. Dieses Skript produziert ein Mapping der USB-Karten auf die physischen Ports des USB Hubs. Nachdem mein "Kopierstation" über eine PHP Webseite bedient wird (die PI ist als Hotspot eingerichtet), starte ich das Skript aus PHP und lese die Antwort entsprechend in ein Array ein.

    Das Ergebnis:
    [font="Menlo"]######################## USB Disk vorbereiten ########################[/font]


    [font="Menlo"]*** Gefundene USB Geräte ***[/font]
    [font="Menlo"]/dev/sdb1 on /media/pi/8765-4321 type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)[/font]
    [font="Menlo"]/dev/sda1 on /media/pi/TF type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)[/font]
    [font="Menlo"]Es wurden 2 Geraete gefunden[/font]


    [font="Menlo"]/dev/sdb1 | /media/pi/8765-4321 | 2[/font]
    [font="Menlo"]/dev/sda1 | /media/pi/TF | 3[/font]
    [font="Menlo"]pi@raspberrypi:~ $ [/font]

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!