hidraw fest zuordnen

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • 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/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.1/1-1.1:1.0/0003:0665:5161.0001/hidraw/hidraw0

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

    /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4/1-1.4:1.0/0003:0665:5161.0002/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:

    Quote

    [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.

    Edited once, last by DeaD_EyE ().

  • @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.

  • Post by sralus ().

    The post was deleted, no further information is available.
  • 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