1.0. Introduction The ACR39x PC-linked Smart Card Reader acts as an interface for the communication between a computer and a smart card. Different types of smart cards have different commands and different communication protocols, which, in most cases, prevent direct communication between a smart card and a computer.
3.1. MCU Cards The ACR39x is a PC/SC–compliant smart card reader that supports ISO 7816 Class A, B and C (5 V, 3 V, and 1.8 V) smart cards. It also works with MCU cards following either the T=0 and T=1 protocol.
4.0. USB Interface 4.1. Communication Parameters The ACR39x is connected to a computer through USB as specified in the USB Specification 2.0. The ACR39x is working in full speed mode, i.e. 12 Mbps. Signal Function +5 V power supply for the reader...
The ACR39x provides a mechanism to protect the inserted card when it is suddenly withdrawn while it is powered up. The power supply to the card and the signal lines between the ACR39x and the card is immediately deactivated when the card is being removed. However, as a rule to avoid any electrical damage, a card should only be removed from the reader while it is powered down.
6.0. Power Supply The ACR39x requires a voltage of 5 V DC, 100 mA, regulated, power supply. The ACR39x gets power supply from the computer (through the cable supplied along with each type of reader). 6.1. Status LED The LED indicates the activation status of the smart card interface: •...
USB chip-card interface devices. CCID covers all the protocols required for operating smart cards. The configurations and usage of USB endpoints on ACR39x shall follow CCID Rev 1.0 Section 3. An overview is summarized below: 1.
Page 11
Offset Field Size Value Description ACR39x supports the following features: • Automatic ICC clock frequency change according to parameters dwFeatures • Automatic baud rate change according to frequency and FI, DI parameters • TPDU level change with ACR39x Maximum message length accepted by dwMaxCCIDMessageLength ACR39x is 271 bytes.
7.1. CCID Bulk-OUT Messages ACR39x shall follow the CCID Bulk-OUT Messages as specified in CCID Rev 1.0 Section 4.1. In addition, this specification defines some extended commands for operating additional features. This section lists the CCID Bulk-OUT Messages to be supported by ACR39x.
Size of extra bytes of this message. bSlot Identifies the slot number for this command. bSeq Sequence number for command. abRFU Reserved for future use. The response to this message is the RDR_to_PC_Parameters message. Page 13 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
Add 0 to 254 etu to the normal guard time of 12 etu. FFh is the same as 00h. bWaitingIntegerT0 WI for T=0 used to define WWT. Page 14 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
Page 15
02h – Stop with Clock signal High 03h – Stop with Clock signal either High or bIFSC Size of negotiated IFSC. bNadValue Only support NAD=00h. The response to this message is the RDR_to_PC_Parameters message. Page 15 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
7.2. CCID Bulk-IN Messages The Bulk-IN Messages are used in response to the Bulk-OUT Messages. ACR39x shall follow the CCID Bulk-IN Messages as specified in CCID Rev 1.0 Section 4. This section lists the CCID Bulk-IN Messages to be support by ACR39x.
Memory address location of the memory card. MEM_L Length of data to be read from the memory card. BYTE X Data to be written to the memory card. Page 19 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
Page 20
Response data format (abData field in the RDR_to_PC_DataBlock) Where: SW1 SW2 = 90 00h if no error. Page 20 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
* is the MSB of the 17 bit addressing Byte Address Memory address location of the memory card. MEM_L Length of data to be read from the memory card. Page 22 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
Page 23
BYTE X Data to be written to the memory card. Response data format (abData field in the RDR_to_PC_DataBlock) Where: SW1 SW2 = 90 00h if no error. Page 23 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
Response data format (abData field in the RDR_to_PC_DataBlock) BYTE 1 … BYTE N Where: BYTE x Data read from memory card. SW1 SW2 = 90 00h if no error. Page 24 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
MEM_L = 1 + INT [(number of bits – 1)/8] For example: To read eight protection bits starting from memory 0010h, the following pseudo-APDU should be issued as: FF B1 00 10 01h Page 25 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
Length of data to be written to the memory card. Byte x Data to be written to the memory card. Response Data Format (abData field in the RDR_to_PC_DataBlock) Where: SW1 SW2 = 90 00h if no error. Page 26 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
3. Try to erase the presentation error counter. Command Format (abData field in the PC_to_RDR_XfrBlock) Pseudo-APDU CODE MEM_L Byte 1 Byte 2 Where: CODE Two bytes secret code (PIN). Page 27 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
Page 28
= Error Counter. FFh indicates successful verification. 00h indicates that the password is locked (or exceeded the maximum number of retries). Other values indicate that current verification has failed. Page 28 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
PROT 4 Where: BYTE x Data read from memory card. PROT y Bytes containing the protection bits from protection memory. SW1 SW2 = 90 00h if no error. Page 29 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
= 90 00h if no error. 8.4.4. READ_PROTECTION_BITS This command is used to read the protection bits for the first 32 bytes. Command Format (abData field in the PC_to_RDR_XfrBlock) Pseudo-APDU MEM_L Page 30 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
Length of data to be written to the memory card. Byte x Data to be written to the memory card. Response Data Format (abData field in the RDR_to_PC_DataBlock) Where: SW1 SW2 = 90 00h if no error. Page 31 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
3. Try to erase the presentation error counter. Command Format (abData field in the PC_to_RDR_XfrBlock) Pseudo-APDU CODE MEM_L Byte 1 Byte 2 Byte 3 Where: CODE Three bytes secret code (PIN). Page 32 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
Command Format (abData field in the PC_to_RDR_XfrBlock) Pseudo-APDU CODE MEM_L Byte 1 Byte 2 Byte 3 Response Data Format (abData field in the RDR_to_PC_DataBlock) Where: SW1 SW2 = 90 00h if no error. Page 33 of 35 ACR39x – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.03...
9.0. Other commands accessed via PC_to_RDR_XfrBlock 9.1. GET_READER_INFORMATION This command is used to return the firmware revision number of the ACR39x reader. Note: This command can only be used after the logical smart card reader communication has been established using the SCardConnect() API. For details of SCardConnect() API, please refer to PC/SC specifications.
Appendix A. Response Error Codes The following table summarizes the possible error codes returned by the ACR39x: Error Code Status SLOTERROR_CMD_ABORTED SLOTERROR_ICC_MUTE SLOTERROR_XFR_PARITY_ERROR SLOTERROR_XFR_OVERRUN SLOTERROR_HW_ERROR SLOTERROR_BAD_ATR_TS SLOTERROR_BAD_ATR_TCK SLOTERROR_ICC_PROTOCOL_NOT_SUPPORTED SLOTERROR_ICC_CLASS_NOT_SUPPORTED SLOTERROR_PROCEDURE_BYTE_CONFLICE SLOTERROR_DEACTIVATED_PROTOCOL SLOTERROR_BUSY_WITH_AUTO_SEQUENCE SLOTERROR_CMD_SLOT_BUSY Table 3: Response Error Codes Android is a trademark of Google Inc.
Need help?
Do you have a question about the ACR39x and is the answer not in the manual?
Questions and answers