OS を入れて、ACR-122U を繋ぐと...
あれ?
もう赤ランプが点いた。
え?これは認識している?前回は確か pcscd を入れないと点かなかったはず。
まぁ、いいか。
前回同様 pcscd を入れて、プログラムを動かしてみると...SCardEstablishContext は通りますがなぜか SCardListReaders が SCARD_E_NO_READERS_AVAILABLE を返してきます。なんで?認識してるんじゃぁないの?
ということで pcscd がどうなっているか見てみます。
pi@raspberrypi ~ $ sudo pcscd -f
00000000 ccid_usb.c:514:OpenUSBByName() Can't claim interface 1/4: -6
00001275 ifdhandler.c:117:CreateChannelByNameOrChannel() failed
00000665 readerfactory.c:972:RFInitializeReader() Open Port 0x200000 Failed (usb:072f/2200:libudev:0:/dev/bus/usb/001/004)
00000545 readerfactory.c:279:RFAddReader() ACS ACR122U PICC Interface init failed.
00000933 hotplug_libudev.c:379:HPAddDevice() Failed adding USB device: ACS ACR122U PICC Interface
あ、何か失敗してる。リーダがすでに何者かに使用されているようだ。誰だ?ということで fuser や lsof 使っても使ってるプロセスが出てこない。ググると OpenCT じゃね?という意見があったが残念なから OpenCT は入っていない。何だこれは! ということでもう少しググると見つけました。
neard というのがあるそうだ。「にあーど?」聞いたこと無いぞ...
とりあえず lsmod してみろとのことなのでしてみた。
pi@raspberrypi ~ $ lsmod
Module Size Used by
snd_bcm2835 21342 0
snd_pcm 93100 1 snd_bcm2835
snd_seq 61097 0
snd_seq_device 7209 1 snd_seq
snd_timer 23007 2 snd_pcm,snd_seq
snd 67211 5 snd_bcm2835,snd_timer,snd_pcm,snd_seq,snd_seq_device
pn533 23021 0
evdev 11000 4
nfc 64189 1 pn533
rfkill 22347 1 nfc
uio_pdrv_genirq 3666 0
uio 9897 1 uio_pdrv_genirq
するとあれ?nfc とか pn533 とかがいる!なんといつの間にかカーネルに NFC が組み込まれている?カーネル 3.10 からは neard という名称で NFC が組み込まれているらしい。
というわけでこのモジュールをロードしないようにブラックリストに載せて、リブート
pi@raspberrypi /etc/modprobe.d $ sudo touch raspi-blacklist.conf
pi@raspberrypi /etc/modprobe.d $ sudo vi raspi-blacklist.conf
blacklist pn533
blacklist nfc
すると、おー!動きました。めでたし、めでたし。
じゃなくて neard という新しいキーワードが出てきてしまった。まだまだ続きそうです...