나는 Linux USB 스택으로 많은 작업을 해본 적이 없으며 항상 작동합니다. 하지만 내가 읽고 있던 건USB 동적 장치 매핑그리고 이것이 가능한지 궁금합니다.
예를 들어, Linux 컴퓨터의 USB 포트에 마우스를 연결하고 장치를 Linux의 다른 USB 포트에 동적으로 매핑하도록 명령을 실행할 수 있습니까? 그렇다면 어떤 명령이나 도구 세트를 조사해야 합니까?
이 질문의 목적을 위해 호스트 모드에 있을 수 있는 USB 포트 하나와 장치 모드에 있을 수 있는 다른 USB 포트가 있다고 가정해 보겠습니다. 적절한 하드웨어가 있다면 어떻게 이 일을 할 수 있을지 궁금합니다.
답변1
나는 과거에 비슷한 일을 한 적이 있습니다.
- 사용USB 프로필HID 장치를 포함하여 필요한 USB 가젯 구성을 만듭니다
(가젯은 여러 장치 "기능"을 가질 수 있음). - 사용
uinput
및intercept
에서차단 도구 프레임워크필요에 따라 실제 장치에서 가상 장치로 HID 이벤트 이동
오디오 및 비디오 스트림, 대용량 저장 장치, 직렬 포트처럼 "동작"하는 장치와 같은 장치에 대한 사용자 공간에서 유사한 "전달"이 수행될 수 있습니다.
ffmpeg
오디오 및 비디오의 경우 다음을 사용하여 실제 장치와 시뮬레이션된(alsa/v4l2) 장치 간에 스트림을 중계 할 수 있습니다 . 예를 들어 socat
직렬 포트 장치의 데이터를 중계하는 데 사용됩니다.
이는 실제로 USB 컨트롤러 하드웨어나 커널 드라이버를 사용하여 "USB 장치를 전달"하는 것이 아니라 사용자 공간 도구와 스크립트, udev 및/또는 체계화되었습니다.
귀하가 관심을 가질 수 있는 기타 리소스:
- https://www.kernel.org/doc/Documentation/usb/gadget-testing.txt
- https://www.collabora.com/news-and-blog/blog/2019/02/18/modern-usb-gadget-on-linux-and-how-to-integrate-it-with-systemd-part- 1/
- https://developer.ridgerun.com/wiki/index.php/How_to_use_the_UVC_gadget_driver_in_Linux
- https://www.kernel.org/doc/html/latest/usb/functionfs.html
오늘은 더 자세히 설명할 시간이 없지만, 위의 정보를 시작 시드로 사용하여 인터넷 검색을 한 후 불분명한 내용이 있으면 저에게 연락해 주세요.