*-
* 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 acesso de aplicativos no espaço do usuário a dispositivos NFC.
O site oficial é: http://www.nfc-tools.org/
O site oficial do fórum é: http://www.libnfc.org/community/
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 e acr122_usb:
acr122_pcsc:
pcsc:
O conjunto de testes de regressão depende da estrutura do cortador: http://cutter.sf.net
Nota: Se estiver trabalhando diretamente de um clone git do repositório, alguns dos arquivos precisam ser gerados primeiro. Para fazer isso, execute autoreconf -vis
Como alternativa, use uma versão .tar.bz2 de uma versão empacotada (que já contém ./configure): https://github.com/nfc-tools/libnfc/releases/
A construção deve ser tão simples quanto executar estes comandos:
./configure
make
Para construir com drivers específicos, consulte a opção --with-drivers=...
detalhada em ./configure --help
.
make install
Talvez seja necessário conceder permissões ao usuário para controlar o dispositivo. Em sistemas GNU/Linux, se você usar o udev, poderá usar as regras do udev fornecidas. por exemplo, no Debian, Ubuntu, etc.
sudo cp contrib/udev/93-pn53x.rules /lib/udev/rules.d/
No FreeBSD, se você usar devd, também existe 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 para ./configure).
Um exemplo de arquivo comentado está disponível nas fontes: libnfc.conf.sample
Se você compilou usando:
./configure --prefix=/usr --sysconfdir=/etc
você pode criar um diretório de configuração e copiar o arquivo de amostra:
sudo mkdir /etc/nfc
sudo cp libnfc.conf.sample /etc/nfc/libnfc.conf
Para configurar vários dispositivos, você pode modificar 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 determinadas opções de configuração em tempo de execução usando as seguintes variáveis de ambiente:
LIBNFC_DEFAULT_DEVICE=
: LIBNFC_DEFAULT_DEVICE=pn532_uart:/dev/ttyACM0
usará pn532 em /dev/ttyACM0 como dispositivo padrãoLIBNFC_DEVICE=
irá ignorar todos os dispositivos nos arquivos de configuração e usar apenas aquele definido na variávelLIBNFC_AUTO_SCAN=
substitui a opção allow_autoscan
no arquivo de configuraçãoLIBNFC_INTRUSIVE_SCAN=
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ção Para obter a string de um dispositivo reconhecido, você pode usar nfc-scan-device
: LIBNFC_AUTO_SCAN=true nfc-scan-device
mostrará os nomes e strings 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 dúvidas ou comentários, encorajamos você a postar na comunidade de desenvolvedores: http://www.libnfc.org/community
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 rastreamento com depuração ativada.
Reproduza o bug com depuração, por exemplo, se fosse:
$ nfc-list -v
execute-o como:
$ LIBNFC_LOG_LEVEL=3 nfc-list -v
Como reproduzir o bug.
Inclua um breve programa de teste que exiba o comportamento.
Como último recurso, você também pode fornecer um ponteiro para uma peça maior
de software que pode ser baixado.
Se o bug foi uma falha, o texto exato que foi impresso
quando ocorreu o acidente.
Informações adicionais, como rastreamentos de pilha, podem ser úteis, mas
não é necessário.
Patches podem ser postados em https://github.com/nfc-tools/libnfc/issues
Se o patch corrigir 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 falsa do libccid: edite o arquivo de configuração libccid_Info.plist (geralmente /etc/libccid_Info.plist
) e localize
, transforme o valor
em 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) precisa de mais um ajuste no 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
, transforme o valor
em 0x0001
para permitir a troca de CCID ou 0x0005
para permitir Troque CCID e dispositivos falsos (cf comentário anterior) e reinicie o daemon pcscd.
Aviso: se você usar drivers ACS CCID (acsccid), o arquivo de configuração estará localizado em algo como: /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist
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 libnfc: "nfc", "pn533" e "pn533_usb". Para evitar que o kernel carregue automaticamente esses módulos, você pode colocá-los na lista negra em um arquivo conf modprobe. Este arquivo é fornecido no arquivo libnfc:
sudo cp contrib/linux/blacklist-libnfc.conf /etc/modprobe.d/blacklist-libnfc.conf
Libnfc pode funcionar com driver proprietário PCSC bR500 e R502, que já está disponível na maioria das configurações do Linux. Para ativar o suporte PCSC: ./configure --with-drivers=pcsc
. Leitores conhecidos por trabalhar:
Esses leitores são suportados pelo CCID desde a v1.4.25, certifique-se de que a versão do driver CCID seja superior ou igual a 1.4.25.
No MacOS, você pode verificar a versão do CCID com o seguinte comando e, se necessário, pode 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 CCID com o seguinte comando e, se necessário, pode 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 registrada da NXP Semiconductors. Jewel Topaz é uma marca registrada da Innovision Research & Technology. Todas as outras marcas registradas são propriedade de seus respectivos proprietários.