
Librería de Near Field Communication (NFC) independiente de plataforma
*-
libnfc es una biblioteca que permite a las aplicaciones de espacio de usuario acceder a dispositivos NFC.
El sitio web oficial ya no existe; consulta una copia a través de WayBackMachine.
El sitio del foro oficial ya no existe; consulta una copia a través de WayBackMachine.
El sitio oficial de desarrollo es: https://github.com/nfc-tools/libnfc
Nota importante: este archivo cubre sistemas POSIX; para Windows, por favor lee README-Windows.md
Algunos controladores NFC dependen de software de terceros:
pn53x_usb & acr122_usb:
acr122_pcsc:
pcsc:
El conjunto de pruebas de regresión depende del framework cutter: http://cutter.sf.net
Nota: Si se trabaja directamente desde un clon git del repositorio, algunos archivos deben generarse primero. Para ello, ejecuta
autoreconf -vis
Alternativamente, usa una versión .tar.bz2 de un lanzamiento empaquetado (que ya contiene ./configure): https://github.com/nfc-tools/libnfc/releases/
La compilación debería ser tan simple como ejecutar estos comandos:
./configure
make
Para compilar con controladores específicos, consulta la opción --with-drivers=... detallada en ./configure --help.
make install
Puede que necesites otorgar permisos a tu usuario para manejar tu dispositivo. En sistemas GNU/Linux, si usas udev, puedes usar las reglas udev proporcionadas. p. ej., en Debian, Ubuntu, etc.
sudo cp contrib/udev/93-pn53x.rules /lib/udev/rules.d/
En FreeBSD, si usas devd, también hay un archivo de reglas: contrib/devd/pn53x.conf.
Para cambiar el comportamiento predeterminado de la biblioteca, libnfc usa un archivo de configuración ubicado en sysconfdir (según lo proporcionado a ./configure).
Un archivo de muestra comentado está disponible en las fuentes: libnfc.conf.sample
Si has compilado usando:
./configure --prefix=/usr --sysconfdir=/etc
puedes crear el directorio de configuración y copiar el archivo de muestra:
sudo mkdir /etc/nfc
sudo cp libnfc.conf.sample /etc/nfc/libnfc.conf
Para configurar múltiples dispositivos, puedes modificar libnfc.conf o crear un archivo por dispositivo en un directorio 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
Puedes anular ciertas opciones de configuración en tiempo de ejecución usando las siguientes variables de entorno:
LIBNFC_DEFAULT_DEVICE=<connstring>: LIBNFC_DEFAULT_DEVICE=pn532_uart:/dev/ttyACM0 usará pn532 en /dev/ttyACM0 como dispositivo predeterminadoLIBNFC_DEVICE=<connstring> ignorará todos los dispositivos en los archivos de configuración y usará solo el definido en la variableLIBNFC_AUTO_SCAN=<true|false> anula la opción allow_autoscan en el archivo de configuraciónLIBNFC_INTRUSIVE_SCAN=<true|false> anula la opción allow_intrusive_scan en el archivo de configuraciónLIBNFC_LOG_LEVEL=<0|1|2|3> anula la opción log_level en el archivo de configuraciónPara obtener la connstring de un dispositivo reconocido, puedes usar nfc-scan-device: LIBNFC_AUTO_SCAN=true nfc-scan-device mostrará los nombres y connstrings de todos los dispositivos encontrados.
Para reportar un error, visita https://github.com/nfc-tools/libnfc/issues y completa un formulario de informe de errores.
Si tienes preguntas o comentarios, te animamos a publicarlos en la comunidad de desarrolladores: http://www.libnfc.org/community
Por favor, asegúrate de incluir:
La versión de libnfc
Información sobre tu sistema. Por ejemplo:
Y cualquier otra cosa que consideres relevante.
Una traza con la depuración activada.
Reproduce el error con depuración, p. ej., si fue:
$ nfc-list -v
ejecútalo como:
$ LIBNFC_LOG_LEVEL=3 nfc-list -v
Cómo reproducir el error.
Por favor, incluye un breve programa de prueba que muestre el comportamiento.
Como último recurso, también puedes proporcionar una referencia a un software más grande
que pueda descargarse.
Si el error fue un fallo, el texto exacto que se imprimió
cuando ocurrió el fallo.
Información adicional como trazas de pila puede ser útil, pero
no es necesaria.
Los parches pueden publicarse en https://github.com/nfc-tools/libnfc/issues
Si el parche corrige un error, suele ser una buena idea incluir toda la información descrita en "Cómo reportar errores".
Si tu dispositivo Touchatag o ACR122 no es detectado por libnfc, asegúrate de que el demonio PCSC-lite (pcscd) esté instalado y en ejecución.
Si tu dispositivo Touchatag o ACR122 no es detectado por el demonio PCSC-lite (pcsc_scan no ve nada), intenta eliminar la detección de firmware falso de libccid: edita el archivo de configuración libccid_Info.plist (normalmente /etc/libccid_Info.plist) y localiza <key>ifdDriverOptions</key>, cambia el valor <string>0x0000</string> a 0x0004 para permitir dispositivos falsos y reinicia el demonio pcscd.
Usar un dispositivo ACR122 con libnfc y sin etiqueta (p. ej., para usar modos NFCIP o emulación de tarjeta) requiere otro ajuste de PCSC-lite: debes permitir el uso del comando CCID Exchange. Para ello, edita el archivo de configuración libccid_Info.plist (normalmente /etc/libccid_Info.plist) y localiza <key>ifdDriverOptions</key>, cambia el valor <string>0x0000</string> a 0x0001 para permitir el intercambio CCID o 0x0005 para permitir el intercambio CCID y dispositivos falsos (cf. comentario anterior) y reinicia el demonio pcscd.
Advertencia: si usas los controladores ACS CCID (acsccid), el archivo de configuración se encuentra en algo como: /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist
Libnfc no se puede usar al mismo tiempo que el controlador propietario PCSC del SCL3711. Dos soluciones posibles:
Desde la versión 3.1 del kernel de Linux, algunos módulos del kernel no deben cargarse para poder usar libnfc : "nfc", "pn533" y "pn533_usb". Para evitar que el kernel cargue estos módulos automáticamente, puedes incluirlos en la lista negra en un archivo de configuración de modprobe. Este archivo se proporciona dentro del archivo de libnfc:
sudo cp contrib/linux/blacklist-libnfc.conf /etc/modprobe.d/blacklist-libnfc.conf
Libnfc puede funcionar con el controlador propietario PCSC de bR500 y R502, que ya está disponible en la mayoría de las configuraciones de Linux.
Para activar el soporte de PCSC: ./configure --with-drivers=pcsc.
Lectores que se sabe que funcionan:
Estos lectores son compatibles con CCID desde v1.4.25; asegúrate de que la versión de tu controlador CCID sea superior o igual a 1.4.25.
En MacOS, puedes verificar tu versión de CCID con el siguiente comando y, si es necesario, puedes instalar el controlador CCID más reciente desde https://github.com/martinpaljak/osx-ccid-installer/releases
grep -A 1 CFBundleShortVersionString /usr/local/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist
En Linux, puedes verificar tu versión de CCID con el siguiente comando y, si es necesario, puedes instalar el controlador CCID más reciente desde https://ccid.apdu.fr/
grep -A 1 CFBundleShortVersionString /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
FeliCa es una marca registrada de Sony Corporation. MIFARE es una marca comercial de NXP Semiconductors. Jewel Topaz es una marca comercial de Innovision Research & Technology. Todas las demás marcas comerciales son propiedad de sus respectivos dueños.