2011/11/23

[nfc]nfc-toolsをビルドしてみよう

libnfc用にnfc-toolsというものがある。
この中にlibnfc-llcpという名前があるので、これはきっとLLCPを実現してくれるのだろう。
ビルドしてみた。

環境は、Ubuntu 11.10 (64bit)だ。


$ ./configure

特に何もない。

$ make
libtool: Version mismatch error.  This is libtool 2.4 Debian-2.4-2ubuntu1, but the
libtool: definition of this LT_INIT comes from libtool 2.2.6b.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4 Debian-2.4-2ubuntu1
libtool: and run autoconf again.

インストールされているlibtoolは2.4-2ubuntu1だけど、定義が2.2.6bのものだ。
だからaclocal.m4を2.4-2ubuntu1のマクロで作り直してautoconfしなおせ、ということか。

さて・・・aclocal.m4を作り直す、というのは何すりゃいいんだろう?
http://www.fireproject.jp/feature/automake/basic/autotools.html
aclocal.m4は、configure.inを入力としてaclocalコマンドで生成されるようだ。
では、

$ aclocal
$ autoconf
$ ./configure
$ make

なんかできたみたい。

$ sudo make install

とりあえずインストールしておこう。
以下がコピーされたようだ。

libnfc-llcp.la
libnfc-llcp.so.0.0.0
libnfc-llcp.lai
libnfc-llcp.a


さて・・・何ができたのだろうか。

examples/nexus-get-tag/nexus-get-tag
tools/llcp-pdu-explain/llcp-pdu-explain
tools/llcp-test-client/llcp-test-client
tools/llcp-test-server/llcp-test-server

たぶん、こんなところだろう。
それっぽい名前の、nexus-get-tagを実行。

$ ./nexus-get/tag -o xxx
lt-nexus-get-tag: No NFC device found

ソースを見ると、libnfcを使ったデバイス検出に失敗しているようだ。
いまさら、libnfcはWindowsでしか試していなかったことに気づく。


libnfcをビルド。
ドライバは、pn53x_usbのみにしておこう。

$ ./configure --with-drivers='pn53x_usb'
$ make
$ sudo make install

$ cd examples
$ cd ./nfc-poll
libnfc-1.5.1/examples/.libs/lt-nfc-poll uses libnfc 1.5.1 (r1175)
No NFC device found.

すでにだめだったんだ。
そういえば、LinuxでUSBを使うときにはrulesファイルが必要だったと思う。
pn53x.rulesというファイルがあるから、これを使うと良さそうだ。

$ sudo cp pn53x.rules /etc/udev/rules.d/60-pn53x.rules
$ sudo service udev restart

パソリを挿し直して

$ ./nfc-poll
libnfc-1.5.1/examples/.libs/lt-nfc-poll uses libnfc 1.5.1 (r1175)
Connected to NFC reader: Sony / RC-S370/P - PN533 v1.48 (0x07)
NFC device will poll during 30000 ms (20 pollings of 300 ms for 5 modulations)
ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 00  04 
       UID (NFCID1): 3d  c5  73  b0 
      SAK (SEL_RES): 08 

やれやれ。
ちなみにこのときは、パソリの上にMifare 1Kのカードを置いている。


では、改めて。

$ ./nexus-get-tag  -o xxxx
lt-nexus-get-tag: Cannot activate MAC link

相手がいないってことですかね。
では、待ち受けるサーバだったらいいだろう。

$ ./llcp-test-server

待ち状態になった。
P906iを近づけると・・・

REASON: Timeout
lt-llcp-test-server: Cannot activate link

と出て、搬送波が出っぱなしになりながらもアプリ終了。。。
もう一度実行すると、固まってkillせんといかんかった。
パソリを挿しなおさないと、もう復活できなかった。

 

まあ、何か動いてるってことはわかったので、いいや。
ここらへんで、NexusSとやりとりできてるってこともわかった。
http://www.libnfc.org/community/topic/444/solved-nfcdepinitiator-against-a-nexus-s/

試すことはできんが、うまくやればAndroid Beamができるんじゃなかろうか。
問題は「試すことはできん」というところなんだけどね・・・。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。