/ dev / tty * os dispositivos seriais estão no grupo “root” por um segundo antes de serem alterados para o grupo “dialout”. Como fazê-los começar em "discagem"?

2

Quando eu conecto um dispositivo usb-to-serial, leva algum tempo para o dispositivo ser trocado para o grupo "dialout" (ele começa no grupo "root"). Isso causa estragos em algum software cliente que espera ter permissões para ler o dispositivo imediatamente após a redefinição.

Eu tentei dois dispositivos usb-para-serial e ambos têm o mesmo comportamento - atmega32u4 e ch340.

Aqui está o que acontece se eu imprimir ls -l /dev/tty* em um loop rápido:

A primeira vez que eu conecto o dispositivo:

> while ((1)); do ls -l /dev/ttyACM* 2> /dev/null; sleep 0.1; done;
# it does not print anything until I plug in the device
crw-rw-rw- 1 root dialout 166, 0 Aug 19 17:23 /dev/ttyACM0
crw-rw-rw- 1 root dialout 166, 0 Aug 19 17:23 /dev/ttyACM0
crw-rw-rw- 1 root dialout 166, 0 Aug 19 17:23 /dev/ttyACM0

Isso parece ótimo, mas isso acontece quando eu desconecto e conecto o dispositivo novamente:

> while ((1)); do ls -l /dev/ttyACM* 2> /dev/null; sleep 0.1; done;
# Nothing is printed out until I plug the device in for a second time
crw------- 1 root root 166, 0 Aug 19 17:23 /dev/ttyACM0
crw------- 1 root root 166, 0 Aug 19 17:23 /dev/ttyACM0
crw------- 1 root root 166, 0 Aug 19 17:23 /dev/ttyACM0
crw------- 1 root root 166, 0 Aug 19 17:23 /dev/ttyACM0
crw------- 1 root root 166, 0 Aug 19 17:23 /dev/ttyACM0
crw-rw-rw- 1 root dialout 166, 0 Aug 19 17:23 /dev/ttyACM0
crw-rw-rw- 1 root dialout 166, 0 Aug 19 17:23 /dev/ttyACM0
crw-rw-rw- 1 root dialout 166, 0 Aug 19 17:23 /dev/ttyACM0

Após a primeira vez que o dispositivo foi conectado, em todas as tentativas consecutivas de conectá-lo, o dispositivo aparece no grupo "root" por meio segundo antes de se mover para o grupo "dialout". Isso pode ser instantâneo?

As mensagens dmesg para o primeiro e para os plug-ins consecutivos foram as mesmas.

Isso acontece sem as regras personalizadas do udev, e com uma regra do udev solicitando que esse dispositivo específico seja colocado no grupo "dialout" - sempre há um atraso de meio segundo após a primeira vez foi plugado.

Isto está no Debian Unstable a partir de agosto de 2018.

Aqui está o que udevadm monitor mostra:

sudo udevadm monitor & (while ((1)); do ls -l /dev/ttyACM*; ls -l /dev/ttyUSB*; sleep 0.1; done;) 2> /dev/null
[1] 18788
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[8916.515599] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
KERNEL[8916.516088] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[8916.516768] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/tty/ttyACM0 (tty)
KERNEL[8916.516835] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[8916.516886] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.1 (usb)
KERNEL[8916.516944] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.1 (usb)
KERNEL[8916.516999] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
crw------- 1 root root 166, 0 Aug 19 17:54 /dev/ttyACM0
crw------- 1 root root 166, 0 Aug 19 17:54 /dev/ttyACM0
crw------- 1 root root 166, 0 Aug 19 17:54 /dev/ttyACM0
crw------- 1 root root 166, 0 Aug 19 17:54 /dev/ttyACM0
crw------- 1 root root 166, 0 Aug 19 17:54 /dev/ttyACM0
UDEV  [8917.063021] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
UDEV  [8917.064210] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0 (usb)
UDEV  [8917.068240] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.1 (usb)
UDEV  [8917.068290] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.1 (usb)
UDEV  [8917.068359] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/tty/ttyACM0 (tty)
UDEV  [8917.080062] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0 (usb)
UDEV  [8917.080134] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
crw-rw-rw- 1 root dialout 166, 0 Aug 19 17:54 /dev/ttyACM0
crw-rw-rw- 1 root dialout 166, 0 Aug 19 17:54 /dev/ttyACM0
crw-rw-rw- 1 root dialout 166, 0 Aug 19 17:54 /dev/ttyACM0
    
por Krastanov 19.08.2018 / 23:38

0 respostas