On 07/15/2013 03:32 PM, Tom Schouten wrote:
On 07/15/2013 12:07 PM, Tom Schouten wrote:
Hi Harald,
On 07/10/2013 05:52 PM, Harald Welte wrote:
On Wed, Jul 10, 2013 at 05:12:23PM -0400, Tom Schouten wrote:
git://git.gnumonks.org/at91work.git
Great. I'll check it out. Is there anything essential that is missing?
for CCID (card reader operation) not, it is basically the Atmel reference code merged with my DFU loader work and configured for the SIMtrace hardware.
Did you need to make any modifications to pcscd & libccid? ( apart from additing the USB id to libccid_Info.plist ) What versions did you use?
I tried with latest release pcscd & libccid. I removed the BOARD_USB_DFU to avoid error messages related to the DFU USB interfaces. This is what I got from pcscd. Does the error remind you of anything you ran into?
Jul 15 15:28:50 zoo pcscd: ccid_usb.c:1065:ControlUSB() control failed (3/87): -7 Success Jul 15 15:28:50 zoo pcscd: ifdwrapper.c:348:IFDStatusICC() Card not transacted: 612 Jul 15 15:28:50 zoo pcscd: eventhandler.c:202:EHSpawnEventHandler() Initial Check Failed on Sysmocom SIMtrace (0123456789AF) 00 00 Jul 15 15:28:50 zoo pcscd: readerfactory.c:338:RFAddReader() Sysmocom SIMtrace (0123456789AF) init failed. Jul 15 15:28:50 zoo pcscd: hotplug_libudev.c:384:HPAddDevice() Failed adding USB device: Sysmocom SIMtrace Jul 15 15:28:51 zoo kernel: [188104.680951] usb 3-2.4.1: new full-speed USB device number 87 using ehci_hcd Jul 15 15:28:51 zoo kernel: [188104.960743] usb 3-2.4.1: New USB device found, idVendor=03eb, idProduct=6129 Jul 15 15:28:51 zoo kernel: [188104.960756] usb 3-2.4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Jul 15 15:28:51 zoo kernel: [188104.960766] usb 3-2.4.1: Product: ATMEL AT91 CCID DRIVER Jul 15 15:28:51 zoo kernel: [188104.960773] usb 3-2.4.1: Manufacturer: ATMEL Jul 15 15:28:51 zoo kernel: [188104.960779] usb 3-2.4.1: SerialNumber: 0123456789AF
Seems there is a discrepancy between libccid and at91lib driver about the meaning of the slot status bits.
(at91lib) cciddriver.c:
// 6.3.1 RDR_to_PC_NotifySlotChange #define ICC_NOT_PRESENT 0x00 #define ICC_PRESENT 0x01 #define ICC_CHANGE 0x02 #define ICC_INSERTED_EVENT ICC_PRESENT+ICC_CHANGE
(libccid) ccid.h: /* See CCID specs ch. 4.2.1 */ #define CCID_ICC_PRESENT_ACTIVE 0x00 /* 00 0000 00 */ #define CCID_ICC_PRESENT_INACTIVE 0x01 /* 00 0000 01 */ #define CCID_ICC_ABSENT 0x02 /* 00 0000 10 */ #define CCID_ICC_STATUS_MASK 0x03 /* 00 0000 11 */
There is no 0x03 case in libccid, which is what causes the obscure communication error 612. SIMtrace firmware returns 0x03 on startup, regardless of SIM insertion state.
I can probably fix this, though I wonder why the problem wasn't there before..
Cheers Tom