Puncte:0

udev nu creează linkuri simbolice

drapel nr

Încerc să dau dispozitivului meu senzor un nume static. Am deschis un fișier numit 99-usb-serial.reguli în /etc/udev/rules.d și a scris următoarea regulă:

KERNEL=="ttyACM0",KERNELS=="1-1",SUBSYSTEM=="tty",SUBSYSTEMS=="usb",ATTRS{idVendor}=="108c", ATTRS{idProduct}=="017b", SYMLINK+="/dev/mydevice"

Acest lucru nu creează nicio legătură simbolică în /dev. Pentru a verifica dacă comanda mea este corectă sau nu,

Comanda:

udevadm -info --name/dev/ttyACM0 --atribute-walk

ieșire:

Udevadm info începe cu dispozitivul specificat de devpath și apoi
urcă pe lanțul de dispozitive părinte. Imprimă pentru fiecare dispozitiv
găsite, toate atributele posibile în formatul cheii regulilor udev.
O regulă care să se potrivească, poate fi compusă de atributele dispozitivului
și atributele de la un singur dispozitiv părinte.

  Privind dispozitivul „/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/tty/ttyACM0”:
    KERNEL=="ttyACM0"
    SUBSYSTEM=="tty"
    DRIVER==""

  Privind dispozitivul părinte „/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0”:
    SĂBURI=="1-1:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="cdc_acm"
    ATTRS{authorized}="1"
    ATTRS{bInterfaceSubClass}=="02"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bmCapabilities}=="2"
    ATTRS{bInterfaceClass}=="02"
    ATTRS{bNumEndpoints}=="01"
    ATTRS{bInterfaceProtocol}=="00"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{bAlternateSetting}==" 0"

  Privind dispozitivul părinte „/devices/pci0000:00/0000:00:14.0/usb1/1-1”:
    Sâmburi=="1-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{versiune}==" 2.00"
    ATTRS{devpath}=="1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{product}=="Aplicație XDK"
    ATTRS{devnum}=="21"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{manufacturer}=="Bosch Connected Devices and Solutions GmbH"
    ATTRS{busnum}="1"
    ATTRS{rx_lanes}="1"
    ATTRS{tx_lanes}="1"
    ATTRS{ltm_capable}=="nu"
    ATTRS{serial}=="2496B4065B328D1E"
    ATTRS{bDeviceClass}=="02"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bMaxPower}=="500mA"
    ATTRS{bmAttributes}=="c0"
    ATTRS{urbnum}=="13"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bNumInterfaces}==" 2"
    ATTRS{bcdDevice}=="0000"
    ATTRS{idProduct}=="017b"
    ATTRS{authorized}="1"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{configurare}=""
    ATTRS{removable}=="detașabil"
    ATTRS{idVendor}=="108c"
    ATTRS{maxchild}=="0"
    ATTRS{viteza}=="12"
    ATTRS{quirks}="0x0"

  Privind dispozitivul părinte „/devices/pci0000:00/0000:00:14.0/usb1”:
    SĂBURI=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{serial}=="0000:00:14.0"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{urbnum}=="577"
    ATTRS{versiune}==" 2.00"
    ATTRS{quirks}="0x0"
    ATTRS{bcdDevice}=="0513"
    ATTRS{authorized_default}=="1"
    ATTRS{product}=="xHCI Host Controller"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{devnum}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{removable}=="necunoscut"
    ATTRS{interface_authorized_default}=="1"
    ATTRS{tx_lanes}="1"
    ATTRS{configurare}=""
    ATTRS{busnum}="1"
    ATTRS{speed}=="480"
    ATTRS{rx_lanes}="1"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="12"
    ATTRS{devpath}=="0"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0002"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="0mA"
    ATTRS{ltm_capable}=="nu"
    ATTRS{authorized}="1"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{manufacturer}=="Linux 5.13.0-28-generic xhci-hcd"
    ATTRS{bDeviceClass}=="09"

  privind dispozitivul părinte „/devices/pci0000:00/0000:00:14.0”:
    KERNELS="0000:00:14.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="xhci_hcd"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{driver_override}=="(null)"
    ATTRS{broken_parity_status}=="0"
    ATTRS{dbc}=="dezactivat"
    ATTRS{dma_mask_bits}=="64"
    ATTRS{d3cold_allowed}=="1"
    ATTRS{class}="0x0c0330"
    ATTRS{activare}=="1"
    ATTRS{vendor}="0x8086"
    ATTRS{revision}=="0x21"
    ATTRS{msi_bus}=="1"
    ATTRS{irq}=="125"
    ATTRS{subsystem_vendor}=="0x1043"
    ATTRS{power_state}=="D0"
    ATTRS{device}="0x9d2f"
    ATTRS{ari_enabled}=="0"
    ATTRS{numa_node}=="-1"
    ATTRS{subsystem_device}=="0x201f"
    ATTRS{consistent_dma_mask_bits}=="64"
    ATTRS{local_cpus}=="f"

  privind dispozitivul părinte „/devices/pci0000:00”:
    KERNELS=="pci0000:00"
    SUBSISTEME==""
    ȘOFERI==""
    ATTRS{waiting_for_supplier}=="0"

