"/dev/bus/usb/006/015"에서 "/dev/ttyUSB0"을 얻는 방법은 무엇입니까?

"/dev/bus/usb/006/015"에서 "/dev/ttyUSB0"을 얻는 방법은 무엇입니까?

간결한 버전:

장치 정보 등에서 경로를 /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-pathOR와 관련된 내용은 아무것도 표시되지 않습니다. (문자열을 직접 작성할 필요는 없고 데비안에는 이미 변환을 수행하는 도구가 있습니다.)pci-0000:00:13.10:3:1.0port0

내가 시도한 것:

  • lsusb -v관련된 내용이 아무것도 표시되지 않는 것 같습니다. TTY 장치보다 훨씬 낮은 수준인 것 같습니다.

  • udevadm info /dev/ttyUSB0경로는 실제로 표시되지만 /devices/pci0000:00/0000:00:13.1/usb6/6-3/6-3:1.0/ttyUSB0/tty/ttyUSB0TTY udevadm 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 규칙을 만드는 것이 좋습니다.

관련 정보