アットウィキロゴ
豚吐露@wiki
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

豚吐露@wiki

RC-S380

最終更新:

ohden

- view
管理者のみ編集可

SONY RC-S380

Sony RC-S380/S Vendor: 054c, Product: 06c1, Device: 1.11
Raspberry Pi OS arm64 2026-04-14
Python 3.13.5


SONY製NFC Reader/Writer PaSoRi RC-S380 をRaspberryPiで利用する方法の備忘録。
他のNFC Readerも似たようなもんかと。
ただ、RasPiとの接続だとRC-S380が絶対的に安心らしい。後継機種の PaSoRi RC-S300/S1 も大丈夫なんじゃないかと思ってる。

接続状況確認

RC-S380/Sを接続し、どのような状態かcheckする。
とりあえず、lsusbで認識されてるかを確認。
$ lsusb | grep -i sony
Bus 001 Device 002: ID 054c:06c1 Sony Corp. RC-S380/S

まぁ、表示されていればok。

dmesgを見ると以下のように出力されてた。
lessに渡して`S380`や`SONY`で探すと見つかる。
$ dmesg | less
[ 1.000301] usb 1-1: New USB device found, idVendor=054c, idProduct=06c1, bcdDevice= 1.11
[ 1.000306] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=4
[ 1.000308] usb 1-1: Product: RC-S380/S
[ 1.000310] usb 1-1: Manufacturer: SONY
[ 1.000312] usb 1-1: SerialNumber: 1014799

nfcpyの導入

利用libraryの導入
$ sudo apt update
$ sudo apt install -y libusb-dev python3-pip
python3-pip is already the newest version (25.1.1+dfsg-1+rpt1).
python3-pip set to manually installed.
Installing:
  libusb-dev

Installing dependencies:
  libusb-0.1-4

Summary:
  Upgrading: 0, Installing: 2, Removing: 0, Not Upgrading: 5
  Download size: 48.9 kB
  Space needed: 329 kB / 219 GB available

Get:1 http://deb.debian.org/debian trixie/main arm64 libusb-0.1-4 arm64 2:0.1.12-35+b1 [16.4 kB]
Get:2 http://deb.debian.org/debian trixie/main arm64 libusb-dev arm64 2:0.1.12-35+b1 [32.5 kB]
Fetched 48.9 kB in 0s (113 kB/s)
Selecting previously unselected package libusb-0.1-4:arm64.
(Reading database ... 120492 files and directories currently installed.)
Preparing to unpack .../libusb-0.1-4_2%3a0.1.12-35+b1_arm64.deb ...
Unpacking libusb-0.1-4:arm64 (2:0.1.12-35+b1) ...
Selecting previously unselected package libusb-dev.
Preparing to unpack .../libusb-dev_2%3a0.1.12-35+b1_arm64.deb ...
Unpacking libusb-dev (2:0.1.12-35+b1) ...
Setting up libusb-0.1-4:arm64 (2:0.1.12-35+b1) ...
Setting up libusb-dev (2:0.1.12-35+b1) ...
Processing triggers for libc-bin (2.41-12+rpt1+deb13u2) ...
Processing triggers for man-db (2.13.1-1) ...

$ pip install nfcpy --break-system-packages
Defaulting to user installation because normal site-packages is not writeable
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting nfcpy
  Downloading https://www.piwheels.org/simple/nfcpy/nfcpy-1.0.4-py3-none-any.whl (187 kB)
Collecting libusb1 (from nfcpy)
  Downloading https://www.piwheels.org/simple/libusb1/libusb1-3.3.1-py3-none-any.whl (67 kB)
Collecting ndeflib (from nfcpy)
  Downloading https://www.piwheels.org/simple/ndeflib/ndeflib-0.3.3-py2.py3-none-any.whl (56 kB)
Collecting pydes (from nfcpy)
  Downloading https://www.piwheels.org/simple/pydes/pyDes-2.0.1-py2.py3-none-any.whl (9.6 kB)
Requirement already satisfied: pyserial in /usr/lib/python3/dist-packages (from nfcpy) (3.5)
Installing collected packages: pydes, ndeflib, libusb1, nfcpy
Successfully installed libusb1-3.3.1 ndeflib-0.3.3 nfcpy-1.0.4 pydes-2.0.1

udevの設定変更
NFC Readerの利用を一般userでも使えるよう修正
vi使って、以下のfileを新規作成。
idVendorとidProductは、lsusbなり、dmesgなりを確認。
$ echo 'SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="06c1", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/nfcdev.rules
SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="06c1", GROUP="plugdev"

claudeに聞いたらこっちの方を勧められた。詳細は後で調べよう。
$ echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="06c1", MODE="0666"' | sudo tee /etc/udev/rules.d/99-nfc.rules

ちゃんと書き込まれてることをcatで確認。
$ cat /etc/udev/rules.d/99-nfc.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="06c1", MODE="0666"

上記設定を有効にする。
$ sudo udevadm control --reload-rules
$ sudo udevadm trigger

動作確認
nfc readerを一度抜いて指し直す。
以下python用のcodeを作成。
$ vi ~/read_nfc.py
import nfc

def on_connect(tag):
    print(f"Tag detected: {tag}")
    return True

with nfc.ContactlessFrontend('usb') as clf:
    print("Waiting for tag...")
    clf.connect(rdwr={'on-connect': on_connect})

$ python3 read_nfc.py
Waiting for tag...

上記が表示されたら、何かNFCのカードなりタグなりをreaderに近付けると、以下のようにIDが表示される。
Tag detected: Type2Tag ID=D0EB8C5F

ここまで表示されたら、[NFC Reader]~[RaspberryPi]~[libusb]~[nfcpy]まで繋がったことが確認できる。

ちなみに、USB portにNFC Readerを接続死忘れてると、こんなerrorが出る。
Traceback (most recent call last):
  File "/home/s1n/wk/read_nfcpy/./read_nfc.py", line 28, in <module>
    with nfc.ContactlessFrontend('usb') as clf:
         ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
  File "/home/s1n/.local/lib/python3.13/site-packages/nfc/clf/__init__.py", line 76, in __init__
    raise IOError(errno.ENODEV, os.strerror(errno.ENODEV))
OSError: [Errno 19] No such device

node上からNFC Readerを使う

nfcpyをwrapするのがbetterっぽい。

nfc-pcscの導入 ※RC-S380では容易に使えない

今のところpc/scで認識できてない。この方法はダメかも。

以下のような感じで環境構築後、pcsc_scanしてみたが、S380が出てこない。
$ sudo apt install pcscd pcsc-tools libpcsclite-dev build-essential
$ npm i nfc-pcsc
$ sudo systemctl restart pcscd
$ sudo pcsc_scan

`/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist`の中身見てみたが、SONYのNFC Readerは、以下3 deviceしかlistに載ってない。
  • 054C:0D8F SONY FeliCa RC-S660/U
  • 054C:0DC8 SONY FeliCa RC-S300/S
  • 054C:0DC9 SONY FeliCa RC-S300/P

S380の設定足してbuildし直せばどうにかなるかもしれんらしいが...とりあえず、めんどくさそうなので他の手段を優先する。


更新日: 2026年05月28日 (木) 02時15分57秒

名前:
コメント:

すべてのコメントを見る
記事メニュー
最近更新されたスレッド
ウィキ募集バナー