
Plattformunabhängige Near Field Communication (NFC)-Bibliothek
*-
libnfc ist eine Bibliothek, die Anwendungen im Userspace Zugriff auf NFC-Geräte ermöglicht.
Die offizielle Website ist nicht mehr verfügbar; eine Kopie kann über die WayBackMachine angesehen werden.
Das offizielle Forum ist nicht mehr verfügbar; eine Kopie kann über die WayBackMachine angesehen werden.
Die offizielle Entwicklungs-Website ist: https://github.com/nfc-tools/libnfc
Wichtiger Hinweis: Diese Datei behandelt POSIX-Systeme. Für Windows lesen Sie bitte README-Windows.md
Einige NFC-Treiber sind von Drittanbieter-Software abhängig:
pn53x_usb & acr122_usb:
acr122_pcsc:
pcsc:
Die Regressionstest-Suite hängt vom Cutter-Framework ab: http://cutter.sf.net
Hinweis: Wenn Sie direkt mit einem Git-Klon des Repository arbeiten, müssen einige Dateien zuerst generiert werden. Führen Sie dazu Folgendes aus:
autoreconf -vis
Alternativ verwenden Sie eine .tar.bz2-Version eines Paket-Releases (die bereits ./configure enthält): https://github.com/nfc-tools/libnfc/releases/
Der Build sollte so einfach sein wie das Ausführen der folgenden Befehle:
./configure
make
Um mit bestimmten Treiber(n) zu bauen, siehe die Option --with-drivers=..., die in ./configure --help beschrieben ist.
make install
Möglicherweise müssen Sie Ihrem Benutzer Rechte einräumen, um Ihr Gerät ansteuern zu können. Unter GNU/Linux-Systemen können Sie, falls Sie udev verwenden, die mitgelieferten udev-Regeln nutzen. z. B. unter Debian, Ubuntu usw.
sudo cp contrib/udev/93-pn53x.rules /lib/udev/rules.d/
Unter FreeBSD gibt es, falls Sie devd verwenden, ebenfalls eine Regeldatei: contrib/devd/pn53x.conf.
Um das Standardverhalten der Bibliothek zu ändern, verwendet libnfc eine Konfigurationsdatei, die sich in sysconfdir befindet (wie an ./configure übergeben).
Eine Beispiel-Datei mit Kommentaren ist in den Quellen verfügbar: libnfc.conf.sample
Wenn Sie mit folgendem Befehl kompiliert haben:
./configure --prefix=/usr --sysconfdir=/etc
können Sie das Konfigurationsverzeichnis anlegen und die Beispieldatei kopieren:
sudo mkdir /etc/nfc
sudo cp libnfc.conf.sample /etc/nfc/libnfc.conf
Um mehrere Geräte zu konfigurieren, können Sie entweder libnfc.conf ändern oder pro Gerät eine Datei in einem nfc/devices.d-Verzeichnis anlegen:
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
Sie können bestimmte Konfigurationsoptionen zur Laufzeit mithilfe der folgenden Umgebungsvariablen überschreiben:
LIBNFC_DEFAULT_DEVICE=<connstring>: LIBNFC_DEFAULT_DEVICE=pn532_uart:/dev/ttyACM0 verwendet pn532 auf /dev/ttyACM0 als StandardgerätLIBNFC_DEVICE=<connstring> ignoriert alle Geräte in den Konfigurationsdateien und verwendet nur das in der Variable definierte GerätLIBNFC_AUTO_SCAN=<true|false> überschreibt die Option allow_autoscan in der KonfigurationsdateiLIBNFC_INTRUSIVE_SCAN=<true|false> überschreibt die Option allow_intrusive_scan in der KonfigurationsdateiLIBNFC_LOG_LEVEL=<0|1|2|3> überschreibt die Option log_level in der KonfigurationsdateiUm den Connstring eines erkannten Geräts zu erhalten, können Sie nfc-scan-device verwenden: LIBNFC_AUTO_SCAN=true nfc-scan-device zeigt die Namen und Connstrings aller gefundenen Geräte an.
Um einen Fehler zu melden, besuchen Sie https://github.com/nfc-tools/libnfc/issues und füllen Sie ein Formular für Fehlerberichte aus.
Wenn Sie Fragen oder Anmerkungen haben, empfehlen wir Ihnen, diese in der Entwickler-Community zu posten: http://www.libnfc.org/community
Bitte stellen Sie sicher, dass Sie Folgendes angeben:
Die Version von libnfc
Informationen über Ihr System. Beispielsweise:
Und alles andere, was Sie für relevant halten.
Ein Trace mit aktiviertem Debug.
Reproduzieren Sie den Fehler mit Debug, z. B. wenn es Folgendes war:
$ nfc-list -v
führen Sie es wie folgt aus:
$ LIBNFC_LOG_LEVEL=3 nfc-list -v
Wie der Fehler zu reproduzieren ist.
Bitte fügen Sie ein kurzes Testprogramm bei, das das Verhalten zeigt.
Als letzte Möglichkeit können Sie auch einen Verweis auf ein größeres
Softwarepaket angeben, das heruntergeladen werden kann.
Wenn der Fehler ein Absturz war, den genauen Text, der ausgegeben wurde,
als der Absturz auftrat.
Weitere Informationen wie Stack-Traces können nützlich sein, sind
aber nicht erforderlich.
Patches können unter https://github.com/nfc-tools/libnfc/issues eingereicht werden
Wenn der Patch einen Fehler behebt, ist es in der Regel eine gute Idee, alle Informationen aufzunehmen, die unter „Fehler melden" beschrieben sind.
Wenn Ihr Touchatag- oder ACR122-Gerät von libnfc nicht erkannt wird, stellen Sie sicher, dass der PCSC-lite-Daemon (pcscd) installiert ist und ausgeführt wird.
Wenn Ihr Touchatag- oder ACR122-Gerät vom PCSC-lite-Daemon nicht erkannt wird (pcsc_scan sieht nichts), versuchen Sie, die Erkennung unechter Firmware von libccid zu entfernen: Bearbeiten Sie die Konfigurationsdatei libccid_Info.plist (normalerweise /etc/libccid_Info.plist), suchen Sie <key>ifdDriverOptions</key> und ändern Sie den Wert <string>0x0000</string> in 0x0004, um unechte Geräte zuzulassen, und starten Sie den pcscd-Daemon neu.
Die Verwendung eines ACR122-Geräts mit libnfc und ohne Tag (z. B. für NFCIP-Modi oder Kartenemulation) erfordert eine weitere PCSC-lite-Anpassung: Sie müssen die Verwendung des CCID-Exchange-Befehls erlauben. Bearbeiten Sie dazu die Konfigurationsdatei libccid_Info.plist (normalerweise /etc/libccid_Info.plist), suchen Sie <key>ifdDriverOptions</key> und ändern Sie den Wert <string>0x0000</string> in 0x0001, um CCID-Exchange zu erlauben, oder in 0x0005, um CCID-Exchange und unechte Geräte zu erlauben (vgl. vorherige Anmerkung), und starten Sie den pcscd-Daemon neu.
Warnung: Wenn Sie ACS-CCID-Treiber (acsccid) verwenden, befindet sich die Konfigurationsdatei etwa unter: /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist
Libnfc kann nicht gleichzeitig mit dem proprietären PCSC-Treiber des SCL3711 verwendet werden. Zwei mögliche Lösungen:
Seit Linux-Kernel-Version 3.1 dürfen einige Kernel-Module nicht geladen sein, um libnfc verwenden zu können: „nfc", „pn533" und „pn533_usb". Um zu verhindern, dass der Kernel diese Module automatisch lädt, können Sie sie in einer modprobe-Konfigurationsdatei auf die Blacklist setzen. Diese Datei ist im libnfc-Archiv enthalten:
sudo cp contrib/linux/blacklist-libnfc.conf /etc/modprobe.d/blacklist-libnfc.conf
Libnfc kann mit dem proprietären PCSC-Treiber von bR500 und R502 verwendet werden, der auf den meisten Linux-Systemen bereits verfügbar ist.
Um die PCSC-Unterstützung zu aktivieren: ./configure --with-drivers=pcsc.
Bekannte funktionierende Leser:
Diese Leser werden seit v1.4.25 von CCID unterstützt. Stellen Sie sicher, dass Ihre CCID-Treiberversion höher oder gleich 1.4.25 ist.
Unter MacOS können Sie Ihre CCID-Version mit dem folgenden Befehl überprüfen. Falls erforderlich, können Sie den neuesten CCID-Treiber von https://github.com/martinpaljak/osx-ccid-installer/releases installieren.
grep -A 1 CFBundleShortVersionString /usr/local/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist
Unter Linux können Sie Ihre CCID-Version mit dem folgenden Befehl überprüfen. Falls erforderlich, können Sie den neuesten CCID-Treiber von https://ccid.apdu.fr/ installieren.
grep -A 1 CFBundleShortVersionString /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
FeliCa ist eine eingetragene Marke der Sony Corporation. MIFARE ist eine Marke von NXP Semiconductors. Jewel Topaz ist eine Marke von Innovision Research & Technology. Alle anderen Marken sind Eigentum ihrer jeweiligen Inhaber.