답변:
USB 호스트 컨트롤러와는 달리 USB 장치 / 주변 장치 컨트롤러를 컴퓨터에 추가해야합니다.
이와 같은 것 : https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html
불행히도, 메인 보드에 배선하는 방법을 찾아야합니다. 기술적으로는 가능합니다. 실제로 마더 보드를 포함하도록 마더 보드를 재 설계해야합니다. SPI 또는 I2C 버스를 마더 보드 어딘가에 노출시켜 추가 할 수있을 정도로 운이 좋을 수도 있지만, 일반적으로 개발자 보드 나 싱글 보드를 사용하지 않는 한 사용중인 모든 것에 직접 연결됩니다. GPIO 및 Raspberry Pi와 같은 다른 포트가있는 보드 컴퓨터
다른 옵션은 USB On-the-Go 컨트롤러입니다. 임베디드 및 휴대용 장치 용으로 설계된 마더 보드에는 호스트 또는 장치 컨트롤러로 작동 할 수있는 USB OTG (On-the-go) 컨트롤러가 있습니다. 예를 들어, 위에서 언급 한 Raspberry Pi에는 On-the-Go 컨트롤러가 있지만 호스트 포트 또는 USB 장치 기능 사용을 거부하는 온보드 USB 허브에 다시 연결되는 Pi Zero를 제외한 모든 모델에 있습니다. 비글 본 블랙에는 OTG 포트가 있습니다.
그러나 하드웨어가 완성되면 소프트웨어도 필요합니다. Linux에는 g_serial 및 g_ethernet과 같은 유용한 커널 USB 가제트 드라이버 ( "USB 가제트"는 USB 주변 장치 / 장치의 다른 용어)가 있습니다.이 장치를 사용하면 장치를 다른 컴퓨터에 연결하고 직렬 또는 이더넷을 통한 USB 장치로 볼 수 있습니다 (파일을 블록 장치로 사용하고 컴퓨터를 대용량 저장 장치로 표시 할 수있는 대용량 저장 장치로 장치를 노출 할 수있는 다른 장치가 있습니다). BeagleBone Black은 기본적으로이 기능을 활성화 한 상태로 제공되므로 USB를 통해 PC에 간단히 연결하여 네트워크 장치로 볼 수 있습니다. 복합 드라이버를 사용하여 대용량 저장 장치로도 사용할 수 있습니다. 단일 연결을 통해 여러 USB 장치 유형으로 표시됩니다. Pi Zero는 이들을 사용할 수 있지만 기본적으로는 그렇지 않습니다. Windows 또는 다른 OS의 경우 해당 장치 드라이버를 직접 작성해야합니다.
이론적으로는 할 수 있습니다. 데스크탑 PC를 분해하거나 어딘가에서 마더 보드에서 사용되지 않는 호환 가능 버스 (컨트롤러 IC의 사용되지 않는 핀) 또는 내부 I2C 또는 SPI 버스를 확장하는 방법 또는 분리 할 수있는 방법을 찾아보십시오 USB OTG 또는 장치 컨트롤러 칩을 교체하고 납땜하십시오. 그런 다음 Linux를 설치하고 가젯 드라이버를 사용하거나 다른 OS 용으로 직접 작성할 수 있습니다. 실제로, 당신이 최고의 전자 엔지니어가 아니라면, 당신은 그것을 할 수 없을 것입니다. 적어도 누군가가 USB 포트에 연결하는 장치 또는 OTG 포트가있는 어려운 어댑터가 나오기 전까지는 (이는 Arduino와 같은 마이크로 컨트롤러를 사용하여 USB 장치 컨트롤러 IC에 연결) 드라이버를 작성하여 실행합니다.
USB는 비대칭입니다. 한쪽은 호스트이고 다른 쪽은 주변 장치입니다. 주변 장치를 호스트로 작동 시키거나 그 반대로 할 수 없습니다. USB 포트가 양쪽으로 작동 할 수 있습니다. 이를 이동 중 USB 라고 하며 일부 휴대 전화 및 태블릿에 있습니다. 포트는 호스트 유형 포트가 아닌 물리적 장치 유형 포트입니다. 장치 포트가있는 PC를 본 적이 없습니다. 컨트롤러에 전자 장치가 필요하므로 양쪽 끝에 맞는 케이블을 만드는 것만으로는 충분하지 않습니다.
따라서 PC를 USB 장치로 만들 수 없습니다.
컴퓨터를 USB 저장 장치로 사용하려면 PC 대신 USB 연결로 휴대폰 또는 태블릿을 사용할 수 있습니다.
"USB 네트워킹 케이블"이라고도하는 특수한 "USB-USB 브리지 케이블"중 하나를 사용하는 것을 고려할 수 있습니다. 이 기사에서 언급 한 것과 같이 :
두 PC간에 파일을 전송할 수 있습니다. 저는 10 년 전 (Windows XP 시대)에 이런 종류의 케이블을 사용해 왔으며 그 당시 시장에 출시 된 모든 그러한 케이블에는 특별한 드라이버와 소프트웨어가 필요했습니다. 설치 디스크에 케이블 드라이버와 함께 제공되는 특수 파일 커맨더를 통해서만 파일을 전송할 수 있으므로 한 PC가 다른 USB 장치를 순수한 USB 외부 장치로 사용할 수 없습니다.
그 이후로 변경된 사항이 있고 새로운 솔루션으로 특수 소프트웨어를 사용하여 파일을 전송할 수 있는지 여부와 한 PC가 다른 PC의 외부 장치로 작동하도록 할 수 있는지 확실하지 않습니다.
Matt Thomson 의 답변 에서 설명했듯이 USB 슬레이브 컨트롤러가 없기 때문에 PC 컴퓨터의 물리적 USB 포트를 USB 슬레이브 장치로 작동시키는 것은 적절하지 않습니다.
즉, 슬레이브 모드 USB (예 : Raspberry Pi Zero)를 제공 할 수있는 어댑터 보드가 있으면 유선 이더넷과 같은 다른 채널을 통해 호스트 PC에 연결해야합니다. 해당 이더넷 연결을 통해 실행할 수있는 프로토콜은 두 가지입니다.
(1) IP 네트워크를 통해 USB 포트를 노출시킵니다.
소프트웨어를 사용하여 Raspberry Pi Zero의 USB 슬레이브 모드 포트를 가상 USB 장치로 PC에 노출시킵니다. USB / IP의 프로젝트는 IP 네트워크를 통해 USB를 수송 할 수있는 드라이버에 의해,이을 제공합니다. 다음 은 USB / IP를 사용하여 컴퓨터에 시뮬레이트 된 USB 장치를 제공하는 예입니다. 여기는 PC입니다.
이 제안 된 솔루션에서 내가 모르는 것은 USB / IP 소프트웨어가 이미 IP 네트워크를 통해 USB 슬레이브 포트를 노출 할 수 있는지 또는 USB 호스트 포트만 정상적으로 노출시킬 수 있는지입니다.
그러나 그래도 작동하더라도 (1) 들어오는 USB / IP 연결을 USB 연결로 수락하고 (2) USB 슬레이브 모드가 아닌 USB 슬레이브 모드를 제공하는 방식으로 PC에서 장치 드라이버를 설정하거나 조정해야합니다. USB 호스트 모드 (3)는 지정된 위치 ( .vdi
파일) 에서 데이터를 제공하여 USB 대용량 저장 장치를 시뮬레이션합니다 .
전반적으로, 그것은 복잡한 방법입니다.
(2) 파일을 IP 네트워크를 통해 노출시킵니다.
이것은 Raspberry Pi Zero에 대한 이더넷 연결을 활용하는 방법에 대한 훨씬 간단한 방법입니다. Raspberry Pi Zero에서 네트워크 파일 시스템을 통해 PC에 저장된 데이터를 마운트하십시오. 이러한 파일은 Pi Zero 파일 시스템의 일부로 논리적으로 표시되며 Linux USB 가젯 드라이버와 함께 제공하여 Raspberry Pi를 연결된 장치의 USB 대용량 저장 장치처럼 보이게 할 수 있습니다.