*-
* Free/Libre Near Field Communication (NFC) library
*
* Libnfc historical contributors:
* Copyright (C) 2009 Roel Verdult
* Copyright (C) 2009-2015 Romuald Conty
* Copyright (C) 2010-2012 Romain Tartière
* Copyright (C) 2010-2013 Philippe Teuwen
* Copyright (C) 2012-2013 Ludovic Rousseau
* Additional contributors:
* See AUTHORS file
-*
libnfc 是一个允许用户空间应用程序访问 NFC 设备的库。
官方网站是:http://www.nfc-tools.org/
官方论坛网站是:http://www.libnfc.org/community/
官方开发站点是:https://github.com/nfc-tools/libnfc
重要提示:此文件涵盖 POSIX 系统,对于 Windows,请阅读 README-Windows.md
一些 NFC 驱动程序依赖于第三方软件:
pn53x_usb 和 acr122_usb:
acr122_pcsc:
个人计算机控制中心:
回归测试套件依赖于cutter框架:http://cutter.sf.net
注意:如果直接从存储库的 git 克隆工作,则需要首先生成一些文件。为此,请运行autoreconf -vis
或者使用打包版本的 .tar.bz2 版本(已包含 ./configure):https://github.com/nfc-tools/libnfc/releases/
构建应该像运行这些命令一样简单:
./configure
make
要使用特定驱动程序进行构建,请参阅./configure --help
中详细说明的选项--with-drivers=...
。
make install
您可能需要向您的用户授予驱动您的设备的权限。在GNU/Linux系统下,如果你使用udev,你可以使用提供的udev规则。例如在 Debian、Ubuntu 等下。
sudo cp contrib/udev/93-pn53x.rules /lib/udev/rules.d/
在FreeBSD下,如果使用devd,还有一个规则文件:contrib/devd/pn53x.conf。
为了更改库的默认行为,libnfc 使用位于 sysconfdir 中的配置文件(如提供给 ./configure 的那样)。
源中提供了示例注释文件:libnfc.conf.sample
如果您使用以下方式编译:
./configure --prefix=/usr --sysconfdir=/etc
您可以创建配置目录并复制示例文件:
sudo mkdir /etc/nfc
sudo cp libnfc.conf.sample /etc/nfc/libnfc.conf
要配置多个设备,您可以修改 libnfc.conf 或在 nfc/devices.d 目录中为每个设备创建一个文件:
sudo mkdir -p /etc/nfc/devices.d
printf 'name = "My first device"nconnstring = "pn532_uart:/dev/ttyACM0"n' | sudo tee /etc/nfc/devices.d/first.conf
printf 'name = "My second device"nconnstring = "pn532_uart:/dev/ttyACM1"n' | sudo tee /etc/nfc/devices.d/second.conf
您可以使用以下环境变量在运行时覆盖某些配置选项:
LIBNFC_DEFAULT_DEVICE=
: LIBNFC_DEFAULT_DEVICE=pn532_uart:/dev/ttyACM0
将使用 /dev/ttyACM0 上的 pn532 作为默认设备LIBNFC_DEVICE=
将忽略配置文件中的所有设备并仅使用变量中定义的设备LIBNFC_AUTO_SCAN=
覆盖配置文件中的allow_autoscan
选项LIBNFC_INTRUSIVE_SCAN=
覆盖配置文件中的allow_intrusive_scan
选项LIBNFC_LOG_LEVEL=<0|1|2|3>
覆盖配置文件中的log_level
选项要获取已识别设备的连接字符串,您可以使用nfc-scan-device
: LIBNFC_AUTO_SCAN=true nfc-scan-device
将显示所有找到的设备的名称和连接字符串。
要报告错误,请访问 https://github.com/nfc-tools/libnfc/issues 并填写错误报告表。
如果您有疑问、意见,我们鼓励您在开发者社区中发布:http://www.libnfc.org/community
请确保包括:
libnfc 的版本
有关您的系统的信息。例如:
以及您认为相关的任何其他内容。
已激活调试的跟踪。
通过调试重现错误,例如:
$ nfc-list -v
运行它作为:
$ LIBNFC_LOG_LEVEL=3 nfc-list -v
如何重现该错误。
请包含一个展示该行为的简短测试程序。
作为最后的手段,您还可以提供指向更大块的指针
可以下载的软件。
如果错误是崩溃,则打印出确切的文本
当事故发生时。
进一步的信息(例如堆栈跟踪)可能有用,但是
没有必要。
补丁可以发布到 https://github.com/nfc-tools/libnfc/issues
如果补丁修复了错误,通常最好包含“如何报告错误”中描述的所有信息。
如果 libnfc 无法检测到您的 Touchatag 或 ACR122 设备,请确保 PCSC-lite 守护程序 ( pcscd
) 已安装并正在运行。
如果 PCSC-lite 守护程序无法检测到您的 Touchatag 或 ACR122 设备( pcsc_scan
看不到任何内容),请尝试删除 libccid 的虚假固件检测:编辑 libccid_Info.plist 配置文件(通常为/etc/libccid_Info.plist
)并找到
,将
值改为0x0004
以允许伪造设备并重新启动 pcscd 守护进程。
使用带有 libnfc 且不带标签的 ACR122 设备(例如,使用 NFCIP 模式或卡模拟)需要另一个 PCSC-lite 调整:您需要允许使用 CCID Exchange 命令。为此,编辑libccid_Info.plist
配置文件(通常为/etc/libccid_Info.plist
)并找到
,将
值转换为0x0001
以允许 CCID 交换或0x0005
以允许CCID 交换和伪造设备(参见前面的评论)并重新启动 pcscd 守护进程。
警告:如果您使用 ACS CCID 驱动程序 (acsccid),配置文件位于以下位置: /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist
Libnfc 不能与 SCL3711 的 PCSC 专有驱动程序同时使用。两种可能的解决方案:
从 Linux 内核版本 3.1 开始,为了使用 libnfc,不得加载一些内核模块:“nfc”、“pn533”和“pn533_usb”。为了防止内核自动加载这些模块,您可以在 modprobe conf 文件中将它们列入黑名单。该文件在 libnfc 存档中提供:
sudo cp contrib/linux/blacklist-libnfc.conf /etc/modprobe.d/blacklist-libnfc.conf
Libnfc 可以与 bR500 和 R502 的 PCSC 专有驱动程序配合使用,该驱动程序已在大多数 Linux 设置上可用。要激活 PCSC 支持: ./configure --with-drivers=pcsc
。已知工作的读者:
这些读卡器自 v1.4.25 起受到 CCID 支持,请确保您的 CCID 驱动程序版本高于或等于 1.4.25。
在 MacOS 上,您可以使用以下命令检查 CCID 版本,如果需要,您可以从 https://github.com/martinpaljak/osx-ccid-installer/releases 安装最新的 CCID 驱动程序
grep -A 1 CFBundleShortVersionString /usr/local/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist
在Linux上,您可以使用以下命令检查您的CCID版本,如果需要,您可以从https://ccid.apdu.fr/安装最新的CCID驱动程序
grep -A 1 CFBundleShortVersionString /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
FeliCa 是索尼公司的注册商标。 MIFARE 是恩智浦半导体的商标。 Jewel Topaz 是 Innovision Research & Technology 的商标。所有其他商标均为其各自所有者的财产。