うちにある初代PaSoRiことSC-S310だが、物が古すぎるのもあって公式ではWindows10をサポートしているドライバはなかったりする。(とはいえそれをインストールして使用することはできる。)
一方で、ChromeのWebUSB APIはWindowsにおいてはWinUSBを利用しているためか、Felicaのドライバを使用している状態ではどうも使用できなかった。また、そもそもデバイスにドライバが割り当てられていない状態(下図)でもやっぱり接続できない。
接続できなかった場合だが、navigator.usb.requestDevice
が無言のDOMExceptionを投げるだけなのでやっぱり質が悪い。 chrome://device-log/ を見てみると、Failed to open device: Access denied (insufficient permissions)のようなエラーが記録されているのが確認できるがわけがわからないよ。
で、パソリのドライバがインストールされていない状態であれば、WinUSBのドライバを自分で指定してやることでこの問題は解決できる。
WinUSB (Winusb.sys) のインストール – Windows drivers | Microsoft Docs
すでにPaSoRiのドライバがインストールされている環境ではこの手順ではWinUSBへ切り替えできないのでZadigとかでやればいいらしい。Windowsなんもわからん。
とりあえずこれでwebpasoriのサンプルが動くことが確認できた。
Linux/Macはあっさり動いたのになぁ…まあlibusbな制約か仕方ない…