USB를 직렬 장치에 연결하면 장치가 "dialout" 그룹("root"로 시작함) 그룹으로 전환하는 데 시간이 걸립니다. 이는 재설정 후 즉시 장치를 읽을 수 있는 권한을 원하는 일부 클라이언트 소프트웨어에 큰 피해를 줄 수 있습니다.
두 개의 USB-직렬 장치를 시도했는데 둘 다 atmega32u4와 ch340으로 동일하게 작동했습니다.
ls -l /dev/tty*
빠른 루프로 인쇄하면 다음과 같은 일이 발생합니다.
처음으로 장치를 연결하는 경우:
> 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
괜찮아 보이지만 장치를 뽑았다가 다시 연결하면 이런 일이 발생합니다.
> 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
처음으로 장치를 연결한 후 장치를 연결하려고 연속적으로 시도할 때마다 장치가 0.5초 동안 "루트" 그룹에 나타난 다음 "다이얼아웃" 그룹으로 이동합니다. 이것이 즉시 달성될 수 있습니까?
첫 번째 플러그인과 후속 플러그인에 대한 dmesg 메시지는 동일합니다.
이는 사용자 정의 udev 규칙 없이 발생합니다.그리고udev 규칙에서는 이 특정 장치를 "dialout" 그룹에 넣어야 합니다. 처음 연결한 후 항상 0.5초의 지연이 있습니다.
2018년 8월에 출시된 Debian Unstable 버전입니다.
udevadm monitor
표시되는 내용 은 다음과 같습니다 .
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