내 임베디드 시스템에는 두 개의 USB 장치가 유사한 /dev 파일인 /dev/ttyACMx에 마운트되어 있습니다. 장치는 POS 장치이고 다른 하나는 프린터입니다.
어떤 장치가 ttyACM0인지 ttyACM1인지 모르겠습니다. 내 추측으로는 특정 순서를 가정할 수 없는 것 같습니다.
그렇다면 ttyACM0 및 ttyACM1이 감지되면 어떤 USB 장치가 tty* 파일에 바인딩되어 있는지 어떻게 알 수 있습니까?
나는 확인했다LSSB그리고USB 장치하지만 정보를 연결할 수 없습니다.
감사해요
답변1
루트로서 출력은 장치를 식별하는 데 사용할 수 있는 모든 속성을 udevadm info -q all -a -n /dev/ttyACM0
출력합니다 . 또한 장치에 대한 일종의 활성 검색을 수행하는 경우 기존 udev 규칙에 의해 생성될 수 있는 환경 변수를 보는 옵션을 /dev/ttyACM0
생략할 수도 있습니다 .-a
/dev/ttyACM0
과 의 출력에 차이가 있는 경우 /dev/ttyACM1
해당 차이를 사용하여 어느 것이 어느 것인지 식별할 수 있습니다.
이는 /dev/ttyACM*
이러한 장치가 원래 RS-232 직렬 장치였으며 USB 호환이 가능하도록 일반 USB-직렬 변환기 칩이 추가되었음을 나타낼 수 있습니다. 그렇다면 사용 가능한 정보의 양은 장치를 USB 버스에 표시하도록 변환기 칩을 구성하는 방법에 따라 달라집니다. 가장 좋은 경우에는 각 장치의 유형을 식별하는 속성이 있을 수 있으며 자동으로 생성된 별칭이 이미 있을 수 있습니다./dev/serial/by-id/*
최악의 시나리오는 변환기 칩에 고유한 항목(일련 번호도 아님)이 없을 수 있으며 일부 식별 요청을 장치에 보내고 결과 응답을 확인하여 활성 프로빙을 수행하기 위한 일종의 udev 규칙을 구현해야 할 수도 있습니다. 또는 각 장치 유형에 특정 USB 포트를 할당하고 USB 포트의 sysfs 경로로 식별합니다. 이 경우 다음을 확인하십시오 /dev/serial/by-path/*
. 사용할 수 있는 자동으로 생성된 장치 별칭이 이미 있을 수 있습니다.
장치를 구별하는 데 사용할 수 있는 속성이나 프로브를 찾으면 udev 규칙을 설정하여 POS 장치 및 /또는 프린터에 적합한 장치 /dev/ttyACM*
와 같은 장치에 유형별 별칭을 할당 할 수 있습니다. 이는 실제 장치 이름에 대한 심볼릭 링크이지만 애플리케이션에서는 이를 실제 장치인 것처럼 사용할 수 있습니다./dev/POS
/dev/receipt