LoginSignup
4
3

「WebUSBでFeliCaのIDmとMIFAREのIDも読み込む」を、RC-S300に対応させたよ

Last updated at Posted at 2023-06-16

前話

RC-S300が発売されて1年半経ちました。
まだまだ現場で現役だと思われる、RC-S380は/P(個人向け)は生産終了。
/S(業務用)は生産終了予定となっています。

以前、下の記事で、WebUSBでMIFAREを読みたいという記事を書きましたが、
もちろん当時はS380が現役S300は未発表だったため、S380のみの対応になっています。

S300は発売日当日に、手に入れたのですが、
パケットの仕様が全く異なるので、様子見というか断念。対応をお蔵入りしていました。

今回のお話

今回カードリーダを買い足そうとしたら、生産終了を知り、S300のWebUSBネタを再捜索していたところ、
以下の記事を見つけました。

大変参考にしながら元のS380とMIFAREに対応したものにくっつけてアップデートを行いました。
MIFARE対応の記事やネタは見当たらなかったので、またまた自力でパケット見たりしながら書きました。
思っていたより簡単で拍子抜けでしたが、これで動作していそうです。

// リクエストヘッダーは省略
// TypeAのプロトコルに切り替え
[0xff, 0x50, 0x00, 0x02, 0x04, 0x8f, 0x02, 0x00, 0x03, 0x00]
// IDを取得
[0xff, 0xCA, 0x00, 0x00]

検証中に発生した事項ですが、動作したままほっておくと、
なぜかカードを検出しなくなることがあるようで原因不明です。
知っている人いたらコメントください。

アップデート内容

  • RC-S300に対応
  • RC-S300でのMIFAREのUID読み取りにも対応
  • ペアリング済みのリーダーがある場合、ダイアログを出さないように変更
  • ほか細かいコード修正

技術的メモ

  • RC-S380と、RC-S300は全くの別物。APIも違うので注意
  • AndroidとRC-S300の組み合わせでは、バッファーINが分割で受け取れない、1回で受け取る必要あり。
  • RC-S300はポーリング中LEDが点滅し続けるので、改札みたいに常に待ち受けるようなシステムを検討す場合は、LEDを隠した方がいい(別の機器を検討)

対応状態

機種 カード
RC-S380(S) FeliCa MIFARE
RC-S300(S) FeliCa MIFARE

検証済み機器

  • Windows 10 Chrome 114.0.5735.199
  • Android 10 801SO Chrome 114.0.5735.196

ソースコード

参考情報

RC-S300の対応については、
https://sakura-system.com/?p=2892 の記事と記事中で公開しているライブラリを参考に修正しました。
カード内の情報の読み書きをしたい方、詳細の話は参考元の記事にしっかりと解説がありますので是非そちらをご覧ください。

さらに深みに行きたい方は、FeliCaの技術情報やJIS、ISOの規格を読むとカードとリーダーの通信方法など細かく書いてあります。

大規模に開発を検討している方、ちゃんとしたライブラリが欲しい方は、SONY公式に有料のものがあります。
開発試験用途なら無料です。(ライセンスの詳細は公式を見てください)

ほか参考にした記事

感想・あとがき

今回もパケット読んだり、数年前を思い出したり面白かったです。
リトルエンディアンってなんでこんなめんどいんでしょう。

技術的な話は今回あまりないので、記事が薄いですね。
追加してほしい情報や、間違っていることがあればコメントいただければと思います。

4
3
1

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
4
3