VPCS14AFJに入れたArchLinuxでNFCを使う

Pocket

https://www.sony.jp/support/vaio/products/vpc/vpcs14afj.html

SONYだった時代のVAIOである。これにはNFCのリーダ/ライタがついているので、これをなんとか使って遊べないかなぁといじってみた。

 

「ついている」というのは、埋め込まれているという事で、きちんと認識しているのかどうか確認。

$ lsusb | grep FeliCa
Bus 001 Device 005: ID 054c:02e1 Sony Corp. FeliCa S330 [PaSoRi]

認識しているようだ。さて、使えるか?

それらしいライブラリ(libnfc)を発見するも、使えたり使えなかったりして不安定。S330が搭載されているのにS360として認識したり、使い物にならない。なんとか原因究明出来ないかと四苦八苦したが断念。

 

別のライブラリを使う。libpafe。毎度の事だがaur死ぬほどお世話になってる、ありがとうございます。

yaourt -S libpafe したら最後に

To use PaSoRi
# udevadm control –reload-rules
Make ‘plugdev’ group and add your user

と言われたので、やっておく。

$ sudo udevadm control --reload-rules
$ sudo groupadd plugdev
$ sudo usermod -G plugdev tea

さて、テスト。

$ pasori_test
PaSoRi (RC-S330)
firmware version 1.30

きちんと認識しているようだし、firmware version拾えてるからPaSoRi自体は使えているっぽい。さて本当にFeliCaを読めるかどうかチェック。

$ felica_dump
# lpdump : Tue Nov 10 11:33:52 2015
# --- IDm info (FeliCa) ---
# Manufacture Date = 2013/2/15
〜以下略〜

以下データが連なる。データの中身についてはこれから調査する予定。この時使用したのは学生証だが、Suicaを置いた時には何も出力されなかった。これは不明。

ネットで拾ったSuica残高を表示するスクリプトを実行してみる。https://gist.github.com/Akkiesoft/6450764

rubyで書かれているのでlibpafe-rubyをインストールしておくのも忘れずに。aur何でも揃ってるなといった感想(こなみ)

$ ruby iccard-check.rb
1226

Suica普通に取り扱えてるみたいだし、felica_dumpに何かしらのバグがあったりするんだろうか。

 

よし、C++からlibpafe触って見るぞ。ネットで拾ったコードを元に書いてみる(ほぼパクリ)

#include <iostream>
#include <string>
#include <stdlib.h>
#include <unistd.h>
#include <stdint.h>

#include <iomanip>

#define hexformat(fill,wd) hex<<setfill(fill)<<setw(wd)

extern "C" {
#include <libpafe/libpafe.h>
#include <libpafe/pasori_command.h>
#include <libpafe/felica_command.h>
}

int main(){
using namespace std;
 pasori* p;

 if((p = pasori_open()) != NULL){
 felica* f;
 pasori_init(p);

 if((f = felica_polling(p, FELICA_POLLING_EDY, 0, 1)) != NULL) {
 uint8_t idm[16];

 felica_get_idm(f, idm);
 for(int n=0; n<7; n++){
 cout<<hexformat('0',2)<<unsigned(idm[n])<<":";
 }
 cout<<hexformat('0',2)<<unsigned(idm[7])<<endl;

 free(f);
 }
 }
 pasori_close(p);
 return 0;
}

これをコンパイルして実行してみる。

$ g++ ./felica.cpp -o ./felica /usr/lib/libpafe.so
$ ./felica
xx:xx:xx:xx:xx:xx:xx:xx

うまくいったっぽい。

 

あとはlibpafeのREADMEに書いてある事見ながら色々遊んでみようと思っているところ。FeliCaなカードは安く買えるっぽいので何かしら遊んでみよう。

 

普通に買うとRS-S330ってクソ高いのな、今。

お茶漬け

たまーに飲み屋で食べるお茶漬けめちゃウマい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です