2012-07-04 17 views
5

Sto scrivendo un'applicazione in Java che invia comandi a una smartcard e analizza le risposte su un'interfaccia NFC. Questa applicazione può essere utilizzata sia su Android che su PC.Determinazione dei requisiti di alimentazione per una smartcard senza contatto in Java.

Utilizzando un lettore di schede USB senza contatto tramite il PC non ho problemi a collegarmi e comunicare con qualsiasi scheda che lancio.

Android è un'altra questione però. L'utilizzo dell'applicazione attraverso un Nexus S produce risultati meno desiderabili, a seconda della carta.

Alcune schede si connetteranno e comunicano con una percentuale di successo del 100%. La maggior parte delle carte che ho provato a usare sono state molto difficili persino per stabilire una connessione, figuriamoci comunicare con essa.

Il servizio NFC sul Nexus S sta tentando di connettersi con le schede. Emette un suono a basso impulso continuo, indicando che non può stabilire una connessione solida (per quanto ne so).

Il mio attuale pensiero è che il Nexus S ha un chip NFC con alimentazione inferiore rispetto al lettore PC USB che sto usando. Da altri articoli che ho letto sembra che carte diverse abbiano requisiti di alimentazione diversi per poterle utilizzare.

Come determinare il livello di potenza necessario per alimentare una scheda? È nascosto da qualche parte nell'ATR?

Come determinare il livello di potenza di un determinato chip NFC? Questo è documentato da qualche parte?

+0

per la prima domanda dovresti leggere la ISO 7816 – Blackbelt

+0

Immagino che dovresti sapere quale modello esatto è il chip NFC, quindi puoi scaricare la scheda con quel tipo di informazioni –

risposta

4

Questo tipo di problema è in genere causato da (una combinazione di) uno dei seguenti:

  1. antenna mal regolati nella scheda
  2. carta
  3. Micro-Controller che richiede molta potenza
  4. campo RF debole generato dal telefono NFC

Questo comporta un cattivo collegamento dell'antenna tra telefono e scheda, che si traduce in cattiva o nessuna comunicazione. Un lettore desktop in genere non ha questo tipo di problema in quanto genera un campo molto più potente. L'NFC in un telefono è piuttosto basso potere e il campo RF che genera è spesso al limite di ciò che è ancora consentito dalla ISO 14443. Il chip NFC nel Nexus S, l'NXP PN544, genera un campo RF debole. Tuttavia, questa è una funzione sia del chip NFC che dell'antenna NFC nel telefono. Nella mia esperienza, le carte di tipo B spesso causano problemi (si dice che spesso richiedono più potenza). Un altro esempio sono i passaporti elettronici: spesso hanno antenne meno ottimali.

Livello di potenza minimo richiesto per una scheda: non è nell'ATR. La scheda ISO 14443 non ha un ATR (potrebbero avere un file EF.ATR, ma non ne ho mai visto nessuno). La risposta ATS (Risposta per selezionare) non indica i livelli di potenza richiesti. Le carte hanno la possibilità di indicare se il livello di potenza è sufficiente nel campo CID di ISO 14443-4 S-Blocks (quando presente e supportato dalla scheda). Non ho mai visto le carte che fanno questo, però.

Per determinare il livello di potenza di un particolare chip NFC combinato con una particolare antenna (e circuito di sintonizzazione), è possibile utilizzare un analizzatore di spettro per effettuare le misurazioni. Ho misurato diversi telefoni Android NFC (Galaxy Nexus, Nexus S, Galaxy S3, One X) che contengono tutti un PN544. I risultati differiscono tra i telefoni, abbastanza da fare la differenza in alcuni casi (S3 che genera la massima potenza).

+0

Ti ho visto molto su SO . :) Grazie per la risposta. – Brad

+0

Prego. Ho dato una rapida occhiata ad alcune schede di tipo B coreano che ho (EZ-Link e T-Money), che non funzionano con Nexus S e Galaxy Nexus. Ho scoperto che in realtà funzionano con S3. –

Problemi correlati