【问题标题】:Force PC/SC driver on ACR122U NFC reader在 ACR122U NFC 阅读器上强制 PC/SC 驱动程序
【发布时间】:2018-01-12 11:21:35
【问题描述】:

我在使用来自 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

【问题讨论】:

    标签: nfc rfid pcsc acr122 lib-nfc


    【解决方案1】:

    您似乎混合了将 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 的条目。删除这些行,但记住相对行号(即&lt;array&gt; 中的偏移量)。然后,也去掉

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

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

        <string>0x072F</string>
        

        另外,你还需要把下面的对应行去掉

        <key>ifdFriendlyName</key>
        

        它们都可能以&lt;string&gt;ACS开头。

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

      ./configure --with-drivers=acr122_pcsc
      make
      

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

    【讨论】:

    • 谢谢!这是我在互联网上找到的最丰富的答案。
    • 当我编辑/usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist(使用sudo)时,内容只是恢复为原始内容……有什么线索吗?
    • 您已经注意到 acr122_pcsc 驱动程序已被弃用,不再推荐使用。是否有首选方式将libnfc 与符合 CCID 的 PC/SC 设备一起使用? (参考:stackoverflow.com/q/61421966
    • @jared 不,因为 PC/SC 中不支持 NFC,任何 libnfc 到 PC/SC 或 CCID 接口都需要特定于任何(专有)读取器实现。
    • 如何编辑 .plit 文件?即使在禁用系统完整性之后,我也没有足够的权限来更改任何内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多