간결한 버전:
장치 정보 등에서 경로를 /devices/pci0000:00/0000:00:13.1/usb6/6-3
얻는 방법 /dev/bus/usb/006/015
은 무엇입니까 ?/dev/ttyUSB0
/dev/serial/by-path/pci-0000:00:13.1-usb-0:3:1.0-port0
상세 버전:
특정 유형의 USB 장치(Arduino)가 연결되어 있는지 감지하는 스크립트가 있습니다. 장치가 연결되면 장치 경로 및 이름과 같은 장치에 대한 여러 데이터가 표시됩니다.
DEVPATH: /devices/pci0000:00/0000:00:13.1/usb6/6-3
DEVNAME: /dev/bus/usb/006/015
첫 번째 스크립트가 직렬 통신을 사용하여 USB 장치와 상호 작용하는 두 번째 스크립트를 호출하기를 원합니다. 이제 두 번째 스크립트를 수동으로 시작할 때 TTY를 사용하여 장치를 지정합니다.
./script2.py --device /dev/ttyUSB0
또는:
./script2.py --device /dev/serial/by-path/pci-0000:00:13.1-usb-0:3:1.0-port0
두 번째 스크립트가 첫 번째 스크립트에 의해 자동으로 시작되기를 원합니다. 이렇게 하려면 장치 경로와 이름을 TTY 경로 또는 /dev/serial/by-path
.
어떻게 해야 하나요?
DEVPATH가 나타나는 것을 확인했지만 by-path
OR와 관련된 내용은 아무것도 표시되지 않습니다. (문자열을 직접 작성할 필요는 없고 데비안에는 이미 변환을 수행하는 도구가 있습니다.)pci-0000:00:13.1
0:3:1.0
port0
내가 시도한 것:
lsusb -v
관련된 내용이 아무것도 표시되지 않는 것 같습니다. TTY 장치보다 훨씬 낮은 수준인 것 같습니다.udevadm info /dev/ttyUSB0
경로는 실제로 표시되지만/devices/pci0000:00/0000:00:13.1/usb6/6-3/6-3:1.0/ttyUSB0/tty/ttyUSB0
TTYudevadm info /dev/bus/usb/006/015
장치와 관련된 내용은 표시되지 않습니다.
답변1
DEVPATH
실제로는 에 존재하므로 sysfs
해당 디렉토리에서 해당 이름을 가진 모든 하위 장치를 찾을 수 있습니다. TTY 장치가 있는 DEVPATH
것으로 확인되면 echo /sys/devices/pci0000:00/0000:00:13.1/usb6/6-3/*/tty/*
해당 장치의 이름이 표시됩니다( ttyUSBx
).
그러나 상위 장치가 나타나고 스크립트를 트리거하면 하위 장치 검색이 완료되지 않을 수 있습니다. 이는 TTY 장치를 찾을 때 아직 존재하지 않을 수 있음을 의미합니다. 따라서 하위 장치 자체와 일치하는 udev 규칙을 만드는 것이 좋습니다.