お茶漬けぶろぐ

VPCS14AFJに入れたArchLinuxでNFCを使う

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

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

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

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

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

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

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

yaourt -S libpafe したら最後に

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

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

[bash]
$ sudo udevadm control –reload-rules
$ sudo groupadd plugdev
$ sudo usermod -G plugdev tea
[/bash]

さて、テスト。

[bash]
$ pasori_test
PaSoRi (RC-S330)
firmware version 1.30
[/bash]

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

[bash]
$ felica_dump

lpdump : Tue Nov 10 11:33:52 2015

— IDm info (FeliCa) —

Manufacture Date = 2013/2/15

〜以下略〜
[/bash]

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

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

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

[bash]
$ ruby iccard-check.rb
1226
[/bash]

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

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

[cpp]
#include #include #include #include #include

#include

#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;
}
[/cpp]

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

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

うまくいったっぽい。

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

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

< 標準入出力からクリップボードを使う

ArchLinuxでLyra2REv2マイニング(CPU) >