5

我在使用 ACS 的 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

4

1 回答 1

10

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

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

    • 快速而简单的解决方法是禁用控制 ACR122U 的 PC/SC 守护程序。虽然这在 Mac OS X 上并不简单,但可以在Ludovic 的博客中找到详细的解释。
    • 或者,您可以通过编辑/usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist. 您需要搜索条目

      <key>ifdProductID</key>
      

      在此条目下方,有一个表单条目数组

      <string>0xXXXX</string>
      

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

      <key>ifdVendorID</key>
      

      它们都应该包含值 0x072F 并因此具有形式

      <string>0x072F</string>
      

      此外,您还需要删除下面的相应行

      <key>ifdFriendlyName</key>
      

      所有这些都可能以<string>ACS.

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

    ./configure --with-drivers=acr122_pcsc
    make
    

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

于 2017-08-11T10:19:51.393 回答