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