USBIP란 프로젝트가 있습니다. USB over IP를 줄여서 부르는 겁니다.
즉 특정 IP주소에 있는 USB장치를 내 장치에 있는 것처럼 사용하는 방법입니다. 이를 이용하면 지구 반대편에 있는 USB장치(예를 들면 시리얼통신을 쓴 산업장비 등등)을 내 컴퓨터에서 내 장치에 달린 것 마냥 쓸 수 있는 겁니다.
리눅스 커널 3.6 이후에는 이 프로젝트가 커널에 들어가게 되어 USBIP 라이브러리를 설치하는 것 만으로도 이런 것을 사용 할 수 있게 되었습니다. 다만, 바인딩하는 것이 귀찮고 명령이 좀 깁니다. 그리고 Windows에서 사용이 좀 힘듭니다.
그래서 VirtualHere란 업체에서 이를 쉽게 GUI로 만들고 사용할 수 있게끔 결과물을 내놓았습니다. 게다가 안드로이드에 한해서지만 모바일서버를 지원해서 안드로이드에 붙은 USB장치를 PC에서 사용하는 것도 가능해 졌습니다. 심지어 스팀링크에서도 사용이 가능해서 용도가 무궁무진합니다.
일단 저는 안드로이드에 유선형 Xbox컨트롤러를 달아 이를 PC에서 사용 하는 것으로 해보겠습니다. (이렇게 하면 무선 컨트롤러 비스무리하게 쓸 수 있습니다. 스마트폰이 거시기 하지만.
https://www.virtualhere.com/
일단 USB장치가 연결된 곳에 서버프로그램을 설치하고 장치를 사용하고자 하는 곳에 클라이언트를 설치해야 합니다.
서버프로그램은 Windows, Linux, OSX, Android를 지원하고
클라이언트는 Windows, Linux, OSX를 지원합니다. 사실상 3대 대표 OS를 다 지원하는 겁니다. 안드로이드서버가 제일 독특합니다.
서버든 클라이언트든 리눅스에서는 USBIP를 설치해야합니다. 다른 OS는 드라이버를 따로 설치해야합니다. 어찌보면 리눅스가 더 간편합니다.
sudo apt-get install usbip
그리고 홈페이지에서 서버프로그램을 다운로드받아서 설치해야 하는데 온갖 버전들이 즐비합니다. 그 이유는 특정 보드에 최적화된 버전을 준비한 탓인데요. 제일 아래에 가면 안드로이드 버전도 있습니다.
32비트의 경우
wget https://virtualhere.com/sites/default/files/usbserver/vhusbdi386
sudo chmod +x vhusbdi386
sudo ./vhsubi386 -b
이렇게 해주시고
64비트의 경우
wget https://virtualhere.com/sites/default/files/usbserver/vhusbdx86_64
sudo chmod +x vhusbdx86_64
sudo ./vhusbdx86_64 -b
이렇게 해주시면 서버세팅 완료입니다. 안드로이드는 그냥 Play Store에서 서버프로그램을 다운로드 받은 다음 그냥 앱을 실행 하면 됩니다. 이건 설명하고 자시고 할 것도 없네요.
설명을 보시면 제약사항이 있는데 무료로 USB장치는 하나만 된다고 합니다. 일단 저희는 시험만 해보는 것이니 일단 그냥 넘어가 봅시다.
이번에는 클라이언트를 설치하도록 합시다. 다른 PC에서 마찬가지로 USBIP 라이브러리를 설치합시다. OSX나 Windows는 당연히 드라이버를 설치해야 하고요.
https://virtualhere.com/usb_client_software
아래에 보시면 클라이언트가 있는데 GUI와 CLI버전 두가지를 준비해두었습니다. 저희는 귀찮기도 하고 이쪽이 더 편리하니 GUI버전을 다운로드 받기로 하지요.
다운로드 받은 후에는 서버와 마찬가지로 실행속성을 줘야 합니다.
sudo chmod +x vhuit32
혹은
sudo chmod +x vhuit64
GUI로 하시려면 아래 스크린샷을 보시면 됩니다. 속성을 여신 뒤에 실행 허용에 체크만 해주시면 됩니다.
실행속성 주기. 리눅스사용자라면 자주 쓰는 기능입니다. 근데 보통 귀찮아서 그냥 CLI쓰기도...
서버가 동일한 네트워크에 있는 가정하에 클라이언트를 실행하고 잠시 기다리면 서버가 자동으로 검색이 되고 장치를 사용 할 수 있게 됩니다. 저는 안드로이드에 Xbox컨트롤러를 연결하고 기다렸습니다.
저는 바로 연결이 되는데 아닌 분들도 있을 겁니다. 그럴 때는 해당 장치에 오른쪽 버튼을 누르고 Use를 실행하시면 됩니다.
실제로 잘 되더군요. 딜레이도 크게 없었습니다. 요새는 와이파이 속도가 엄청 빠르다보니 USB정도는 그냥 넘어가는 것 같습니다.
virtualHere란 이 프로젝트는 범용성이 워낙 좋아서 다른 용도로도 충분히 사용이 가능할 것 같습니다. 무엇보다 키보드와 마우스조차 사용가능해서 VNC를 대신할 수 있을 것 같기도 하네요.
보너스..
라즈베리파이를 USB 서버로 만들기(물론 라이센스가 있어야 여러개를 쓸 수 있습니다.)
https://www.virtualhere.com/oem_faq
여기 내용입니다.
SSH로 접속후에 아래 내용을 싹 긁어서 넣어주면 됩니다. 그러면 끝.
wget https://www.virtualhere.com/sites/default/files/usbserver/vhusbdarm sudo chmod +x ./vhusbdarm sudo mv vhusbdarm /usr/sbin wget http://www.virtualhere.com/sites/default/files/usbserver/scripts/vhusbdpin sudo chmod +x ./vhusbdpin sudo mv vhusbdpin /etc/init.d sudo update-rc.d vhusbdpin defaults sudo reboot |
이렇게 하면 Virtualhere 서버가 라즈베리파이에 만들어지게 됩니다.
그리고 먼곳에서 접속하기 위해서는 7575 TCP 포트를 열어주셔야 합니다. 왜냐하면 VirtualHere는 7575번 포트로 USB를 원격 접속하기 때문입니다.