2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Windows11 × WSL2でFeliCaを使えるようにする

Posted at

はじめに

単にWindowsでFeliCaを使いたいというだけであればそもそもWSLを使う必要自体が無いのですが、

  • RaspberryPiなどLinux機で使う予定のシステムをWindowsで開発する場合
  • 現にLinuxで動いているシステムをWindowsに移植する場合

などの状況もあり得るかと思います。

Windows11×WSL2ではUSBデバイスの利用がサポートされており、丁寧な公式ドキュメントも用意されています。
その上でこの記事では自分が詰まったところを中心に書いていきたいと思います。

動作を確認した環境

  • OS : Windows 11
  • WSLで使用したディストリビューション : Ubuntu 20.04
  • カードリーダー : Sony RC-S330

FeliCaリーダーのドライバのインストール

WSLで使う予定とはいえまずは普通にドライバのインストールを行わないとこの後の工程で認識すらされないため、ソニー公式サイトの指示に従ってドライバをインストールします。

WSLのインストール

公式ドキュメント :
https://docs.microsoft.com/ja-jp/windows/wsl/setup/environment

これからWSLおよびUbuntuの準備をする場合は上記を参考に作業を進めるのが良いと思います。なお インストールは管理者権限でおこなってください

WSLでUSBデバイスを使えるようにする

公式ドキュメント :
https://docs.microsoft.com/ja-jp/windows/wsl/connect-usb

基本的には上記のドキュメントの通りに作業を進めます。

なお、ここから先の工程は 管理者として実行 する箇所が大半を占めます。
PowerShellを管理者として起動するのを忘れないでください。できれば管理者権限のあるアカウントで作業をするのが無難ですが、その都度パスワードを入力しても一応可能です。逆に 管理者権限を一切使えない場合は現状WSLでUSBを使うことはできないかと思います。

失敗しそうな箇所

usbipd wsl listを実行してもFeliCaリーダーが見つからない

FeliCaリーダーのドライバのインストールを忘れている可能性が高いです。

usbipd wsl attach --busid <busid>が失敗する

様々な原因が考えられます。

WSLが起動していない

別のPowerShellを立ち上げるなどの方法でWSLを実行してください。

対象となるディストリビューションが無い

「現に今WSLでubuntuを使っているからそんなはずはない」と思うかもしれませんが、WSLのディストリビューションはユーザごとに独立しており共有できないため例えば一般ユーザのアカウントでubuntuをインストールした場合にこの状況になります。

一度

wsl --list --verbose

を実行して、もしそこにubuntuがなければインストールしてください。
あるいは一般ユーザで使っていたディストリビューションをどうしてもそのまま使いたいという場合は下記のリンクを参考に一般ユーザからのエクスポートおよび管理者アカウントへのインポートをおこなってください。

ファイアウォールでブロックされている

この場合はファイアウォールの設定を確認するようメッセージが表示されます。usbipdはTCP通信で3240番ポートを使うため、必要に応じてセキュリティソフトの設定を変更してください。

usbipd wsl attach --busid <busid>
でエラーが出なくなればここまではおそらく大丈夫です。

(ubuntu側)lsusbの結果を確認する

うまく行っていれば接続されているUSBデバイスの一覧にFeliCaリーダーが表示されます。
これでWSL側からUSBデバイスを使用する準備ができました。

Felicaリーダーの動作確認

ここから先は主にubuntu側での作業になります。

nfcpyを使って動作確認をします。

nfcpy :
https://nfcpy.readthedocs.io/en/latest/topics/get-started.html

おそらくpython3自体は既にインストールされていると思うのでnfcpyをインストールします。
pip install -U nfcpy

次に

python -m nfc

を実行します。おそらくFeliCaリーダーへのアクセスに失敗すると思いますが、エラーメッセージの中に次に実行すべきコマンドが書かれています。

注:下記は公式ドキュメントの引用です。実際には機種ごとにベンダーIDやプロダクトIDが異なるので必ずご自身のターミナルに表示されているコマンドを実行してください

(略)
-- it's better to add the device to the 'plugdev' group
   sudo sh -c 'echo SUBSYSTEM==\"usb\", ACTION==\"add\", ATTRS{idVendor}==\"04e6\", ATTRS{idProduct}==\"5591\", GROUP=\"plugdev\" >> /etc/udev/rules.d/nfcdev.rules'
   sudo udevadm control -R # then re-attach device
(略)

ここで書かれているsudo...のコマンドを2つ実行すれば良いのですが、自分が試したときはsudo udevadm control -Rを実行したときにエラーが発生しましたが

sudo service udev restart

を実行してから改めてsudo udevadm control -Rを実行すればうまくいくと思います。

nfcpyを用いた動作確認用のプログラムについては上記の公式ドキュメントをはじめ検索するとたくさんある、かつFeliCaリーダーの機種に合わせて調べ直していただいた方が良いと思うので割愛させていただきます。

おわりに

WSL2でUSBデバイスがサポートされたとはいえ、正直言ってWSL2でFeliCaを使うのはかなりしんどいです。
ただもし自分以外にもやむを得ず今回のような構成でFeliCaを使わざるを得なくなった方がいれば少しでもお役に立てば幸いです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?