
Bibliothèque de communication en champ proche (NFC) indépendante de la plateforme
*-
libnfc est une bibliothèque qui permet aux applications de l'espace utilisateur d'accéder aux périphériques NFC.
Le site web officiel n'existe plus, consultez une copie via la WayBackMachine.
Le site du forum officiel n'existe plus, consultez une copie via la WayBackMachine.
Le site officiel de développement est : https://github.com/nfc-tools/libnfc
Remarque importante : ce fichier concerne les systèmes POSIX, pour Windows, veuillez lire README-Windows.md
Certains pilotes NFC dépendent de logiciels tiers :
pn53x_usb & acr122_usb :
acr122_pcsc :
pcsc :
La suite de tests de régression dépend du framework cutter : http://cutter.sf.net
Remarque : si vous travaillez directement à partir d'un clone git du dépôt, certains fichiers doivent d'abord être générés. Pour ce faire, exécutez
autoreconf -vis
Vous pouvez également utiliser une archive .tar.bz2 d'une version publiée (qui contient déjà ./configure) : https://github.com/nfc-tools/libnfc/releases/
La compilation devrait être aussi simple que d'exécuter ces commandes :
./configure
make
Pour compiler avec un ou plusieurs pilotes spécifiques, consultez l'option --with-drivers=... détaillée dans ./configure --help.
make install
Vous devrez peut-être accorder des permissions à votre utilisateur pour piloter votre périphérique. Sous les systèmes GNU/Linux, si vous utilisez udev, vous pouvez utiliser les règles udev fournies. p. ex. sous Debian, Ubuntu, etc.
sudo cp contrib/udev/93-pn53x.rules /lib/udev/rules.d/
Sous FreeBSD, si vous utilisez devd, il existe également un fichier de règles : contrib/devd/pn53x.conf.
Afin de modifier le comportement par défaut de la bibliothèque, libnfc utilise un fichier de configuration situé dans sysconfdir (tel que fourni à ./configure).
Un fichier d'exemple commenté est disponible dans les sources : libnfc.conf.sample
Si vous avez compilé en utilisant :
./configure --prefix=/usr --sysconfdir=/etc
vous pouvez créer le répertoire de configuration et copier le fichier d'exemple :
sudo mkdir /etc/nfc
sudo cp libnfc.conf.sample /etc/nfc/libnfc.conf
Pour configurer plusieurs périphériques, vous pouvez soit modifier libnfc.conf, soit créer un fichier par périphérique dans un répertoire 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
Vous pouvez remplacer certaines options de configuration à l'exécution à l'aide des variables d'environnement suivantes :
LIBNFC_DEFAULT_DEVICE=<connstring> : LIBNFC_DEFAULT_DEVICE=pn532_uart:/dev/ttyACM0 utilisera le pn532 sur /dev/ttyACM0 comme périphérique par défautLIBNFC_DEVICE=<connstring> ignorera tous les périphériques des fichiers de configuration et n'utilisera que celui défini dans la variableLIBNFC_AUTO_SCAN=<true|false> remplace l'option allow_autoscan du fichier de configurationLIBNFC_INTRUSIVE_SCAN=<true|false> remplace l'option allow_intrusive_scan du fichier de configurationLIBNFC_LOG_LEVEL=<0|1|2|3> remplace l'option log_level du fichier de configurationPour obtenir la connstring d'un périphérique reconnu, vous pouvez utiliser nfc-scan-device : LIBNFC_AUTO_SCAN=true nfc-scan-device affichera les noms et les connstrings de tous les périphériques trouvés.
Pour signaler un bogue, visitez https://github.com/nfc-tools/libnfc/issues et remplissez un formulaire de rapport de bogue.
Si vous avez des questions ou des remarques, nous vous encourageons à les publier dans la communauté des développeurs : http://www.libnfc.org/community
Veuillez vous assurer d'inclure :
La version de libnfc
Des informations sur votre système. Par exemple :
Et tout ce que vous pensez être pertinent.
Une trace avec le débogage activé.
Reproduisez le bogue avec le débogage, par exemple si c'était :
$ nfc-list -v
exécutez-le ainsi :
$ LIBNFC_LOG_LEVEL=3 nfc-list -v
Comment reproduire le bogue.
Veuillez inclure un court programme de test qui illustre le comportement.
En dernier recours, vous pouvez également fournir un lien vers un logiciel plus volumineux
qui peut être téléchargé.
Si le bogue était un plantage, le texte exact qui a été affiché
lors du plantage.
Des informations supplémentaires telles que les traces de pile peuvent être utiles, mais
ne sont pas nécessaires.
Les correctifs peuvent être soumis à https://github.com/nfc-tools/libnfc/issues
Si le correctif corrige un bogue, il est généralement judicieux d'inclure toutes les informations décrites dans « Comment signaler des bogues ».
Si votre périphérique Touchatag ou ACR122 n'est pas détecté par libnfc, assurez-vous
que le démon PCSC-lite (pcscd) est installé et en cours d'exécution.
Si votre périphérique Touchatag ou ACR122 n'est pas détecté par le démon PCSC-lite
(pcsc_scan ne voit rien), essayez alors de désactiver la détection de firmware non conforme
de libccid : modifiez le fichier de configuration libccid_Info.plist (généralement
/etc/libccid_Info.plist), localisez <key>ifdDriverOptions</key>, remplacez la
valeur <string>0x0000</string> par 0x0004 pour autoriser les périphériques non conformes, puis redémarrez
le démon pcscd.
Utiliser un périphérique ACR122 avec libnfc et sans étiquette (par ex. pour utiliser les modes NFCIP ou
l'émulation de carte) nécessite encore une autre modification de PCSC-lite : vous devez autoriser l'utilisation de
la commande CCID Exchange. Pour ce faire, modifiez le fichier de configuration libccid_Info.plist
(généralement /etc/libccid_Info.plist), localisez <key>ifdDriverOptions</key>,
remplacez la valeur <string>0x0000</string> par 0x0001 pour autoriser l'échange CCID ou
par 0x0005 pour autoriser l'échange CCID et les périphériques non conformes (cf. remarque précédente), puis
redémarrez le démon pcscd.
Avertissement : si vous utilisez les pilotes CCID ACS (acsccid), le fichier de configuration se trouve
dans un chemin du type : /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist
Libnfc ne peut pas être utilisé en même temps que le pilote propriétaire PCSC du SCL3711. Deux solutions possibles :
Depuis la version 3.1 du noyau Linux, certains modules du noyau ne doivent pas être chargés afin d'utiliser libnfc : « nfc », « pn533 » et « pn533_usb ». Pour empêcher le noyau de charger automatiquement ces modules, vous pouvez les mettre sur liste noire dans un fichier de configuration modprobe. Ce fichier est fourni dans l'archive libnfc :
sudo cp contrib/linux/blacklist-libnfc.conf /etc/modprobe.d/blacklist-libnfc.conf
Libnfc peut fonctionner avec le pilote propriétaire PCSC des bR500 et R502, qui est déjà disponible sur la plupart des configurations Linux.
Pour activer la prise en charge PCSC : ./configure --with-drivers=pcsc.
Lecteurs connus pour fonctionner :
Ces lecteurs sont pris en charge par CCID depuis la v1.4.25, assurez-vous que la version de votre pilote CCID soit supérieure ou égale à 1.4.25.
Sur MacOS, vous pouvez vérifier la version de votre CCID avec la commande suivante et, si nécessaire, installer le dernier pilote CCID depuis https://github.com/martinpaljak/osx-ccid-installer/releases
grep -A 1 CFBundleShortVersionString /usr/local/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist
Sur Linux, vous pouvez vérifier la version de votre CCID avec la commande suivante et, si nécessaire, installer le dernier pilote CCID depuis https://ccid.apdu.fr/
grep -A 1 CFBundleShortVersionString /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
FeliCa est une marque déposée de Sony Corporation. MIFARE est une marque de NXP Semiconductors. Jewel Topaz est une marque d'Innovision Research & Technology. Toutes les autres marques appartiennent à leurs propriétaires respectifs.