Windows에 WSL기능이 추가되면서 Linux를 윈도우에서 사용할 수 있게 되었다. 그런데 WSL이 완전한 Linux는 아니기 때문에 여러가지 제약사항이 존재하는데 바로 USB 장치를 연결하는 것이다. 하지만 이것도 찾아보니 가능한 작업이었다. 이번 포스트에서는 WSL에 USB장치를 연결하는 법을 알아보자. WSL에서 USB장치를 연결하는 것은 오픈소스 프로젝트인 usbipd-win이라는 프로젝트로 가능하다.
0. 환경
- WSL에서 USB장치를 연결하기 위해서는 다음과 같은 요구사항이 있따.
- Windows 11 이상(혹은 WSL2가 활성화된 Windows10)
- x64/x86 CPU(ARM은 지원하지 않아요)
- WSL2에 설치된 Linux.(커널 5.10.60.1 이상)
참고로 Linux 커널 버전은 uname -a 명령어로 확인 할 수 있으며, 커널버전이 낮을 경우 wsl --update 명령어로 업데이트 하면 가능하다.
1. USBIPD-WIN 설치하기
https://github.com/dorssel/usbipd-win/releases 에서 usbipd-win 을 다운받아 설치한다.
cmd 콘솔창을 다시 켜 usbipd 명령어를 실행하여 실행되는지 확인한다.
2. WSL Linux에 USBIP tools와 하드웨어 데이터베이스 설치하기
WSL로 돌아와서 USBIP Tools와 하드웨어 데이터베이스를 설치해줘야한다. 다음 명령어를 실행한다.
sudo apt install linux-tools-5.4.0-77-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20
3. USB장치 연결해 보기
Powershell이나 cmd를 관리자모드로 열어 다음 명령어로 USB장치 리스트를 확인한다. 나는 Iphone 6를 연결하려한다.
아이폰6의 BUSID는 1-4이므로 다음명령어로 attach를 한다.
usbipd wsl attach --busid <busid>
하지만 아이폰 연결이 다음과 같은 에러를 표시하면서 되지 않는 경우가 생긴다.
usbip: error: Attach Request for 1-4 failed - Device busy (exported)
예상하기로는 Windows에서 이미 iphone을 점유하고 사용하고 있어 장치를 WSL로 attach할 수 없는 것으로 보인다.
3-1. usbipd Device busy 에러 해결하기
위와 같은 에러를 해결하는데 핵심 아이디어는 Windows가 점유하기 전에 wsl에 attach를 해주는 것이다. 그러기 위해서 bind명령을 통해 usbipd가 usb 장치를 먼저 점유하게 해준다. 이때 force 옵션을 추가한다.
usbipd bind --force -b 1-4
명령 실행후 usbipd list 명령을 실행하여보면 state는 shared(force)로 변경된 것을 볼 수 있다.
다음 아이폰을 재 연결 해보자. 아이폰을 재연결하면 장치관리자에 iphone이 나타나지 않는 것 을 볼 수 있다.
이제 다시 attach 명령을 실행해보자.
usbipd wsl attach -b 1-4
이렇게 아이폰이 wsl에 attach 된 것을 확인 할 수 있다.
wsl에서도 다음과 같이 확인해보자.
lsusb
WSL에서도 usb장치가 연결 된 것을 확인 할 수 있다.
참고
https://learn.microsoft.com/en-us/windows/wsl/connect-usb
https://www.youtube.com/watch?v=I2jOuLU4o8E
'테크 > Windows팁' 카테고리의 다른 글
윈도우10 업데이트 실패 - 오류코드 0x800f0922 (0) | 2022.03.14 |
---|---|
윈도우에서 PS4 패드 무선으로 인식하기(DS4Windows) (0) | 2022.03.05 |
윈도우 엣지/크롬 브라우저 굴림체 폰트 바꾸기 (0) | 2022.02.27 |
윈도우 부팅로고 바꾸기(씽크패드) (1) | 2022.02.15 |
WSL 오류 : WslRegisterDistribution failed with error: 0x800701bc (0) | 2022.02.13 |
댓글