UDEV Regeln in Unraid


Recommended Posts

Hier gab es dazu bereits eine Anfrage:

https://forums.unraid.net/topic/52300-usb-hotplugging-with-udev-rules/

 

Und hier die deutsche Übersetzung der wohl für Dich entscheidenden Antwort:

Das liegt daran, dass dieser Speicherort im RAM liegt (wie fast alles, was nicht unter /mnt liegt).  Wenn Du möchtest, dass die Regeln einen Neustart überleben, müssen Kopien der Dateien auf dem USB-Stick erstellt werden und in der "go"-Datei Anweisungen hinzugefügt werden, um sie beim nächsten Systemstart an den gewünschten Ort zu kopieren.

Edited by saber1
Link to comment

Vielen Dank.

 

Da ich nicht extra eine Datei im Stick machen wollte, habe ich es anders aber im Prinzip gleich gelöst.

 

/boot/config/go

 

# create and reload udev-rules 
cat << UDEVRULES >> /etc/udev/rules.d/91-usb.rules
SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="Reader 1CF6976", SYMLINK+="Reader1", MODE="0666"
SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="Reader 5gf6976", SYMLINK+="Reader2", MODE="0666"
SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="Reader 7hs6247", SYMLINK+="Reader3", MODE="0666"
UDEVRULES

udevadm control --reload
udevadm trigger --action=add

 

Lg

  • Like 1
Link to comment
25 minutes ago, guybrush2012 said:

Da ich nicht extra eine Datei im Stick machen wollte, habe ich es anders aber im Prinzip gleich gelöst.

Ich wollte das gleiche oder zumindest mit "echo" vorschlagen aber @SimonF kam mir mit dem Post zuvor... :D

 

Das mit der Datei wäre aber auch nicht schlecht da die "go" Datei ein wenig übersichtlicher bleiben würde, speziell wenn du mehr einfügen würdest... :)

  • Like 1
Link to comment
On 5/22/2021 at 11:45 AM, guybrush2012 said:

# create and reload udev-rules 
cat << UDEVRULES >> /etc/udev/rules.d/91-usb.rules
SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="Reader 1CF6976", SYMLINK+="Reader1", MODE="0666"
SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="Reader 5gf6976", SYMLINK+="Reader2", MODE="0666"
SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="Reader 7hs6247", SYMLINK+="Reader3", MODE="0666"
UDEVRULES

udevadm control --reload
udevadm trigger --action=add

 

Lg