Pentru a depana problema, am folosit testul udevadam Comanda:

sudo control --reload-rules --log-priority=debug && udevadm trigger
sudo udevadm test $(udevadm info -q cale -n /dev/ttyACM0)

ieșire:

Acest program este doar pentru depanare, nu rulează niciun program
specificat de o tastă RUN. Poate arăta rezultate incorecte, deoarece
unele valori pot fi diferite sau nu sunt disponibile la o rulare de simulare.

Încărcați indexul modulului
Fișierul de configurare analizat /usr/lib/systemd/network/99-default.link
Fișier de configurare analizat /usr/lib/systemd/network/73-usb-net-by-mac.link
S-a creat contextul de configurare a legăturii.
Citirea fișierului regulilor: /usr/lib/udev/rules.d/39-usbmuxd.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/40-usb-media-players.rules
Citirea fișierului cu reguli: /usr/lib/udev/rules.d/40-usb_modeswitch.rules
Citirea fișierului cu reguli: /usr/lib/udev/rules.d/40-vm-hotadd.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/50-apport.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/50-firmware.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/50-udev-default.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/55-dm.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/55-ippusbxd.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/56-hpmud.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-autosuspend-chromiumos.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-block.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-cdrom_id.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-crda.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-drm.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-evdev.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-fido-id.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-input-id.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-inputattach.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-libfprint-2.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-libgphoto2-6.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-libsane.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-pcmcia.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-persistent-alsa.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-persistent-input.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-persistent-storage-dm.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-persistent-storage-tape.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-persistent-storage.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-persistent-v4l.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-sensor.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-serial.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-tpm-udev.rules
Citirea fișierului cu reguli: /usr/lib/udev/rules.d/61-autosuspend-manual.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/61-gdm.rules
Citirea fișierului cu reguli: /usr/lib/udev/rules.d/61-gnome-settings-daemon-rfkill.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/61-persistent-storage-android.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/64-btrfs.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/64-xorg-xkb.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/65-libwacom.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/66-snapd-autoimport.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/69-cd-sensors.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/69-libmtp.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/69-wacom.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-joystick.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-mouse.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-power-switch.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-printers.rules
Citirea fișierului regulilor: /etc/udev/rules.d/70-snap.snap-store.rules
Citirea fișierului regulilor: /etc/udev/rules.d/70-snap.snapd.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-spice-vdagentd.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-touchpad.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-u2f.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-uaccess.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/71-nvidia.rules
Citiți fișierul regulilor: /usr/lib/udev/rules.d/71-power-switch-proliant.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/71-seat.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/71-u-d-c-gpu-detection.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/73-seat-late.rules
Citirea fișierului cu reguli: /usr/lib/udev/rules.d/73-special-net-names.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/75-net-description.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/75-probe_mtd.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-cinterion-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-dell-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-dlink-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-ericsson-mbm.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-fibocom-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-haier-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-huawei-net-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-longcheer-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-mtk-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-nokia-port-types.rules
Citiți fișierul regulilor: /usr/lib/udev/rules.d/77-mm-pcmcia-device-blacklist.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-qdl-device-blacklist.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-quectel-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-sierra.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-simtech-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-telit-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-tplink-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-ublox-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-usb-device-blacklist.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-usb-serial-adapters-greylist.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-x22x-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-zte-port-types.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/78-graphics-card.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/78-sound-card.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/80-debian-compat.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/80-drivers.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/80-iio-sensor-proxy.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/80-libinput-device-groups.rules
Citiți fișierul regulilor: /usr/lib/udev/rules.d/80-mm-candidate.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/80-net-setup-link.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/80-udisks2.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/81-net-dhcp.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/84-nm-drivers.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/85-brltty.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/85-hdparm.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/85-hplj10xx.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/85-nm-unmanaged.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/85-regulatory.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-alsa-restore.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-bolt.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-console-setup.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-fwupd-devices.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-libgpod.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-libinput-fuzz-override.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-nm-thunderbolt.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-pulseaudio.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/95-cd-devices.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/95-dm-notify.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/95-upower-csr.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/95-upower-hid.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/95-upower-hidpp.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/95-upower-wup.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/96-e2scrub.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/97-hid2hci.rules
Citirea fișierului regulilor: /usr/lib/udev/rules.d/99-systemd.rules
Fișierul de configurare /etc/udev/rules.d/99-usb-serial.rules este marcat pentru scriere în lume. Vă rugăm să eliminați biții de permisiune de scriere mondială. Procedând oricum.
Citirea fișierului regulilor: /etc/udev/rules.d/99-usb-serial.rules
Descriptor de innotificare nevalid.
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/tty/ttyACM0
DEVNAME=/dev/ttyACM0
MAJOR=166
MINOR=0
ACȚIUNE=adăugați
SUBSYSTEM=tty
ID_BUS=usb
ID_VENDOR_ID=108c
ID_MODEL_ID=017b
ID_PCI_CLASS_FROM_DATABASE=Controler magistrală serială
ID_PCI_SUBCLASS_FROM_DATABASE=controler USB
ID_PCI_INTERFACE_FROM_DATABASE=XHCI
ID_VENDOR_FROM_DATABASE=Robert Bosch GmbH
ID_MODEL_FROM_DATABASE=Controler xHCI Sunrise Point-LP USB 3.0
ID_VENDOR=Bosch_Connected_Devices_and_Solutions_GmbH
ID_VENDOR_ENC=Bosch\x20Connected\x20Devices\x20and\x20Solutions\x20GmbH
ID_MODEL=XDK_Application
ID_MODEL_ENC=XDK\x20Aplicație
ID_REVISION=0000
ID_SERIAL=Bosch_Connected_Devices_and_Solutions_GmbH_XDK_Application_2496B4065B328D1E
ID_SERIAL_SHORT=2496B4065B328D1E
ID_TYPE=generic
ID_USB_INTERFACES=:020200:0a0000:
ID_USB_INTERFACE_NUM=00
ID_USB_DRIVER=cdc_acm
ID_USB_CLASS_FROM_DATABASE=Comunicații
ID_PATH=pci-0000:00:14.0-usb-0:1:1.0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_1_1_0
DEVLINKS=/dev/serial/by-path/pci-0000:00:14.0-usb-0:1:1.0 /dev/serial/by-id/usb-Bosch_Connected_Devices_and_Solutions_GmbH_XDK_Application_2496B4065B4065B/if0de0dev/
ID_MM_CANDIDATE=1
TAGS=:systemd:
USEC_INITIALIZED=6250133716
Descărcați indexul modulului
Context de configurare a linkului descărcat.

Problema pare să fie aici, cred:

Citirea fișierului regulilor: /etc/udev/rules.d/99-usb-serial.rules
Descriptor de innotificare nevalid

Dar nu știu cum să repar asta. Celelalte răspunsuri nu par să fie de ajutor.

Puncte:0
drapel nr

Simlink-ul a fost creat, dar a fost creat altul dev folderul în dev din acest motiv:SYMLINK+="/dev/mydevice"

deci doar eliminând /dev din SYMLINK creează un link simbolic în dev SYMLINK+="dispozitivul meu"

Puncte:0
drapel in

Regulile ar trebui să fie:

KERNEL=="ttyACM*", ... , SYMLINK+="ttyUSB%n", MODE:="0666"

Sper că acest lucru vă ajută.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.