*-
* 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 的商標。所有其他商標均為其各自所有者的財產。