Hallo
erst mal danke für die Infos :) die haben mir erst mal sehr geholfen. 1.JPG.db49778b859c9417ccaee9985fcfb99e.JPG
Leider habe ich dennoch ein Problem, das die Daten zwar im /dev ankommen, aber ich diese im Doker nicht sehen kann :(

Liegt das an der Verknüpfung? oderwie kann ich das ändern das im Doker (ioBroker) das USBHAUS angezeigt wird?

2.JPG.ec751ce3ad935c5ebfc2eefd638d5089.JPG

 

würd mich über einen Tipp sehr freuen.

Link to comment
1 hour ago, luckyheiko said:

Hallo
erst mal danke für die Infos :) die haben mir erst mal sehr geholfen. 1.JPG.db49778b859c9417ccaee9985fcfb99e.JPG
Leider habe ich dennoch ein Problem, das die Daten zwar im /dev ankommen, aber ich diese im Doker nicht sehen kann :(

Liegt das an der Verknüpfung? oderwie kann ich das ändern das im Doker (ioBroker) das USBHAUS angezeigt wird?

2.JPG.ec751ce3ad935c5ebfc2eefd638d5089.JPG

 

würd mich über einen Tipp sehr freuen.

Hast du die devices in docker durchgereicht?

Wenn ja versuch mal "MODE="0777"

 

Lg

Link to comment
1 hour ago, luckyheiko said:

Leider habe ich dennoch ein Problem, das die Daten zwar im /dev ankommen, aber ich diese im Doker nicht sehen kann :(

Liegt das an der Verknüpfung? oderwie kann ich das ändern das im Doker (ioBroker) das USBHAUS angezeigt wird?

Ich würde zunächst versuchen herauszufinden, wie der unRaid Kernel das Device standardmässig nennt....das muss eben nicht "ttyUSB" sein.

Evtl. nummeriert er sie ja auch, trotz Deiner UDEV Regeln anders?

 

-> Gerät am USB abziehen

-> Syslog öffnen ("log", oben rechts im UnRaid-Menü)

-> Gerät wieder anstecken

-> was steht im Syslog (ttyS0, ttyA???, ....) was passiert...gibt es ein ttyXXXX??

 

...dann dieses Device (/dev/ttyXXX) im Docker verwenden, entweder als Eintrag wenn vorgesehen/erstellt oder einfacher, in der Docker Konfig unter "Extra-Parameters" dann "--device=/dev/ttyXXXX"

Link to comment
46 minutes ago, guybrush2012 said:

Hast du die devices in docker durchgereicht?

Wenn ja versuch mal "MODE="0777"

 

Lg

wie man auf dem einen Bild sieht, sehe ich im iOBroker die USB Anschlüße

Privilegierte Rechte sind aktiviert (vorher habe ich gar nichts gesehen)

 

777 werde ich gleich mal testen.

 

13 minutes ago, Ford Prefect said:

Ich würde zunächst versuchen herauszufinden, wie der unRaid Kernel das Device standardmässig nennt....das muss eben nicht "ttyUSB" sein.

Evtl. nummeriert er sie ja auch, trotz Deiner UDEV Regeln anders?

 

-> Gerät am USB abziehen

-> Syslog öffnen ("log", oben rechts im UnRaid-Menü)

-> Gerät wieder anstecken

-> was steht im Syslog (ttyS0, ttyA???, ....) was passiert...gibt es ein ttyXXXX??

 

...dann dieses Device (/dev/ttyXXX) im Docker verwenden, entweder als Eintrag wenn vorgesehen/erstellt oder einfacher, in der Docker Konfig unter "Extra-Parameters" dann "--device=/dev/ttyXXXX"

das verstehe ich nicht ganz.

ich habe im dev (unraid) die ttyUSB0 (1) stehen, wenn ich den privilegierten modus anmache sehe ich die beiden USB auch im dev (Docker)

 

die beiden USB Ports funktioneren auch (die Smartmeter) können ausgelesen werden.

habe nur das Problem, das bei einem Neustart nicht immer USB0 = USB0 ist und ich dann wieder die Einstellungen bei den Smartmetern anpassen muss.
Und dieses wollte ich verhindern indem ich 'feste' Namen vergebe.

Link to comment

selbst mit 777 ist der USB nicht im Docker zu sehen.

root@d:/opt/iobroker# cd /dev/
root@d:/dev# dir
aer_inject       hidraw0  loop4         port    sdc1    tty0   tty2   tty30  tty41  tty52  tty63    vcs3   vcsu1
bsg              hidraw1  loop5         ppp     sdd     tty1   tty20  tty31  tty42  tty53  tty7     vcs4   vcsu2
btrfs-control    hpet     loop6         ptmx    sdd1    tty10  tty21  tty32  tty43  tty54  tty8     vcs5   vcsu3
bus              hwrng    loop7         ptp0    sg0     tty11  tty22  tty33  tty44  tty55  tty9     vcs6   vcsu4
core             input    loop-control  pts     sg1     tty12  tty23  tty34  tty45  tty56  ttyS0    vcsa   vcsu5
cpu              kmem     mapper        random  sg2     tty13  tty24  tty35  tty46  tty57  ttyUSB0  vcsa1  vcsu6
cpu_dma_latency  kmsg     mcelog        rtc0    sg3     tty14  tty25  tty36  tty47  tty58  ttyUSB1  vcsa2  vfio
dri              kvm      md1           sda     shm     tty15  tty26  tty37  tty48  tty59  urandom  vcsa3  vga_arbiter
fb0              loop0    mem           sda1    stderr  tty16  tty27  tty38  tty49  tty6   usb      vcsa4  vhci
fd               loop1    mqueue        sdb     stdin   tty17  tty28  tty39  tty5   tty60  vcs      vcsa5  vhost-net
full             loop2    net           sdb1    stdout  tty18  tty29  tty4   tty50  tty61  vcs1     vcsa6  vsock
fuse             loop3    null          sdc     tty     tty19  tty3   tty40  tty51  tty62  vcs2     vcsu   zero

 

im Unraid dev sind beide Einträge vorhanden.

Log beim abziehen sieht so aus
May 25 18:36:34 d kernel: cp210x 1-11:1.0: cp210x converter detected
May 25 18:36:34 d kernel: usb 1-11: cp210x converter now attached to ttyUSB0

 

Link to comment
20 minutes ago, luckyheiko said:

das verstehe ich nicht ganz.

ich habe im dev (unraid) die ttyUSB0 (1) stehen, wenn ich den privilegierten modus anmache sehe ich die beiden USB auch im dev (Docker)

...mit dem durchreichen per "--device=....." ist der priviligierte Modus nicht nötig....mir war nicht klar, wie der Docker an die Geräte rankommt.

 

20 minutes ago, luckyheiko said:

die beiden USB Ports funktioneren auch (die Smartmeter) können ausgelesen werden.

habe nur das Problem, das bei einem Neustart nicht immer USB0 = USB0 ist und ich dann wieder die Einstellungen bei den Smartmetern anpassen muss.
Und dieses wollte ich verhindern indem ich 'feste' Namen vergebe.

....das ist ja auch i.O....die UDEV Regel sollte das lösen...klappt das denn nicht?

Wenn die Namen bekannt/fix sind, kannst Du es ja mal mit der "traditionellen" Methode versuchen. Dann sollten die auch im Docker immer gleich heissen.

  • Like 1
Link to comment

<- wie man sieht 'sehr' neu in der Materie.

Dachte eigentlich das ich bei Unraid nicht so viel 'C&P' machen muss (bin geborener Mausschupser)

 

ich habe nun mal

Extra Parameter: --no-healthcheck --device=/dev/ttyUSB0 --device=/dev/ttyUSB1 und das scheint zu klappen ohne die priviliegierten Rechte.

 

wenn ich aber das Versuche

--no-healthcheck --device=/dev/ttyUSBPV --device=/dev/ttyUSBHAUS

root@d:/dev# dir
core  fd  full  mqueue  null  ptmx  pts  random  shm  stderr  stdin  stdout  tty  ttyUSBHAUS  ttyUSBPV  urandom  zero
dann habe ich nun auch Zugriff :)

 

Vielen Dank für die Hilfe. Es klappt nun.

 

  • Like 1
Link to comment
50 minutes ago, luckyheiko said:

<- wie man sieht 'sehr' neu in der Materie.

Dachte eigentlich das ich bei Unraid nicht so viel 'C&P' machen muss (bin geborener Mausschupser)

Ja, über die manuelle Direktkonfig war es einfacher mit Dir zu testen.

Jetzt, wo Du weisst, wie es geht...probier mal das im Konfig-Editor für Deinen Docker...sollte eigentlich auch gehen:

 

image.thumb.png.ae7751f33138c8865b43c69521e8178a.png

 

  • Like 1
Link to comment
  • 2 years later...

muss das alte gekrutsche noch mal hochholen.

 

mir ist ein TTL Kopf vom Smartmeter kaputt gegangen.

nun der 'neue' will nicht mehr (oder vielmehr ich bekomms nicht hin)

 

der alte gibt bei udevadm info --query=all --name=/dev/ttyUSB1

mitunter, das aus:

E: ID_SERIAL=Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_0061D6A6
E: ID_SERIAL_SHORT=0061D6A6

 

hier dazu der eintrag in der GO (der eintrag ist aus der GO entfernt)

SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="0061C5CE", SYMLINK+="ttyUSBHAUS1", MODE="0666"

 

der neue udevadm info --query=all --name=/dev/ttyUSB0
hat keinen Serial_Short

E: ID_REVISION=0264
E: ID_SERIAL=1a86_USB_Serial
E: ID_TYPE=generic

 

nun wollte ich den neuen so Ansprechen

SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="1a86_USB_Serial", SYMLINK+="USBHAUS", MODE="0666"

klappt aber irgendwie nicht.

 

kann mir bitte jemand sagen wie ich das hinbekommen kann?

root@der-ripper:~# udevadm info --query=all --name=/dev/ttyUSB0
P: /devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-8/1-8:1.0/ttyUSB0/tty/ttyUSB0
N: ttyUSB0
S: serial/by-id/usb-1a86_USB_Serial-if00-port0
S: serial/by-path/pci-0000:02:00.0-usb-0:8:1.0-port0
E: DEVLINKS=/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 /dev/serial/by-path/pci-0000:02:00.0-usb-0:8:1.0-port0
E: DEVNAME=/dev/ttyUSB0
E: DEVPATH=/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-8/1-8:1.0/ttyUSB0/tty/ttyUSB0
E: ID_BUS=usb
E: ID_MODEL=USB_Serial
E: ID_MODEL_ENC=USB\x20Serial
E: ID_MODEL_FROM_DATABASE=CH340 serial converter
E: ID_MODEL_ID=7523
E: ID_PATH=pci-0000:02:00.0-usb-0:8:1.0
E: ID_PATH_TAG=pci-0000_02_00_0-usb-0_8_1_0
E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI
E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller
E: ID_REVISION=0264
E: ID_SERIAL=1a86_USB_Serial
E: ID_TYPE=generic
E: ID_USB_CLASS_FROM_DATABASE=Vendor Specific Class
E: ID_USB_DRIVER=ch341
E: ID_USB_INTERFACES=:ff0102:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=1a86
E: ID_VENDOR_ENC=1a86
E: ID_VENDOR_FROM_DATABASE=QinHeng Electronics
E: ID_VENDOR_ID=1a86
E: MAJOR=188
E: MINOR=0
E: SUBSYSTEM=tty
E: USEC_INITIALIZED=22208704

kann es sein das das ding gar keine Seriennummer hat? (oder nur die 0?)

root@der-ripper:~# sudo lsusb -vs  001:002

Bus 001 Device 002: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x1a86 QinHeng Electronics
  idProduct          0x7523 CH340 serial converter
  bcdDevice            2.64
  iManufacturer           0 
  iProduct                2 USB Serial
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0027
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower               98mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      2 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               1
Device Status:     0x0000
  (Bus Powered)

 

Vielen Dank schon mal

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.