(Windows) WebUSB로 Pasori 처리

결론

  • 드라이브를 일반 USB 드라이브(Winusb.sys)로 교체하면 됩니다.
  • 그러나 드라이버를 교체하기 전에 WebUSB를 사용할 필요가 있습니까?
  • 운영 환경


    OS : Windows 10 Home Edition
    NFC-Reader : Pasori - Sony RC-S380/P

    입문


    (Ubuntu) Webusb로 Pasori 처리의 후속(?)태그 요소의 표시 속성을 수정합니다.
    지난번에 Ubuntu에서 웹 USB를 이용한 Pasori 사용 방법을 검증했습니다.
    이번에는 Windows에서 WebUSB를 사용하여 Pasori를 사용할 수 있다는 검증입니다.

    WebUSB 부팅 기준


    Failed to claim interface 0: Device or resource busy를 읽었는데, 이런 일이 적혀 있었다.
    While this should allow you to use this device with WebUSB it is not likely useful as a long term solution because of the manual steps involved. WebUSB is designed for devices without built-in operating system drivers.
    구글 번역
    이렇게 하면 WebUSB가 이 장치를 사용할 수 있지만 수동 작업에서는 장기적인 해결 방안의 역할을 하지 못할 수 있습니다.WebUSB는 OS 드라이버가 내장되어 있지 않은 장치를 위해 설계되었습니다.
    이 정보만 믿으면 OS에 시스템 드라이버가 준비된 장치는 WebUSB로 이동할 수 없습니다.
    즉, 드라이버를 일반 드라이버로 전환하면 순조롭게 진행될 수 있다는 것이다.
    그래서 한번 해보기로 했어요.

    Zadig


    유니버설 드라이버로 변경한다고 하지만 어떻게 변경해야 할지 전혀 모르겠다.
    일반 드라이버로 전환하는 방법을 전혀 모르기 때문에 Zadig 도구를 사용하기로 했습니다.
    Zadig - USB driver installation made easy
    http://zadig.akeo.ie/
    [중요] 자디그의 사용을 스스로 책임지세요.본 보도를 참조하여 Zadig를 사용하면 어떤 문제가 발생하더라도 필자는 어떠한 책임도 지지 않습니다.
    또한 교체된 드라이브의 반환 방법에 대해서는 상세한 설명을 하지 않습니다.Windows 장치 관리자에 익숙하지 않은 사람(드라이버를 업데이트할 수 없는 사람)은 다음 작업을 수행하지 마십시오.
    Zadig를 시작하면 다음 화면이 표시됩니다.

    옵션에서 모든 장치를 나열하도록 선택합니다.
    그런 다음 드롭다운 상자에서 NFC Port/PaSoRi100 USB를 선택합니다.
    (디바이스 이름은 환경과 설치된 드라이버에 따라 다를 수 있습니다.)

    드라이브 부분이 WinUSB인지 확인한 다음 Replace Driver를 실행합니다.
    드라이버가 교체되었습니다.
    이후 WebUSB에서 FeliCa의 고유 ID ID m 읽기부터 프레젠테이션 페이지를 실행해 보십시오.
    내 환경에서 정상적으로 운행하다.
    수다스럽지만 자디그를 직접 사용하세요.

    크롬 설정


    참고로 크롬을 설정해야 할 때가 있습니다.
    그렇지 않으면chrome://flagsEnable new USB backend를 Enabled로 설정하고 크롬을 다시 시작하십시오.
    나는 특별히 설정할 필요가 없다고 생각한다.
    하지만chrome://flags의 "Enable new USB backend"를 "Enable"으로 설정하면 동작하지 않는 것 같습니다.(Chrome Ver.77.0.3865.75)

    드라이버 실행 취소


    하지만 심각한 문제가 있다.
    시도하지 않았기 때문에 단언할 수 없지만 드라이버를 바꿨기 때문에 Pasori가 Windows에서 할 수 있었던 일(전자신고와 차표 잔액검사) 등은 전혀 할 수 없을 것 같습니다.
    따라서 다른 도중에 사용할 때는 교체된 드라이버를 취소해야 한다.
    이것은 설비 관리자를 사용하여 완성한 것이다.
    장치 관리자를 열고 드라이버 업데이트를 선택하면 드라이버를 복구할 수 있습니다.

    하지만 자세한 설명은 하지 않으니 방법을 알아보세요.

    마지막


    나는 운전사를 바꾸는 것은 위험이 매우 높은 행위라고 생각한다.
    나는 Windows에 대해 잘 모르기 때문에 솔직히 이 방법이 안전한지 잘 모르겠다.
    하지만 우선 이 방법으로 웹USB로 Pasori를 이동할 수 있으니 소개해 주십시오.
    본인이 책임지고 사용하세요.
    하지만 드라이버를 교체하기 전에 WebUSB를 사용할 필요가 있나요...?
    실제 개발에서는 Windows 응용 프로그램을 솔직하게 만드는 것이 좋다고 생각합니다.
    결국 취미의 일환으로 Windows에서 사용해 보았을 뿐이라는 것을 깨달았으면 좋겠습니다.

    보충(2019/3/27 추서)


    최근(2019/03/27) 직접 작성한 방법에 따라 실험을 해 보았지만 Windows에서 실행할 수 없습니다.
    다음 오류가 발생하여 정상적으로 작업할 수 없습니다.

    원인은 불분명하지만 변한 건 크롬의 버전이 올라간 자리 때문에 그게 무슨 영향이 있나...
    이후 Windows 10의 업데이트를 추가했고 버전은 홈에서 프로로 바뀌었습니다. 저는 상관없다고 생각합니다.
    참고로 해결 방법은 다음과 같다.
    원본 코드(html)를 로컬로 저장하고 185줄에 있는 프로토콜 코드가 아닌productId를 지정합니다.
    ■ 원본 소스 코드
    WebUSB에서 FeliCa의 고유 ID ID m 읽기
    https://qiita.com/saturday06/items/333fcdf5b3b8030c9b05
    (여기서 프레젠테이션 페이지를 열어주세요)
    내 환경에서 이렇게 하는 것은 매우 순조롭다.(Chrome Version 73.0.3683.86)
    변경 전
    device = await navigator.usb.requestDevice({ filters: [{
      vendorId: 0x054c,
      protocolCode: 0x01
    }]});
    
    수정 후
    device = await navigator.usb.requestDevice({ filters: [{
      vendorId: 0x054c,
      productId: 0x06C3  
    }]});
    
    웹USB 연결 변경 사항이 있습니까?잘 모르겠어요.
    참고로 Linux는 시도하지 않았습니다.Linux에서도 같은 현상이 발생할 수 있습니다.

    Qiita의 글을 참고했습니다.


    WebUSB에서 FeliCa의 고유 ID ID m 읽기
    https://qiita.com/saturday06/items/333fcdf5b3b8030c9b05
    웹 USB를 사용하여 PaSoRi를 처리할 수 있는 OS를 요약해 보았습니다.
    https://qiita.com/attakei/items/95cb9b53fa3ede942b3e

    참고 자료


    Failed to claim interface 0: Device or resource busy
    https://stackoverflow.com/questions/47695160/failed-to-claim-interface-0-device-or-resource-busy
    Webusb: Access Denied trying to open printer on Windows
    https://stackoverflow.com/questions/47143148/webusb-access-denied-trying-to-open-printer-on-windows
    Windows 10에 FC 및 USB 연결
    http://dekunobuu.hatenablog.com/entry/2016/08/30/190315
    Zadig
    http://zadig.akeo.ie/
    댓글란에도 썼지만,'Enable new USB backend'를'Enabled'로 설정하면 동작하지 않는 일이 있는 것 같습니다.왜요...? 

    좋은 웹페이지 즐겨찾기