nfc-tools / libnfc

Platform independent Near Field Communication (NFC) library
http://nfc-tools.org
GNU Lesser General Public License v3.0
1.69k stars 441 forks source link

Support for ACR1283L/U #727

Open cocus opened 4 months ago

cocus commented 4 months ago

Hi, I found this device and I'll like to use it hopefully with libnfc. I think this should be straightforward, but this particular device has 4 contact interfaces, one contactless, a keypad and a display. I certainly don't care at all about the display, keypad and the contact interfaces :). The ACR API PDF talks about how it works, but I'm not well versed in PCSC as to identify what should I do, or if it's way too different than the ACR122 that everyone seems to have available. I just did a cursory examination of the frames, the slot numbers for the PICC and such, and seem to be similar.

Adding this device as a new supported device on acr122_usb.c I get some activity, but it seems the PC_To_RDR_XfrBlock and RDR_To_PC_DataBlock return an error:

debug   libnfc.driver.acr122_usb    TX: 62 00 00 00 00 00 00 01 00 00 
debug   libnfc.driver.acr122_usb    RX: 80 00 00 00 00 00 00 42 fe 00 
debug   libnfc.driver.acr122_usb    ACR122 PICC Operating Parameters
debug   libnfc.driver.acr122_usb    TX: 6f 05 00 00 00 00 00 00 00 00 ff 00 51 00 00 
debug   libnfc.driver.acr122_usb    RX: 80 00 00 00 00 00 00 42 ff 00 
debug   libnfc.chip.pn53x   GetFirmwareVersion
debug   libnfc.driver.acr122_usb    TX: 6f 07 00 00 00 00 00 00 00 00 ff 00 00 00 02 d4 02 
debug   libnfc.driver.acr122_usb    RX: 80 02 00 00 00 00 00 02 81 00 63 00 
error   libnfc.driver.acr122_usb    PN532 didn't reply
error   libnfc.driver.acr122_usb    PN532 init failed, trying again...

I took it apart, and found that it has a MFRC531, and it's way too different than the PN53x (i.e. different set of commands, formats, etc.). This is the full command set of the MFRC531 (or the one publicly available): image image You think it'd be possible to adapt one of the lower layers (i.e. a pn53x.c like driver) for this? I didn't check if every available command matches the one of the pn53x series, but I can do that.

Thank you!