在 ACR122U NFC reader 上强制 PC/SC 驱动程序
Force PC/SC driver on ACR122U NFC reader
我在使用来自 ACS 的 ACR122U RFID 卡 reader 时遇到问题。我需要使用 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
您似乎混合了两种不同的选项来将 ACR122U 连接到 libnfc:
您可以使用 ACR122U 的直接 USB 驱动程序,libnfc.driver.acr122_usb
(这是您当前正在使用的)。在这种情况下,您需要确保 PC/SC 守护程序不会接管 reader 的控制权(因为一次只有一个实例可以访问 reader 的 USB 接口) .
- 快速而简单的修复方法是禁用控制 ACR122U 的 PC/SC 守护进程。虽然这在 Mac OS X 上不是直截了当的,但可以在 Ludovic's blog.
中找到详细的解释
或者,您可以通过编辑 /usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist
来阻止 PC/SC 守护程序控制特定的 reader。您需要搜索条目
<key>ifdProductID</key>
在此条目下方,有一个条目数组,格式为
<string>0xXXXX</string>
您将需要搜索包含值 0x2200、0x90CC 和 0x2214 的条目。删除那些行,但记住相对行号(即 <array>
中的偏移量)。然后,同样去掉
下对应的行
<key>ifdVendorID</key>
它们都应包含值 0x072F,因此具有形式
<string>0x072F</string>
另外,你还需要去掉
下面相应的行
<key>ifdFriendlyName</key>
所有这些都可能以 <string>ACS
开头。
或者,您可以为 ACR122U (libnfc.driver.acr122_pcsc
) 使用基于 PC/SC 的 libnfc 驱动程序。此驱动程序使用系统 PC/SC 守护程序访问 reader 而不是直接控制 USB 接口。要使此选项生效,您需要将 lib-nfc 配置为使用 PC/SC 驱动程序而不是直接 USB 驱动程序。当您自己编译 libnfc 时,您可以通过显式仅激活基于 PC/SC 的驱动程序来做到这一点:
./configure --with-drivers=acr122_pcsc
make
但是请注意,此驱动程序已被贬值,libnfc 作者强烈反对使用它。
我在使用来自 ACS 的 ACR122U RFID 卡 reader 时遇到问题。我需要使用 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
您似乎混合了两种不同的选项来将 ACR122U 连接到 libnfc:
您可以使用 ACR122U 的直接 USB 驱动程序,
libnfc.driver.acr122_usb
(这是您当前正在使用的)。在这种情况下,您需要确保 PC/SC 守护程序不会接管 reader 的控制权(因为一次只有一个实例可以访问 reader 的 USB 接口) .- 快速而简单的修复方法是禁用控制 ACR122U 的 PC/SC 守护进程。虽然这在 Mac OS X 上不是直截了当的,但可以在 Ludovic's blog. 中找到详细的解释
或者,您可以通过编辑
/usr/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist
来阻止 PC/SC 守护程序控制特定的 reader。您需要搜索条目<key>ifdProductID</key>
在此条目下方,有一个条目数组,格式为
<string>0xXXXX</string>
您将需要搜索包含值 0x2200、0x90CC 和 0x2214 的条目。删除那些行,但记住相对行号(即
下对应的行<array>
中的偏移量)。然后,同样去掉<key>ifdVendorID</key>
它们都应包含值 0x072F,因此具有形式
<string>0x072F</string>
另外,你还需要去掉
下面相应的行<key>ifdFriendlyName</key>
所有这些都可能以
<string>ACS
开头。
或者,您可以为 ACR122U (
libnfc.driver.acr122_pcsc
) 使用基于 PC/SC 的 libnfc 驱动程序。此驱动程序使用系统 PC/SC 守护程序访问 reader 而不是直接控制 USB 接口。要使此选项生效,您需要将 lib-nfc 配置为使用 PC/SC 驱动程序而不是直接 USB 驱动程序。当您自己编译 libnfc 时,您可以通过显式仅激活基于 PC/SC 的驱动程序来做到这一点:./configure --with-drivers=acr122_pcsc make
但是请注意,此驱动程序已被贬值,libnfc 作者强烈反对使用它。