udev regras para atribuir / restringir portas seriais a um intervalo de números

2

Estou tentando separar as portas seriais com base no atributo do fabricante ATTRS{manufacturer} .

Gostaria de atribuir /dev/ttyUSBx aos detectados do fabricante A, onde x pode ter um valor entre 0 e 9 apenas. Da mesma forma, para aqueles detectados como do fabricante B, desejo atribuir /dev/ttyUSBy , em que y pode ter um valor entre 10 e 19 apenas.

Por acaso me deparei com este artigo, onde o autor diz que é possível modificar os nomes usando symlinks . Podemos fazer algo assim para atender minha exigência?

    
por skrowten_hermit 05.06.2017 / 13:32

1 resposta

0

Não é uma resposta direta à sua pergunta, mas você pode verificar

$ ls -l /dev/serial/by-id/

(depois de conectado em pelo menos um adaptador usb-serial) para verificar se isso lhe dá uma idéia para resolver seu problema.

Você também pode verificar /lib/udev/rules.d/60-serial.rules para ter um exemplo e ver como /dev/serial funciona. No meu Kubuntu 16.04, é assim:

ACTION=="remove", GOTO="serial_end"
SUBSYSTEM!="tty", GOTO="serial_end"

SUBSYSTEMS=="pci", ENV{ID_BUS}="pci", ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{device}"
SUBSYSTEMS=="pci", IMPORT{builtin}="hwdb --subsystem=pci"
SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb"

# /dev/serial/by-path/, /dev/serial/by-id/ for USB devices
KERNEL!="ttyUSB[0-9]*|ttyACM[0-9]*", GOTO="serial_end"

SUBSYSTEMS=="usb-serial", ENV{.ID_PORT}="$attr{port_number}"

IMPORT{builtin}="path_id"
ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="", SYMLINK+="serial/by-path/$env{ID_PATH}"
ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="?*", SYMLINK+="serial/by-path/$env{ID_PATH}-port$env{.ID_PORT}"

IMPORT{builtin}="usb_id"
ENV{ID_SERIAL}=="", GOTO="serial_end"
SUBSYSTEMS=="usb", ENV{ID_USB_INTERFACE_NUM}="$attr{bInterfaceNumber}"
ENV{ID_USB_INTERFACE_NUM}=="", GOTO="serial_end"
ENV{.ID_PORT}=="", SYMLINK+="serial/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}"
ENV{.ID_PORT}=="?*", SYMLINK+="serial/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}-port$env{.ID_PORT}"

LABEL="serial_end"
    
por 03.07.2017 / 18:48