WinUSB Device
- Microsoft에서는 Windows 8 이후 부터 제조사에서 inf 파일 없이 WinUSB 드라이버를 사용할 수 있도록 지원하고 있다.
- WinUSB Device란? (참고)
- WinUSB device란 Microsoft 사의 OS feature descriptor를 사용하는 USB 장치를 의미한다. 이때 descriptor는 호환 가능 ID가 "WINUSB(USB/MS_COMP_WINUSB)"로 설정되어야 한다.
- 반대로 자동으로 설치되는 드라이버를 사용하지 않으려면, 장치를 WinUSB device 로 설정하지 않은 상태에서 INF 파일에 hardware ID를 정의해야 한다.
- Microsoft 사에서는 WinUSB device에 대한 Winusb.inf 설치 파일을 기본으로 제공하고 있다. (WinUSB 장치에 대해서 자동 적용됨)
- Windows 8이전의 OS에서 WinUSB 드라이버를 사용하기 위해서는 WinUSB (Winusb.sys) Installation 문서를 참고하여 GUID 설정 및 필요한 파일 복사 등의 작업을 수행해야 한다. -- Windows Update를 통해서 WinUSB.inf가 설치되는 경우는 신경을 쓸 필요가 없을 듯 --
- WebUSB의 경우 WinUSB device를 기본으로 동작하므로, WinUSB device의 요건과 일치한다. Arduino Leonardo에 WebUSB Firmware를 설치한 경우 아래와 같은 속성을 확인할 수 있다.
- Device description
- WinUSB device의 경우 device description은 inf 파일에서 정보를 가지고 오지 않고, 장치에서 보고된 iProduct 문자열을 사용해서 표기된다. 이런 규칙은 Windows 8 이전에는 적용되어 있지 않기 때문에 이전 버전의 Windows에서는 WinUSB.inf를 사용해 설치된 장치는 모두 이름이 USBDevice로 표기된다.
- Microsoft OS Descriptors (참고)
- WinUSB device의 확장기능(extended feature - UX 개선 등에 사용할 수 있다)을 사용하기 위해서는 Microsoft OS Descriptor를 사용해야한다. String Descriptors 필드의 0xEE인덱스의 문자열을 지정함으로써 이 기능을 구현할 수 있다. WinUSB를 지원하는 TREZOR model T 제품의 descriptor를 확인해보면 구현 예를 찾을 수 있다.
- 아울러 "DeviceInterfaceGUID"를 지정하는 Property를 가지고 있어야한다. (참고)
- 해당 Property는 registry에서 확인할 수 있다.
- Cypress FX chipset을 사용해 개발하는 경우 참고: https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/automatic-installation-of-winusb
- Arduino WebUSB프로젝트 또한 WinUSB device 표준을 기본으로 하고 있기 때문에 이 소스코드를 보는 것이 WinUSB device를 이해하는데 큰 도움을 줄 수 있다.
- https://github.com/webusb/arduino.git
댓글 없음:
댓글 쓰기