当前位置: 首页 > 知识库问答 >
问题:

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

姬高扬
2023-03-14

我在使用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个答案

丌官盛
2023-03-14

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

>

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

    >

  • 快速和肮脏的修复是禁用控制ACR122U的PC/SC守护进程。虽然这在Mac OS X上并不直接,但在Ludovic的博客中可以找到详细的解释。
  • 或者,您可以通过编辑/usr/libexec/SmartCardServices/驱动程序/ifd-ccid.bundle/Contents/Info.plist来阻止PC/SC守护进程控制该特定读取器。你需要搜索入口

    <key>ifdProductID</key>
    

    在这个条目下面,有一个表单的条目数组

    <string>0xXXXX</string>
    

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

    <key>ifdVendorID</key>
    

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

    <string>0x072F</string>
    

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

    <key>ifdFriendlyName</key>
    

    它们都可能以

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

    ./configure --with-drivers=acr122_pcsc
    make
    

    然而,请注意,这个驱动程序已经贬值,libnfc作者强烈反对使用它。

  •  类似资料:
    • PC/SC-Proxy 可以让用户通过远程访问 PC/SC 设备。 PC/SC即个人计算机(Personal computer)/智能卡(Smart Card),它是为智能卡访问Windows平台(包括Windows2000)而定义的一种标准结构。

    • 我正在尝试使用Windows上的PC/SC API(winscard.dll)与ACS ACR122U NFC读卡器通信。 根据本文档,有一个伪APDU可用于读取读卡器固件版本: 有了读卡器中的卡,我就可以工作了:我调用,然后获取句柄,然后用句柄调用。我得到了一个答案,正如预期的那样。 但是,如果没有读卡器中的卡,如何实现这一点呢? 上述文件说: •如果标签已连接,则可通过“ACR122U PIC

    • 我正在尝试将APDU命令发送到读卡器本身,而不是智能卡。我使用的测试命令打开和关闭射频场。 如果我第一次连接到智能卡,该命令将通过SCardTransmit发送。但一旦射频场关闭,卡就会断开连接,我无法发送另一个APDU来打开射频场。 基本上有什么方法可以在没有卡的情况下通过pc/sc发送APDU。我想在读卡之前配置读卡器的某些部分。 提前谢谢。 -----编辑----- 正如FPGA战士提到的,

    • 我有一份spark流媒体工作,我正试图由spark-k8运营商提交。我始终保持重启策略。但是,手动删除驱动程序时,驱动程序不会重新启动。我的yaml: Spark版本:2.4.5 apiVersion:“sparkoperator.k8s.io/v1beta2” 我遵循的步骤: 通过kubectl apply-f示例/spark测试创建资源。亚马尔。Pod创建成功。手动删除驱动程序。 预期行为:将

    • Linux 显卡驱动程序编程人员参考手册发布。英特尔显卡开发部门与英特尔开放源代码技术中心在此荣幸宣布发布英特尔® 965 高速芯片组家族与英特尔® G35 高速芯片组图形控制器编程人员参考手册(属创意共有属性,其衍生作品未取得 3.0 美国许可)。这套手册共四卷,详细记录了生产和维护全套驱动程序所需硬件的各个部分,包括加速媒体编解码、2D 和 3D 图形。

    • 我试图弄清楚,在使用Tableau连接器SDK创建自定义JDBC连接器时,如何让Tableau识别我的JDBC驱动程序。当前,当Tableau加载我的自定义连接器时,我可以告诉驱动程序找不到,因为连接器中显示了一个链接,该链接显示: > 在图表日志中,我可以看到。包含我的驱动程序的jar文件通过搜索它们的名称来识别,它们显示在日志中。 日志环境部分摘录: 未识别的驱动程序屏幕截图显示下载驱动程序