CCID (PC/SC) over USB

Overview

A SpringCore USB-attached device running in PC/SC Mode implements the USB CCID specification.

According to the PC/SC specification, the operating system shall then provide a complete PC/SC stack and run a PC/SC USB driver for this device.

Operating systems officially supporting PC/SC

Operating system PC/SC stack PC/SC USB driver
Microsoft Windows Supplied by the OS SpringCard SDD480
Linux PC/SC Lite (open source) PC/SC Lite CCID driver (open source)
Apple Mac OS X Fork of PC/SC Lite Fork of PC/SC Lite CCID driver

Operating systems not supporting PC/SC

Operating system Alternative to PC/SC
Android SpringCard Companion Service (CCID implementation on top of Android's USB Host API)
Apple iOS None currently available (USB Host API not available out of MFI logo program)

USB endpoints

The SpringCore device's PC/SC interface uses the following endpoints to communicate with the host computer:

Endpoint Purpose Size Protocol
Control Initial setup
Bulk_Out PC to RDR commands 64B See paragraph CCID_PC_To_RDR below
Bulk_In RDR to PC responses 64B See paragraph CCID_RDR_To_PC below
Interrupt_In RDR to PC notification of card(s) insertion/removal 8B See paragraph CCID_Interrupts below

CCID_PC_To_RDR (Bulk_Out)

Communication over the Bulk_Out endpoint is fully specified in the USB CCID specification.

It contains a 10-byte CCID header, optionally followed by a payload (up to 64kB).

Format of the message

Bytes Content
0-9 Header
10-N Payload
Byte Content
0 Command code, see table in the CCID protocol chapter.
1-4 Length of payload, LSB-first
5 Slot number
6 Sequence number
7-9 Command parameters

CCID_RDR_To_PC (Bulk_In)

Communication over the Bulk_In endpoint is fully specified in the USB CCID specification.

It contains a 10-byte CCID header, optionally followed by a payload (up to 64kB).

Format of the message

Bytes Content
0-9 Header
10-N Payload

Header

Byte Content
0 Response code. See table in the CCID protocol chapter.
1-4 Length of payload, LSB-first
5 Slot number
6 Sequence number
7 Slot status
8 Slot error
9 RFU