가상 USB HID 장치

가상 USB HID 장치

연결된 USB HID 장치와 통신하는 애플리케이션을 개발 중입니다. 문제는 아직 실제 장치가 없다는 것입니다(우리 팀의 다른 부분에서 개발 중임). 따라서 이를 시뮬레이션할 수 있는 방법이 있으면 정말 좋겠습니다.

제가 생각하는 이상적인 유틸리티는 다음과 같습니다. 로드될 때 시스템에 두 개의 장치 노드를 생성하는 커널 모듈입니다.

  • 가상 USB 숨김 장치는 실제 USB 숨김 장치 노드와 구별할 수 없습니다. /dev/hidraw0물론 이 장치는 내가 사용하는 모든 USB 숨김 라이브러리에서 볼 수 있어야 합니다 hidapi.
  • 서비스 장치 노드, /dev/virtual_hid_1예:

따라서 누군가가 을 쓸 때 /dev/virtual_hid_1해당 데이터는 문자 그대로 읽어야 하며 /dev/hidraw0그 반대의 경우도 마찬가지입니다.

이렇게 하면 내가 원하는 어떤 언어로든 일부 디버깅 애플리케이션을 작성할 수 있습니다 python. /dev/virtual_hid_1개발하는데 매우 편리할 것입니다.

그런 게 있나요?

답변1

아마도 커널 모듈을 찾고 있을 것입니다 uhid. 바라보다커널 소스 코드의 문서:

UHID를 사용하면 사용자 공간 전송 드라이버는 사용자 공간 제어 버스에 연결된 각 장치에 대해 커널 숨겨진 장치를 생성할 수 있습니다. UHID API는 커널에서 사용자 공간으로 또는 그 반대로 제공되는 I/O 이벤트를 정의합니다.

./samples/uhid/uhid-example.c에 샘플 사용자 공간 애플리케이션이 있습니다.

답변2

  1. 개발 중인 USB 장치를 에뮬레이션하기 위한 저렴하고 우아하며 개방형 하드웨어 솔루션에 관심이 있을 수 있습니다.마이크로 파이썬 보드. (저는 이 하드웨어와 아무런 관련이 없습니다).

    소규모 독립이다Python 3을 실행하는 보드, USB에 연결하면 마우스 HID 또는 키보드 HID로 나타날 수 있습니다. Python 소스 파일을 장치에 복사하여 실행하면 됩니다. 아름다운 개념.

    글쎄, 그것은 당신이 원하는 것에 실제로 적합하지 않습니다. 당신이 원하는 대로 정확하게 표시되도록 하려면 SDK를 다운로드하고 C에서 일부 작업을 수행해야 할 수도 있지만 대부분의 코드는 Python에 있습니다. TTL 레벨 직렬 포트, i2c, spi 및 기타 포트가 있습니다.

  2. 대체 솔루션으로는Python을 사용하여 USB 장치 보드 시뮬레이션그런데 완제품을 살 수 있을지는 모르겠네요.

  3. 게다가usbip을 사용한 USB 에뮬레이션아직 살펴보지 않은 추가 하드웨어는 없습니다.

관련 정보