Touchatag RFID Reader
Touchatag is a RFID Reader
Touchatag is a RFID tag reader from Touchatag. It is a cheap set consisting of an ACR122U USB tag reader and MiFare Ultralight RFID tags.
Remember: Always put a tag on the reader, otherwise you might encounter problems!
Check hardware version
lsusb shows the device:
Bus 003 Device 004: ID 072f:2200 Advanced Card Systems, Ltd
lsusb -v shows also the firmware version bcdDevice:
idVendor 0x072f Advanced Card Systems, Ltd idProduct 0x2200 bcdDevice 1.00
The Version this howto is about is the above ACS ACR122U PICC firmware 1.0.
First install this:
# pacman -S pcsclite pcsc-tools pcsc-perl ccid
The normal pcsclite package from the community repository uses libusb instead of udev, which causes problems when using the Touchatag reader. So we need to replace it with the pcsclite-libudev package from AUR:
# cd /tmp # wget https://aur.archlinux.org/packages/pcsclite-libudev/pcsclite-libudev.tar.gz # tar -xf pcsclite-libudev.tar.gz # cd pcsclite-libudev # makepkg # sudo pacman -U pcsclite-libudev-*.pkg.tar.xz
Install the ACS CCID PC/SC driver
Install the acsccid package from AUR:
# cd /tmp # wget https://aur.archlinux.org/packages/acsccid/acsccid.tar.gz # tar -xf acsccid.tar.gz # cd acsccid # makepkg # sudo pacman -U acsccid-*.pkg.tar.xz
With old versions of the ACS driver, you can get errors like these:
ifdhandler.c: In functie ‘IFDHControl’: ifdhandler.c:1304:8: fout: ‘PIN_PROPERTIES_STRUCTURE’ has no member named ‘wLcdMaxCharacters’ ifdhandler.c:1305:8: fout: ‘PIN_PROPERTIES_STRUCTURE’ has no member named ‘wLcdMaxLines’
In such a case, you can try commenting out those to lines in src/ifdhandler.c.
Try to scan your Touchatag:
You should get something like this:
PC/SC device scanner V 1.4.17 (c) 2001-2009, Ludovic Rousseau <firstname.lastname@example.org> Compiled with PC/SC lite version: 1.6.6 Scanning present readers... 0: ACS ACR122U 00 00 Mon Mar 21 18:16:07 2011 Reader 0: ACS ACR122U 00 00 Card state: Card inserted, Shared Mode, ATR: 3B BE 95 00 00 41 03 00 00 00 00 00 00 00 00 00 02 90 00 ATR: 3B BE 95 00 00 41 03 00 00 00 00 00 00 00 00 00 02 90 00 + TS = 3B --> Direct Convention + T0 = BE, Y(1): 1011, K: 14 (historical bytes) TA(1) = 95 --> Fi=512, Di=16, 32 cycles/ETU 125000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 156250 bits/s TB(1) = 00 --> VPP is not electrically connected TD(1) = 00 --> Y(i+1) = 0000, Protocol T = 0 ----- + Historical bytes: 41 03 00 00 00 00 00 00 00 00 00 02 90 00 Category indicator byte: 41 (proprietary format) Possibly identified card (using /usr/share/pcsc/smartcard_list.txt): 3B BE 95 00 00 41 03 00 00 00 00 00 00 00 00 00 02 90 00 touchatag SAM card
If you encounter a problem like this:
# pcscd -f ccid_usb.c:859:ccid_check_firmware() Firmware (1.00) is bogus! Upgrade the reader firmware or get a new reader. ifdhandler.c:104:IFDHCreateChannelByName() failed readerfactory.c:1050:RFInitializeReader() Open Port 200000 Failed (usb:072f/2200:libusb:006) readerfactory.c:233:RFAddReader() ACS ACR122U PICC Interface init failed.
The libnfc README suggests to do this:
If your Touchatag or ACR122 device fails being detected by PCSC-lite daemon (pcsc_scan doesn't see anything) then try removing the bogus firmware detection of libccid: edit libccid_Info.plist configuration file (usually /etc/libccid_Info.plist) and locate "<key>ifdDriverOptions</key>", turn "<string>0x0000</string>" value into 0x0004 to allow bogus devices and restart pcscd daemon. Warning: if you use ACS CCID drivers (acsccid), configuration file is located in something like: /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist
tagEventor runs in the background and executes scripts when a tag enters or leaves your tag reader.
Run tagEventor to test your installation:
# tagEventor -v 1
The scripts are located in /etc/gtagEventor. Read the tagEventor documentation on how to use them.