2013-05-07 1 views
6

usb 장치의 OUT 또는 IN 끝 점이 무엇인지 나타내는 bash 명령, 프로그램 또는 libusb 기능이 있습니까?usb 장치의 끝점을 알고있다

예를 들어, libusb_interface_descriptor의 bNumEndpoints (libusb1.0 라이브러리에서)는 내 USB 드라이브에 3 개의 끝점이 있음을 보여 주지만 그 idnumber가 무엇인지 어떻게 알 수 있습니까?

답변

4

드디어 lubusb-1.0에서 답을 찾았습니다. 에서 실제로 작동하지,하지만 구조체 필드 :

uint8_t의 libusb_endpoint_descriptor :: bEndpointAddress

기술자로 기술 된 엔드 포인트의 주소입니다.

비트 0 : 3은 끝점 번호입니다. 비트 4 : 6은 예약되어 있습니다. 비트 7 은 방향을 나타냅니다. libusb_endpoint_direction을 참조하십시오. USB 드라이브에 대한 각 인터페이스의

은, 난 그냥 사용 가능한 엔드 포인트를 표시하는이 라인을 작성했다 :

cout<<"Number of endpoints: "<<(int)interdesc->bNumEndpoints<<endl; 
for(int k=0; k<(int)interdesc->bNumEndpoints; k++) { 
     epdesc = &interdesc->endpoint[k]; 
     cout<<"Descriptor Type: "<<(int)epdesc->bDescriptorType<<endl; 
    cout<<"EP Address: "<<(int)epdesc->bEndpointAddress<<endl; 
} 
epdesc가 libusb_endpoint_descriptor입니다

및 interdesc가 libusb_interface_descriptor입니다. ($ 터미널 진입 점을 나타냅니다) 당신이 장치를 요구 한 후

8

이 실행 :

16c0
$ sudo lsusb -v -d 16c0:05df 

: 05df는 콜론으로 구분 공급 업체 및 제품 ID가 있습니다. (당신이 입력 lsusb를 알고 lsusb 분리 및 다시 실행하여 당신을 어떤 장치 파악하지 않는 경우) 당신이 혼란 사용에게 lsusb man 페이지가 나타나면

을 : 다음

http://linux.die.net/man/8/lsusb

을 설명이 나타나면 bEndpointAddress 레이블이 붙은 줄을 찾으십시오. 그러면 다음 16 진 코드가 해당 특정 보고서의 끝점이됩니다.