ACR122 NFC 阅读器不适用于 libnfc ubuntu

ACR122 NFC 阅读器不适用于 libnfc ubuntu

我刚刚买了一个新的 ACR122U-A9 nfc 读取器,需要在 ubuntu 18.10 上使用 libnfc 进行设置。它需要与 libnfc 配合使用,因为 mfoc 与之交互(如果有一种方法可以在不使用 libnf 的情况下使用 mfoc,那就太好了!该解决方案也会对我有帮助!)安装 libnfc 1.7.1 并进行了几个小时的研究后,我仍然无法让它工作。每次我使用sudo nfc-list并且 pcscd 没有运行时,它都会给我以下错误:

nfc-list uses libnfc 1.7.1
error   libnfc.driver.acr122_usb    Unable to set alternate setting on USB interface (Connection timed out)
nfc-list: ERROR: Unable to open NFC device: acr122_usb:004:005

如果 pcscd 正在运行,则错误内容如下:

nfc-list uses libnfc 1.7.1
error   libnfc.driver.acr122_usb    Unable to set alternate setting on USB interface (Connection timed out)
nfc-list: ERROR: Unable to open NFC device: acr122_usb:004:007
nfc-list: ERROR: Unable to open NFC device: acr122_pcsc:ACS ACR122U 00 00

有时还会出现这种情况:

nfc-list uses libnfc 1.7.1
error   libnfc.driver.acr122_usb    Unable to set alternate setting on USB interface (Connection timed out)
nfc-list: ERROR: Unable to open NFC device: acr122_usb:004:007
error   libnfc.driver.acr122_pcsc   No ACR122 firmware received, Error: 80100016
nfc-list: ERROR: Unable to open NFC device: acr122_pcsc:ACS ACR122U 00 00

我从中读到的是:

  • libnfc 可以工作
  • 存在一些驱动程序问题
  • 有些东西阻碍了读者
  • 某物是 pcscd(根据互联网)

我已经做了以下事情:

  • nfc pn533 pn533_usb文件中的黑名单/etc/modprobe.d/blacklist-libnfc.conf
  • 停止 pcscd 守护进程
  • 使用以下方法手动删除上述驱动程序sudo modprobe -r <driver>
  • 从这里安装设备驱动程序:https://www.acs.com.hk/en/products/3/acr122u-usb-nfc-reader/
  • 重启我的笔记本电脑大约 100 次
  • 向 NFC 之神祈祷

有人能帮我吗?或者告诉我我做错了什么?提前谢谢!

附言:我以某种方式让它与 pcscd 一起工作,但由于我无法弄清楚如何让 mfoc 使用它(如果可能的话),所以它没用。

答案1

修复libnfc 驱动程序适用于此。点击此处是解决办法

为了使其工作 - 克隆 libnfc 驱动程序,然后删除此段落,如上面的提交中所示。
重新编译,它将与 ACR122U-A9 一起工作。

或者,不编辑代码,直接克隆即可GitHub 存储库

答案2

显然,ACR122U 有一些特殊之处,导致 Linux NFC 驱动程序与 CCID(芯片/智能卡接口)驱动程序冲突。

解决方法是,您可以卸载与该设备上的 NFC 芯片关联的 NFC 内核模块(PN533):

$ sudo rmmod pn533

如果出现此错误:rmmod: ERROR: Module pn533 is in use by: pn533_usb则执行以下操作:

sudo modprobe -r pn533_usb

现在运行pcsc_scan它应该识别您的设备:

Using reader plug'n play mechanism
Scanning present readers...
Waiting for the first reader... found one
Scanning present readers...
0: ACS ACR122U 00 00
 
Fri Mar 31 20:16:51 2023
 Reader 0: ACS ACR122U 00 00
  Event number: 0
  Card state: Card removed, 

使用我的 ACR122U NFC 阅读器(USB VID:0x072f,USB PID:0x2200)在 Ubuntu 22 上进行了测试,并且能够读取 NFC 标签。

原文出处来自这里:https://ludovicrousseau.blogspot.com/2013/11/linux-nfc-driver-conflicts-with-ccid.html

答案3

我解决了这个问题!!!!

  1. 放上卖家从aliexpress.com发来的软件包清单(我是从aliexpress.com买的ACR122U-A9) apt-get install pcsc-tools apt-get install pcscd apt-get install libacsccid1 apt-get install --reinstall libpcsclite1

  2. 将 libnfc-1.7.1.tar 档案解压到磁盘根目录 /

  3. 从发行版存储库安装 libusb-dev 包

  4. 我们编辑文件/libnfc-1.7.1/libnfc/drivers/acr122_usb.c,找到并注释掉这一行,应该有第430行:

/* res = usb_set_altinterface(data.pudh, 0); if (res < 0) { log_put(LOG_GROUP, LOG_CATEGORY, NFC_LOG_PRIORITY_ERROR, "无法在 USB 接口上设置备用设置 (%s)", _usb_strerror(res)); usb_close(data.pudh); // 我们无法使用指定的设备 goto free_mem; } */

  1. 执行./configure --prefix=/usr --sysconfdir=/etc --with-drivers=acr122_pcsc,acr122_usb,acr122s,arygon

  2. 确保配置正确

选定的驱动程序:acr122_pcsc......是acr122_usb.......是acr122s..........是arygon...........是pn53x_usb........否pn532_uart.......否pn532_spi.......否pn532_i2c........否

  1. 如果一切顺利,请

  2. 如果一切正常,请进行安装

  3. 我们可以为libnfc.so的位置指定一个明确的路径export LD_LIBRARY_PATH=/usr/lib

  4. 编辑文件:

/etc/modprobe.d/黑名单-libnfc.conf

应为以下内容,添加/更改

#黑名单 nfc 黑名单 pn533 黑名单 pn533_usb

  1. 执行

modprobe nfc

  1. pcscd - 应该关闭 killall -9 pcscd

  2. 如果 lsmod | grep pn bang 的输出中有内容,modprobe pn533_usb -r 应该为空 lsmod | grep pn

相关内容