
Libreria Near Field Communication (NFC) indipendente dalla piattaforma
*-
libnfc è una libreria che consente alle applicazioni in spazio utente l'accesso a dispositivi NFC.
Il sito web ufficiale non è più disponibile; è possibile consultarne una copia tramite la WayBackMachine.
Il forum ufficiale non è più disponibile; è possibile consultarne una copia tramite la WayBackMachine.
Il sito ufficiale di sviluppo è: https://github.com/nfc-tools/libnfc
Nota importante: questo file riguarda i sistemi POSIX; per Windows leggere README-Windows.md
Alcuni driver NFC dipendono da software di terze parti:
pn53x_usb & acr122_usb:
acr122_pcsc:
pcsc:
La suite di test di regressione dipende dal framework cutter: http://cutter.sf.net
Nota: se si lavora direttamente da un clone git del repository, alcuni file devono essere generati per primi. Per farlo, eseguire
autoreconf -vis
In alternativa, usare una versione .tar.bz2 di una release confezionata (che contiene già ./configure): https://github.com/nfc-tools/libnfc/releases/
La compilazione dovrebbe essere semplice come eseguire questi comandi:
./configure
make
Per compilare con uno o più driver specifici, vedere l'opzione --with-drivers=... descritta in ./configure --help.
make install
Potrebbe essere necessario concedere all'utente i permessi per utilizzare il dispositivo. Su sistemi GNU/Linux, se si utilizza udev, si possono usare le regole udev fornite. ad es. su Debian, Ubuntu, ecc.
sudo cp contrib/udev/93-pn53x.rules /lib/udev/rules.d/
Su FreeBSD, se si utilizza devd, è disponibile anche un file di regole: contrib/devd/pn53x.conf.
Per cambiare il comportamento predefinito della libreria, libnfc usa un file di configurazione situato in sysconfdir (come fornito a ./configure).
Un file di esempio commentato è disponibile nei sorgenti: libnfc.conf.sample
Se avete compilato usando:
./configure --prefix=/usr --sysconfdir=/etc
potete creare la directory di configurazione e copiare il file di esempio:
sudo mkdir /etc/nfc
sudo cp libnfc.conf.sample /etc/nfc/libnfc.conf
Per configurare più dispositivi, potete modificare libnfc.conf oppure creare un file per dispositivo in una directory 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
È possibile sovrascrivere alcune opzioni di configurazione in fase di esecuzione utilizzando le seguenti variabili d'ambiente:
LIBNFC_DEFAULT_DEVICE=<connstring>: LIBNFC_DEFAULT_DEVICE=pn532_uart:/dev/ttyACM0 userà pn532 su /dev/ttyACM0 come dispositivo predefinitoLIBNFC_DEVICE=<connstring> ignorerà tutti i dispositivi nei file di configurazione e userà solo quello definito nella variabileLIBNFC_AUTO_SCAN=<true|false> sovrascrive l'opzione allow_autoscan nel file di configurazioneLIBNFC_INTRUSIVE_SCAN=<true|false> sovrascrive l'opzione allow_intrusive_scan nel file di configurazioneLIBNFC_LOG_LEVEL=<0|1|2|3> sovrascrive l'opzione log_level nel file di configurazionePer ottenere la connstring di un dispositivo riconosciuto, potete usare nfc-scan-device: LIBNFC_AUTO_SCAN=true nfc-scan-device mostrerà i nomi e le connstring di tutti i dispositivi trovati.
Per segnalare un bug, visitare https://github.com/nfc-tools/libnfc/issues e compilare un modulo di segnalazione bug.
Se avete domande o osservazioni, vi invitiamo a pubblicarle nella community degli sviluppatori: http://www.libnfc.org/community
Assicuratevi di includere:
La versione di libnfc
Informazioni sul vostro sistema. Ad esempio:
E qualsiasi altra cosa riteniate pertinente.
Una traccia con il debug attivato.
Riproducete il bug con il debug, ad es. se era:
$ nfc-list -v
eseguitelo come:
$ LIBNFC_LOG_LEVEL=3 nfc-list -v
Come riprodurre il bug.
Includete un breve programma di test che mostri il comportamento.
Come ultima risorsa, potete anche fornire un riferimento a un programma più grande
che possa essere scaricato.
Se il bug ha causato un crash, il testo esatto che è stato stampato
quando si è verificato il crash.
Ulteriori informazioni come stack trace possono essere utili, ma
non sono necessarie.
Le patch possono essere inviate a https://github.com/nfc-tools/libnfc/issues
Se la patch corregge un bug, di solito è una buona idea includere tutte le informazioni descritte in "Come segnalare bug".
Se il vostro dispositivo Touchatag o ACR122 non viene rilevato da libnfc, assicuratevi che il demone PCSC-lite (pcscd) sia installato e in esecuzione.
Se il vostro dispositivo Touchatag o ACR122 non viene rilevato dal demone PCSC-lite (pcsc_scan non vede nulla), provate a disattivare il rilevamento del firmware non autentico di libccid: modificate il file di configurazione libccid_Info.plist (di solito /etc/libccid_Info.plist), individuate <key>ifdDriverOptions</key>, cambiate il valore <string>0x0000</string> in 0x0004 per consentire i dispositivi non autentici e riavviate il demone pcscd.
L'uso di un dispositivo ACR122 con libnfc e senza tag (ad es. per usare le modalità NFCIP o l'emulazione di carta) richiede un'altra modifica a PCSC-lite: è necessario consentire l'uso del comando CCID Exchange. Per fare ciò, modificate il file di configurazione libccid_Info.plist (di solito /etc/libccid_Info.plist), individuate <key>ifdDriverOptions</key>, cambiate il valore <string>0x0000</string> in 0x0001 per consentire lo scambio CCID oppure in 0x0005 per consentire lo scambio CCID e i dispositivi non autentici (cfr. osservazione precedente) e riavviate il demone pcscd.
Attenzione: se si usano i driver ACS CCID (acsccid), il file di configurazione si trova in un percorso del tipo: /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist
Libnfc non può essere usato contemporaneamente al driver proprietario PCSC di SCL3711. Due possibili soluzioni:
Dalla versione 3.1 del kernel Linux, alcuni moduli del kernel non devono essere caricati per usare libnfc: "nfc", "pn533" e "pn533_usb". Per impedire al kernel di caricare automaticamente questi moduli, potete metterli in blacklist in un file di configurazione modprobe. Questo file è fornito all'interno dell'archivio libnfc:
sudo cp contrib/linux/blacklist-libnfc.conf /etc/modprobe.d/blacklist-libnfc.conf
Libnfc può funzionare con il driver proprietario PCSC di bR500 e R502, già disponibile sulla maggior parte delle configurazioni Linux.
Per attivare il supporto PCSC: ./configure --with-drivers=pcsc.
Lettori noti per funzionare:
Questi lettori sono supportati da CCID dalla v1.4.25; assicuratevi che la versione del driver CCID sia uguale o superiore alla 1.4.25.
Su MacOS, potete controllare la versione di CCID con il seguente comando e, se necessario, installare l'ultimo driver CCID da https://github.com/martinpaljak/osx-ccid-installer/releases
grep -A 1 CFBundleShortVersionString /usr/local/libexec/SmartCardServices/drivers/ifd-ccid.bundle/Contents/Info.plist
Su Linux, potete controllare la versione di CCID con il seguente comando e, se necessario, installare l'ultimo driver CCID da https://ccid.apdu.fr/
grep -A 1 CFBundleShortVersionString /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
FeliCa è un marchio registrato di Sony Corporation. MIFARE è un marchio di NXP Semiconductors. Jewel Topaz è un marchio di Innovision Research & Technology. Tutti gli altri marchi sono di proprietà dei rispettivi titolari.