hidraw fest zuordnen

  • Hallo

    Ich habe zwei USB Geräte die eine Hidraw schnitstelle benutzen.

    Ich möchte diesen Geräten gerne eine feste zuornung geben.

    Die ausgabe von : sudo udevadm info -q path -n /dev/hidraw0 ist:

    /devices/platform/scb/http://fd500000.pcie/pci0000:00/000…/hidraw/hidraw0

    und von : sudo udevadm info -q path -n /dev/hidraw1

    /devices/platform/scb/http://fd500000.pcie/pci0000:00/000…/hidraw/hidraw1


    dmesg | grep hid

    [ 1.397630] hid: raw HID events driver (C) Jiri Kosina

    [ 1.397782] usbcore: registered new interface driver usbhid

    [ 1.397795] usbhid: USB HID core driver

    [ 2.215276] hid-generic 0003:0665:5161.0001: hiddev96,hidraw0: USB HID v1.11 Device [HID 0665:5161] on usb-0000:01:00.0-1.1/input0

    [ 2.863706] hid-generic 0003:0665:5161.0002: hiddev97,hidraw1: USB HID v1.11 Device [HID 0665:5161] on usb-0000:01:00.0-1.4/input0


    Wie kann ich eine regel erstellen damit diese USB Geräte immer HID1 und HID2 bleiben ?

    MFG

    Sralus :danke_ATDE:

  • Hersteller und Modellnummer merken:

    Zitat

    [root@nexus rules.d]# lsusb

    ......

    Bus 001 Device 014: ID 1d57:0005 Xenta Wireless Receiver (Keyboard and Mouse)

    .....

    Dann eine udev-regel erstellen:

    Code: /etc/udev/rules.d/99-hidraw.rules
    ACTION=="add", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1d57", ATTRS{idProduct}=="0005", GROUP="input", SYMLINK+="my_mouse_raw"

    Nachdem die Maus angeschlossen wird, wird zuerst die Gruppe input zugewiesen und dann der Symlink my_mouse_raw erstellt. Wenn man zwei mal das gleiche Eingabegerät hat, muss man schauen, ob es noch eine Seriennummer hat, mit der man die Geräte unterscheiden kann. Das habe ich damals z.B. beim tty2USB von FTDI gemacht. Ich habe zwei identische Modelle anhand der Seriennummer bestimmten Ports zugewiesen.

    Hier eine Referenz: https://wiki.archlinux.de/title/Udev


    Ergänzung:

    Da es mich interessiert hat, wie der Inhalt von hidraw zu interpretieren ist, habe ich das mal anhand eines Beispiels umgesetzt und modernisiert.


    PS: Guten Rutsch.

    Einmal editiert, zuletzt von RestlessMud46765 (31. Dezember 2022 um 18:34)

  • @DeaD_EyE

    Danke für die Antwort.

    Habe genau das Problem mit den zwei gleichen Geräten.

    Die ausgabe von lsusb:

    Code
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 006: ID 0665:5161 Cypress Semiconductor USB to Serial
    Bus 001 Device 005: ID 174c:55aa ASMedia Technology Inc. ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge, ASM1153E SATA 6Gb/s bridge
    Bus 001 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
    Bus 001 Device 003: ID 0665:5161 Cypress Semiconductor USB to Serial
    Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    die von usb-devices

    die von lsusb -v:

    und dann habe ich noch probiert:

    Code
    /bin/udevadm info -n /dev/ttyUSB* -a | grep serial
     SUBSYSTEMS=="usb-serial"
        ATTRS{serial}=="A10LSX4A"
        ATTRS{serial}=="0000:01:00.0"
    
     /bin/udevadm info -n /dev/hidraw0 -a | grep serial
       ATTRS{serial}=="0000:01:00.0"
     /bin/udevadm info -n /dev/hidraw1 -a | grep serial
       ATTRS{serial}=="0000:01:00.0"

    Wie bekommt man denn nun die Serial ausgelesen damit ich die Hidraw1&2 geräte zuordnen kann?

    Beste Grüße und Frohes neues 2023

  • Deine beiden identen Geräte haben noch keine Seriennummer verpasst erhalten. Wie willst Du sie an dem identen Eintrag die Geräte unterscheiden ?

    Es ist auch ziemlich blauäugig, die Ausgabe von "udevadm info" mit dem Grep Filter zu kastrieren.

    Schau einmal mit < sudo devadm info -n /dev/ttyUSB0 > und /dev/ttyUSB1 nach, ob Unterschiede der beiden Geräte bestehen.

    ID-Felder, die mit 123456789ABCDEF ö.Ä. ausgefüllt sind, können vom Hostadmin geändert werde. Genauso die Seriennummer, die hier noch auf dem Ausgangszustand der vekauften Geräte "0000:01:00.0" steht.

    Wie das genau geht, kann ich Dir nicht sagen, es kam aber hier im Forum bereits einmal vor.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Vielleicht geht es so:

    Was sehr eigenartig ist, sind die unterschiedlichen Seriennummern.

    Die zweite Seriennummer sieht wie eine Adressierung auf dem Bus aus.

    Mach mal ein udevadm info -n /dev/hidrawX -a und dann poste mal von beiden Dongles die Ausgabe.

    Wie bei dem Beispiel muss man dann das entsprechend übergeordnete Gerät mit der Seriennummer adressiert werden, um dann zur passenden Sprungmarke zu springen, um dann den Symlink für das Subsystem hidraw anzulegen.

  • Hi !!

    Die ausgabe von udevadm info -n /dev/hidraw0 -a ist:

    und die von udevadm info -n /dev/hidraw1 -a ist :

    aus einem anderen Forum wurde mir vorgeschlagen

    sudo nano /etc/udev/rules.d/99-usb-serial.rules 

    Code
    SUBSYSTEM=="tty", ATTRS{devpath}=="1.1", SYMLINK+="hidraw0", OWNER="pi"
    SUBSYSTEM=="tty", ATTRS{devpath}=="1.2", SYMLINK+="hidraw1", OWNER="pi"
    SUBSYSTEM=="tty", ATTRS{devpath}=="1.3", SYMLINK+="hidraw2", OWNER="pi"
    SUBSYSTEM=="tty", ATTRS{devpath}=="1.4", SYMLINK+="hidraw3", OWNER="pi"

    aber evtl. helfen ja die oberen beiden ausgaben ---

    Gruß Sralus

  • Ausser den Zeilen

    < ATTRS{urbnum}=="371732"

    > ATTRS{urbnum}=="58290"

    zeigt mir "diff" keine verwertbaren Unterschiede der beiden Geräte. Ich weiß aber auch nicht, ob die urbnum aus der Gerätehardware stammt, oder erst anderweitig zugeordnet wird.

    Servus !

    RTFM = Read The Factory Manual, oder so

  • Ich hatte es gestern kurz mit einem RP2040 getestet und bin leider zu keinem Ergebnis gekommen.

    Wenn einem die Seriennummer fehlt, könnte man auch über den Pfad gehen, solange die Dongles an den USB-Ports nicht vertauscht werden.

    Googlesuche nach urbnum: Treffer 1. Nicht aus der Gerätehardware. URB für USB Request Block.

    Auch hier hat man das Problem mit den unterschiedlichen Subsystemen.

    Das Attribut kommt vom subsytem usb und final wird das Setzen eines Symlinks von hidraw benötigt.

    D.h. man muss zuerst die Attribute des subsystems usb adressieren, dann zu einem Label springen, dass dann das subsytem hidraw adressiert.

    Einen Generator habe ich bis jetzt leider nicht gefunden. Das wäre ja auch zu einfach. Programm starten, Stick reinstecken, Regel fertig.

  • Beitrag von sralus (3. Januar 2023 um 14:51)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Hallo

    Wäre das in meinem Fall so richtig ?

    SUBSYSTEM=="tty", ATTRS{devpath}=="1.1", ATTRS{idVendor}=="0665", ATTRS{idProduct}=="5161", SYMLINK+="hidraw0"

    SUBSYSTEM=="tty", ATTRS{devpath}=="1.4", ATTRS{idVendor}=="0665", ATTRS{idProduct}=="5161", SYMLINK+="hidraw1"

    MFG

    Sralus

Jetzt mitmachen!

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