我刚刚买了一个新的 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
我解决了这个问题!!!!
放上卖家从aliexpress.com发来的软件包清单(我是从aliexpress.com买的ACR122U-A9) apt-get install pcsc-tools apt-get install pcscd apt-get install libacsccid1 apt-get install --reinstall libpcsclite1
将 libnfc-1.7.1.tar 档案解压到磁盘根目录 /
从发行版存储库安装 libusb-dev 包
我们编辑文件/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; } */
执行./configure --prefix=/usr --sysconfdir=/etc --with-drivers=acr122_pcsc,acr122_usb,acr122s,arygon
确保配置正确
选定的驱动程序:acr122_pcsc......是acr122_usb.......是acr122s..........是arygon...........是pn53x_usb........否pn532_uart.......否pn532_spi.......否pn532_i2c........否
如果一切顺利,请
如果一切正常,请进行安装
我们可以为libnfc.so的位置指定一个明确的路径export LD_LIBRARY_PATH=/usr/lib
编辑文件:
/etc/modprobe.d/黑名单-libnfc.conf
应为以下内容,添加/更改
#黑名单 nfc 黑名单 pn533 黑名单 pn533_usb
- 执行
modprobe nfc
pcscd - 应该关闭 killall -9 pcscd
如果 lsmod | grep pn bang 的输出中有内容,modprobe pn533_usb -r 应该为空 lsmod | grep pn