https://github.com/dorssel/usbipd-win/releases 들어가서
usbipd-win_[버전].msi를 설치한다.
제대로 설치 안됐을 수도 있어 파워셀상에서 한번 더 설치한다.
winget install --interactive --exact dorssel.usbipd-win
[출처: https://learn.microsoft.com/ko-kr/windows/wsl/connect-usb]
그리고 WSL상에서
sudo apt install linux-tools-virtual hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip ls /usr/lib/linux-tools/*/usbip | tail -n1 20
[출처: https://choiseokwon.tistory.com/]
전부 설치 완료되면 WSL은 일단 나가고 파워셀을 나갔다 다시 들어간다.
파워셀상에서
usbipd list
하면
이게 뜬다 맨 왼쪽 BUSID를 주목한다. 3-2에 Serial이라고 써져있는거 보니 이거를 WSL에 연결하면 될 것 같다.
usbipd bind --force -b 3-2
3-2을 윈도우상에서 사용 중이면 연결이 안되기 때문에 bind명령을 통해 usbipd가 usb 장치를 먼저 점유하도록 한다.
usbipd wsl attach -b 3-2
attach 명령으로 3-2을 WSL에 연결한다.
제대로 연결 되었는지 확인하기 위해
usbipd list
맨 오른쪽에 STATE를 주목한다 Attached라고 써져있는 것을 보니 제대로 연결되었다
WSL에 다시 들어간다.
lsusb
Bus 001 Device 002에 제대로 잡힌 것을 볼 수 있다.
이 번거로운 것들을 한번에 하는 파워쉘 스크립트를 만들었다.
wslusb.ps1는 usb를 연결할때 wslusbdet.ps1는 usb를 해제할때 사용하며
관리자 권한이 필요하기 때문에 터미널을 관리자 권한으로 실행하도록 설정해놓고 사용하면 편리하다.
# wslusb.ps1
echo "연결된 USB의 list를 출력합니다."
echo ""
usbipd list
echo ""
[string]$usbipdBUSID = Read-host "WSL에 연결할 USB의 BUSID를 입력하세요"
echo ""
usbipd bind --force -b $usbipdBUSID
usbipd wsl attach -b $usbipdBUSID
echo ""
echo "연결된 USB의 list를 출력합니다."
echo ""
usbipd list
# wslusbdet.ps1
echo "연결된 USB의 list를 출력합니다."
echo ""
usbipd list
echo ""
[string]$usbipdBUSID = Read-host "WSL로부터 되찾을 USB의 BUSID를 입력하세요"
echo ""
usbipd wsl detach -b $usbipdBUSID
Start-Sleep -Seconds 5
usbipd unbind -b $usbipdBUSID
echo ""
echo "연결된 USB의 list를 출력합니다."
echo ""
usbipd list
만들어 놓고 프로필 설정 파일인 $profile에 alias를 등록해서 사용하면 매우 편리하다.
vscode로 $profile 수정
code $profile
$profile에 추가할 내용
# Set-alias [단축어] [실행파일]
Set-alias wslusb C:\tools\usbipd\wslusb.ps1
Set-alias wslusbdet C:\tools\usbipd\wslusbdet.ps1
추가하고 나면 . $profile를 입력한다
. $profile
실행
# 연결
wslusb
# 제거
wslusbdet
연결과정
결과
해제 과정
결과
그리고 나서
dmesg | grep ttyUSB
이를 실행하면 USB 장치 이름(ex. ttyUSB0)을 확인 가능하다.