
Biblioteca de Near Field Communication (NFC) independente de plataforma
*-
* 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 é uma biblioteca que permite que aplicações em espaço de usuário acessem dispositivos NFC.
O site oficial foi descontinuado; consulte uma cópia através da WayBackMachine.
O fórum oficial foi descontinuado; consulte uma cópia através da WayBackMachine.
O site oficial de desenvolvimento é: https://github.com/nfc-tools/libnfc
Nota importante: este arquivo cobre sistemas POSIX; para Windows, leia README-Windows.md
Alguns drivers NFC dependem de software de terceiros:
pn53x_usb & acr122_usb:
acr122_pcsc:
pcsc:
A suíte de testes de regressão depende do framework cutter: http://cutter.sf.net
Nota: Se você estiver trabalhando diretamente de um clone git do repositório, alguns arquivos precisam ser gerados primeiro. Para isso, execute
autoreconf -vis
Alternativamente, use uma versão .tar.bz2 de um lançamento empacotado (que já contém ./configure): https://github.com/nfc-tools/libnfc/releases/
O processo de compilação deve ser tão simples quanto executar estes comandos:
./configure
make
Para compilar com driver(s) específico(s), veja a opção --with-drivers=... detalhada em ./configure --help.
make install
Talvez seja necessário conceder permissões ao seu usuário para operar o seu dispositivo. Em sistemas GNU/Linux, se você usa udev, pode usar as regras udev fornecidas. ex.: Debian, Ubuntu, etc.
sudo cp contrib/udev/93-pn53x.rules /lib/udev/rules.d/
No FreeBSD, se você usa devd, também há um arquivo de regras: contrib/devd/pn53x.conf.
Para alterar o comportamento padrão da biblioteca, o libnfc usa um arquivo de configuração localizado em sysconfdir (conforme fornecido ao ./configure).
Um arquivo de exemplo comentado está disponível nas fontes: libnfc.conf.sample
Se você compilou usando:
./configure --prefix=/usr --sysconfdir=/etc
você pode criar o diretório de configuração e copiar o arquivo de exemplo:
sudo mkdir /etc/nfc
sudo cp libnfc.conf.sample /etc/nfc/libnfc.conf
Para configurar vários dispositivos, você pode modificar o libnfc.conf ou criar um arquivo por dispositivo em um diretório 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
Você pode substituir certas opções de configuração em tempo de execução usando as seguintes variáveis de ambiente:
LIBNFC_DEFAULT_DEVICE=<connstring>: LIBNFC_DEFAULT_DEVICE=pn532_uart:/dev/ttyACM0 usará pn532 em /dev/ttyACM0 como dispositivo padrãoLIBNFC_DEVICE=<connstring> ignorará todos os dispositivos nos arquivos de configuração e usará apenas o definido na variávelLIBNFC_AUTO_SCAN=<true|false> substitui a opção allow_autoscan no arquivo de configuraçãoLIBNFC_INTRUSIVE_SCAN=<true|false> substitui a opção allow_intrusive_scan no arquivo de configuraçãoLIBNFC_LOG_LEVEL=<0|1|2|3> substitui a opção log_level no arquivo de configuraçãoPara obter a connstring de um dispositivo reconhecido, você pode usar nfc-scan-device: LIBNFC_AUTO_SCAN=true nfc-scan-device mostrará os nomes e connstrings de todos os dispositivos encontrados.
Para relatar um bug, visite https://github.com/nfc-tools/libnfc/issues e preencha um formulário de relatório de bug.
Se você tiver perguntas ou observações, incentivamos você a publicá-las na comunidade de desenvolvedores: http://www.libnfc.org/community
Por favor, certifique-se de incluir:
A versão do libnfc
Informações sobre o seu sistema. Por exemplo:
E qualquer outra coisa que você considere relevante.
Um trace com depuração ativada.
Reproduza o bug com depuração, por exemplo, se foi:
$ nfc-list -v
execute-o como:
$ LIBNFC_LOG_LEVEL=3 nfc-list -v
Como reproduzir o bug.
Inclua um pequeno programa de teste que exiba o comportamento.
Como último recurso, você também pode fornecer um ponteiro para um software
de software que possa ser baixado.
Se o bug foi uma falha (crash), o texto exato que foi impresso
quando a falha ocorreu.
Informações adicionais, como stack traces, podem ser úteis, mas
não são necessárias.
Patches podem ser enviados para https://github.com/nfc-tools/libnfc/issues
Se o patch corrige um bug, geralmente é uma boa ideia incluir todas as informações descritas em "Como Relatar Bugs".
Se o seu dispositivo Touchatag ou ACR122 não for detectado pelo libnfc, certifique-se
de que o daemon PCSC-lite (pcscd) esteja instalado e em execução.
Se o seu dispositivo Touchatag ou ACR122 não for detectado pelo daemon PCSC-lite
(pcsc_scan não vê nada), tente remover a detecção de firmware falso
do libccid: edite o arquivo de configuração libccid_Info.plist (geralmente
/etc/libccid_Info.plist) e localize <key>ifdDriverOptions</key>, altere
o valor de <string>0x0000</string> para 0x0004 para permitir dispositivos falsos e reinicie
o daemon pcscd.
Usar um dispositivo ACR122 com libnfc e sem tag (por exemplo, para usar modos NFCIP ou
emulação de cartão) requer outro ajuste do PCSC-lite: você precisa permitir o uso do
comando CCID Exchange. Para fazer isso, edite o arquivo de configuração libccid_Info.plist
(geralmente /etc/libccid_Info.plist) e localize <key>ifdDriverOptions</key>,
altere o valor de <string>0x0000</string> para 0x0001 para permitir a troca CCID ou
0x0005 para permitir a troca CCID e dispositivos falsos (cf. observação anterior) e
reinicie o daemon pcscd.
Aviso: se você usa os drivers ACS CCID (acsccid), o arquivo de configuração está localizado
em algo como: /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist
O libnfc não pode ser usado simultaneamente com o driver proprietário PCSC do SCL3711. Duas soluções possíveis:
Desde a versão 3.1 do kernel Linux, alguns módulos do kernel não devem ser carregados para usar o libnfc: "nfc", "pn533" e "pn533_usb". Para impedir que o kernel carregue esses módulos automaticamente, você pode colocá-los na lista negra em um arquivo de configuração modprobe. Este arquivo é fornecido no arquivo do libnfc:
sudo cp contrib/linux/blacklist-libnfc.conf /etc/modprobe.d/blacklist-libnfc.conf
O libnfc pode funcionar com o driver proprietário PCSC dos dispositivos bR500 e R502, que já está disponível na maioria das configurações Linux.
Para ativar o suporte a PCSC: ./configure --with-drivers=pcsc.
Leitores conhecidos por funcionar:
Esses leitores são suportados pelo CCID desde a v1.4.25; certifique-se de que a versão do seu driver CCID seja maior ou igual a 1.4.25.
No MacOS, você pode verificar a versão do seu CCID com o seguinte comando e, se necessário, instalar o driver CCID mais recente em https://github.com/martinpaljak/osx-ccid-installer/releases
grep -A 1 CFBundleShortVersionString /usr/local/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist
No Linux, você pode verificar a versão do seu CCID com o seguinte comando e, se necessário, instalar o driver CCID mais recente em https://ccid.apdu.fr/
grep -A 1 CFBundleShortVersionString /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
FeliCa é uma marca registrada da Sony Corporation. MIFARE é uma marca comercial da NXP Semiconductors. Jewel Topaz é uma marca comercial da Innovision Research & Technology. Todas as outras marcas comerciais são propriedade de seus respectivos proprietários.