在ACR122U NFC读卡器上强制PC / SC驱动程序

时间:2017-08-04 13:30:05

标签: nfc rfid pcsc acr122 lib-nfc

我在使用ACR122U RFID读卡器时遇到问题。我需要使用PC / SC驱动程序将它连接到我的Mac。我从ACS网站安装了驱动程序并确认它正在运行。

但是,每当我使用nfc-list命令进行测试时,都会收到以下错误:

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

据我从谷歌搜索中了解到,Mac接管USB会阻止PC / SC使用该设备,但我怎样才能强制计算机使用PC / SC驱动程序代替默认Apple USB?

PS:我已经安装了libusb

1 个答案:

答案 0 :(得分:6)

您似乎混合了两种不同的选项,用于将ACR122U连接到libnfc:

  1. 您可以使用ACR122U的直接USB驱动程序libnfc.driver.acr122_usb(这是您当前使用的)。在这种情况下,您需要确保PC / SC守护程序不会接管读取器的控制权(因为一次只能有一个实例访问读取器的USB接口)。

    • 快速解决问题的方法是禁用控制ACR122U的PC / SC守护程序。虽然这在Mac OS X上并不简单,但可以在Ludovic's blog
    • 中找到详细说明
    • 或者,您可以通过编辑/usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist来阻止PC / SC守护程序控制该特定阅读器。您需要搜索条目

      <key>ifdProductID</key>
      

      在此条目下方,有一系列表格

      <string>0xXXXX</string>
      

      您需要搜索包含值0x2200,0x90CC和0x2214的条目。删除这些行,但记住相对行号(即<array>中的偏移量)。然后,还删除

      下的相应行
      <key>ifdVendorID</key>
      

      它们都应包含值0x072F,因此具有

      形式
      <string>0x072F</string>
      

      此外,您还需要删除

      下的相应行
      <key>ifdFriendlyName</key>
      

      所有这些都可能以<string>ACS开头。

  2. 或者,您可以将基于PC / SC的libnfc驱动程序用于ACR122U(libnfc.driver.acr122_pcsc)。该驱动程序使用系统PC / SC守护程序访问阅读器,而不是直接控制USB接口。要使此选项起作用,您需要将lib-nfc配置为使用PC / SC驱动程序而不是直接USB驱动程序。自己编译libnfc时,可以通过显式激活基于PC / SC的驱动程序来完成此操作:

    ./configure --with-drivers=acr122_pcsc
    make
    

    但是,请注意,此驱动程序已被弃用,libnfc作者强烈反对使用它。