I have trouble with using my ACR122U RFID card reader form ACS. I need to connect it to my Mac using the PC/SC driver. I installed the driver from the ACS website and confirmed that it's running.
However, whenever I test using the nfc-list
command, I get the following error:
nfc-list uses libnfc libnfc-1.7.1-189-g2869ae2
error libnfc.driver.acr122_usb Unable to claim USB interface (Permission denied)
nfc-list: ERROR: Unable to open NFC device: acr122_usb:020:002
As far as I've understood from googling is that it is the Mac taking over the USB that prevents PC/SC using the device, but how can I force the computer to use the PC/SC driver instead of the default Apple USB?
PS: I have installed libusb
You seem to be mixing two different options for connecting the ACR122U to libnfc:
You can either use the direct USB driver for the ACR122U, libnfc.driver.acr122_usb
(which is what you are currently using). In this case, you need to make sure that the PC/SC daemon does not take over control of the reader (since only one instance can access the USB interface of the reader at a time).
Alternatively, you could prevent the PC/SC daemon from taking control over that specific reader by editing /usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist
. You would need search for the entry
<key>ifdProductID</key>
Below this entry, there is an array of entries of the form
<string>0xXXXX</string>
You will need to search for entries containing the values 0x2200, 0x90CC, and 0x2214. Remove those lines, but remember the relative line number (i.e. the offset in the <array>
). Then, also remove the corresponding lines under
<key>ifdVendorID</key>
They should all contain the value 0x072F and thus have the form
<string>0x072F</string>
Moreover, you also need to remove the corresponding lines under
<key>ifdFriendlyName</key>
All of them will probably start with <string>ACS
.
Alternatively, you could use the PC/SC based libnfc driver for the ACR122U (libnfc.driver.acr122_pcsc
). This driver uses the system PC/SC daemon to access the reader instead of taking control over the USB interface directly. For this option to work, you need to configure lib-nfc to use the PC/SC driver instead of the direct USB driver. When you compile libnfc yourself, you could do this by explicitly activating only the PC/SC based driver:
./configure --with-drivers=acr122_pcsc
make
However, note that this driver has been depreciated and libnfc authors strongly discourage its use.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With