Hello,

2013/5/14 Sam Duke <[email protected]>:
>
> Background:
> ------
> I'm using LibNFC with a an ACR122U card reader. I am using it in Tag
> Emulation mode and sending NDEF messages over it from a mobile phone. This
> uses the ISO7816 card protocol to transfer NDEF files, according to NFC
> Forum Type 4 Tag Operation Specification.
> In the Capability Container, the Maximum C-APDU data size can be specified
> which defines the maximum size of data transferred in a single ISO7816
> UPDATE_BINARY command. The valid valid range is 0001h to FFFFh.
> The actual UPDATE_BINARY command contains several fields: CLA, INS, P1, P2,
> LC, DATA - all of these (except data) are one byte long in my case (as set
> up in the Capability container).
> The SCardControl call returns "lpBytesReturned" - which, in my case is the
> length of the ISO7816 command (plus 4 bytes, I believe) - but, I hope you'll
> agree, this should certainly be MORE than the LC field of the command
> itself.
> ------
> Problem:
> While receiving small data, all works well. However when the mobile phone
> tries to send the Maximum sized packet (as defined by the Capability
> Container) I seem to hit a limit in lpBytesReturned of 249. The LC field
> itself states the DATA field should be length 0xFF, so lpBytesReturned
> should really be 255 + 5(for CLA, INS, P1...) (+ 4?).
> ------
> Things I've checked:
> -Changing maximum c-apdu data size
> Changing the C-APDU Data size of 0xFE still causes the same error in my
> application code, but I see that the received LC Field is 0xFE, so the
> remote device is at least honouring this.
> Changine the size to 0xEF is a work around that prevents me ever hitting
> this 'upper limit'
> -Params passed to SCardControl
> The length of the response buffer (cbRecvLength) that is passed in to
> SCardControl is 268
> ------
> Things I have not checked:
> I do not know whether a problem lies with the mobile device, debugging this
> would be extremely difficult, although I have had a dig around. It could
> simply not be sending enough data. I wonder if there is any way I am
> misusing PC/SC or any way of debugging this side further or any chance this
> is a bug (unlikely)?
> ------
> Other information:
> Output of /usr/sbin/pcscd --version :
>   pcsc-lite version 1.8.6.
>   Copyright (C) 1999-2002 by David Corcoran <[email protected]>.
>   Copyright (C) 2001-2011 by Ludovic Rousseau <[email protected]>.
>   Copyright (C) 2003-2004 by Damien Sauveron <[email protected]>.
>   Report bugs to <[email protected]>.
>   Enabled features: Linux i686-pc-linux-gnu serial usb libudev
> usbdropdir=/usr/lib/pcsc/drivers ipcdir=/var/run/pcscd
> configdir=/etc/reader.conf.d
> Reported Reader by pcsc_scan:
>   Reader 0: ACS ACR122U PICC Interface 00 00
> The relevant call to SCardControl from LibNFC:
>   if (SCardControl(DRIVER_DATA(pnd)->hCard,
> IOCTL_CCID_ESCAPE_SCARD_CTL_CODE, abtTxBuf, szTxBuf,
> DRIVER_DATA(pnd)->abtRx, ACR122_PCSC_RESPONSE_LEN, &dwRxLen) !=
> SCARD_S_SUCCESS) {
>       pnd->last_error = NFC_EIO;
>       return pnd->last_error;
>   }
> ------
>
> Thanks in advance for any help. If you require any more information about my
> set-up, please let me know along with instructions on how to get that
> information.

Are you using my CCID driver?

Can you follow http://pcsclite.alioth.debian.org/ccid.html#support ?

Have you read the notes at
http://pcsclite.alioth.debian.org/ccid/unsupported.html#0x072F0x2200 ?

Bye

--
 Dr. Ludovic Rousseau

_______________________________________________
Muscle mailing list
[email protected]
http://lists.musclecard.com/mailman/listinfo/muscle_lists.musclecard.com

Reply via email to