Page 4
Table 4 : Mode Selection Switch ......................10 Table 5 : Status LED ..........................11 Table 6 : ACR3901U-S1 Service Handles and UUID Information List ..........15 Table 7 : Bluetooth Frame Format ......................19 Table 8 : Encrypted Frame Format after Mutual Authentication ............19 Table 9 : Command Code Summary ....................
1.0. Introduction ACR3901U-S1 Bluetooth Contact Card Reader acts as an interface for the communication between a computer/mobile device 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/mobile device.
PC/SC CCID EMV™ 2000 Level 1 Bluetooth® Smart Microsoft WHQL ® RoHS 2 REACH Applicable under PC-linked mode PC/SC and CCID support are not applicable Same as above Page 6 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
3.1. MCU Cards ACR3901U-S1 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. System Block Diagram ACR3901U-S1 Full-sized Power LEDs Card Management Re-chargeable battery Bluetooth module Bluetooth Mobile device or Computer Computer Figure 1: ACR3901U-S1 Architecture Page 8 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
ACR3901U-S1 is using a rechargeable Lithium-ion battery which has a capacity of 320 mAh. 5.1.1. Battery charging Once the battery of ACR3901U-S1 runs out, it may be charged in any of the following modes: OFF, USB, Bluetooth; as long as it is connected to a power outlet. 5.1.2.
Interrupt IN (data packet size is 8 bytes) 5.4. User Interface 5.4.1. Mode Selection Switch ACR3901U-S1 has three modes: USB, Off and Bluetooth. User can select one mode at a time as a data transmission interface. Symbol Switch Active Mode...
Bluetooth module. 5.5. Smart Card Interface The interface between the ACR3901U-S1 and the inserted smart card follows the specification of ISO 7816-3 with certain restrictions or enhancements to increase the practical functionality of ACR3901U- 5.5.1.
5.5.5. Card Tearing Protection The ACR3901U-S1 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 theACR3901U-S1 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.
The program flow of a Bluetooth connection is shown below: Bluetooth Start (Reset/Power up) Connect Success? Enable Service Authentication Authenticate Success? Smart card operation with security channel Disconnect? Reset Power Off Figure 2: Bluetooth Connection Flow Page 13 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
6.2. Profile Selection ACR3901U-S1 is a smart card reader that is designed to use Bluetooth technology as an interface to transmit data. A customized service called Commands Communication with three pipes is used: one pipe is used for command request, second pipe is for command response, and the third pipe is used to notify the paired device about the card and sleep mode status.
RND_A[0:15] and are originally generated by ACR3901U-S1. ACR3901U-S1 will first compare if RND_A[0:15] is the same as the original version. If it is the same, then the data processing server is authenticated by ACR3901U-S1. ACR3901U-S1 will then encrypt RND_B[0:15] obtained using the Customer Master Key and the feedback to the data processing server through the bridging device using the answer to the authentication response message.
6. The final output data from the encryption process will be transferred to ACR3901U-S1 through the authentication response message. 7. In ACR3901U-S1, a decryption process will be performed on the received data to recover the 32 bytes of random number. ACR3901U-S1 will check the result RND_A[0:15] to see if they are the same as the original ones.
Page 18
16-byte Session Key is created by padding the first 8 bytes of RND_A to the end of the first 8 bytes of RND_B. Page 18 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk...
6.5. Bluetooth Communication Protocol ACR3901U-S1 communicates to the paired device using the Bluetooth interface with a predefined protocol. The protocol is similar to the formats of the CCID Command Pipe and Response Pipe. Command Mode supported Sender Description Authenticated Paired device...
LEN1 is LSB while LEN2 is MSB CSUM means the XOR values of all CSUM (wChecksum) bytes in the command. Example: Request = 01 00 62 Response = 01 00 12 Page 22 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
03 = Card present and active CSUM means the XOR values of all CSUM (wChecksum) bytes in the command. Example: Request = 01 00 64 Response = 02 00 03 15 Page 23 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Len (CommandLength) message, and is expressed in one byte long. Data 0 =< N <= 255 CSUM means the XOR values of CSUM (wChecksum) all bytes in the command. Page 25 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Page 28
CSUM (wChecksum) of all bytes in the command. Example: Request = 03 00 04 00 6C Response = 08 00 84 05 56 30 2E 30 31 D5 Page 28 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Page 29
00h = Success Data 01h = Fail CSUM means the XOR values CSUM (wChecksum) of all bytes in the command. Example: Refer to Section 6.5.6 for more details. Page 29 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Page 30
CSUM means CSUM (wChecksum) values of all bytes in the command. Example: Request to set 90s = 04 00 0D 01 Response = 04 00 8D 01 00 Page 30 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Page 31
Example: Request = 03 00 0E 00 Response = 09 00 8E 06 AA BB CC DD EE FF Device address: AA BB CC DD EE FF Page 31 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Number of extra bytes of data abData2 16 bytes of random number Data (KeyRSTRnd[0:15]) generated by the reader CSUM means the XOR values CSUM (wChecksum) of all bytes in the command Page 32 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
After successful authentication, a 16-byte Session Key is generated in both ACR3901U-S1 and the data processing server. The Session Key (SK[0:15]) is obtained by padding the first 8 bytes of RND_B at the end of the first 8 bytes of RND_A, that is:...
RDR_to_SPH_DataRsp (22h) 6.6.1. SPH_to_RDR_ReqAuth This command will request ACR3901U-S1 to perform authentication with the paired key-generating device. After a successful authentication, the Customer Master Key can be modified by the paired key-generating device. For more information on the authentication process, please refer to Section 6.3...
Customer Master Key and pads it to the end of the 16-byte of random numbers. The overall 32-byte random numbers will be decrypted using the Customer Master Key and return it to the ACR3901U-S1 using this command in order to have a successful authentication.
6.6.5. SPH_to_RDR_DataReq This command is sent from the paired device to the ACR3901U-S1 after the mutual authentication process. In Bluetooth mode, the communication protocol from Section 6.5.1 to 6.5.5 will be encrypted and transmitted after a successful mutual authentication.
N*16 with the Customer Master Key using AES128 CBC cipher mode. CSUM means the XOR values wChecksum of all bytes in the command. Page 38 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
CCID, has been released within the industry defining such a protocol for the USB chip-card interface devices. CCID covers all the protocols required for operating smart cards. The configurations and usage of USB endpoints on ACR3901U-S1 shall follow CCID Rev 1.0 Section An overview is summarized below: 1.
Page 40
Automatic baud rate change according to frequency and FI,DI parameters • TPDU level change with ACR3901U- Maximum message length accepted by dwMaxCCIDMessageLength ACR3901U-S1 is 271 bytes. bClassGetResponse Insignificant for TPDU level exchanges. bClassEnvelope Insignificant for TPDU level exchanges. wLCDLayout No LCD.
Size of extra bytes of this message. Identifies the slot number for this bSlot command. bSeq Sequence number for command. abRFU Reserved for future use. The response to this message is the RDR_to_PC_SlotStatus message. Page 41 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Size of extra bytes of this message. Identifies the slot number for this BSlot command. BSeq Sequence number for command. AbRFU Reserved for future use. The response to this message is the RDR_to_PC_Parameters message. Page 42 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Add 0 to 254 etu to the bGuardTimeT0 normal guardtime of 12 etu. FFh is the same as 00h. bWaitingIntegerT0 WI for T=0 used to define WWT Page 43 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Page 44
03h = Stop with Clock either High or Low bIFSC Size of negotiated IFSC bNadValue Only support NAD = 00h The response to this message is the RDR_to_PC_Parameters message. Page 44 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
7.2. CCID Bulk-IN Messages 7.2.1. RDR_to_PC_DataBlock This message is sent by ACR3901U-S1 in response to PC_to_RDR_IccPowerOn, and PC_to_RDR_XfrBlock messages. Offset Field Size Value Description Indicates that a data block is being sent bMessageType from the CCID. dwLength Size of extra bytes of this message.
= 03h for 8-byte page write = 04h for 16-byte page write = 05h for 32-byte page write = 06h for 64-byte page write = 07h for 128-byte page write Page 47 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Page 48
Memory address location of the memory card MEM_L Length of data to be written to the memory card Byte x Data to be written to the memory card Page 48 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Page 49
Response Data Format (abData field in the RDR_to_PC_DataBlock) Where: SW1 SW2 = 90 00h if no error Page 49 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
= D0h for 32 kilobit, 64 kilobit, 128 kilobit, 256 kilobit, 512 kilobit iic card = 1101 000*b for 1024 kilobit iic card, where * is the MSB of the 17 bit addressing Page 51 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Page 52
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 52 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
= B3h for reading zone 11b = B4h for reading fuse Byte Address Memory address location of the memory card MEM_L Length of data to be read from the memory card Page 53 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Length of data to be written to the memory card MEM_D 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 54 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Other values indicate the current verification has failed. 8.3.5. INITIALIZE_AUTHENTICATION Command Format (abData field in the PC_to_RDR_XfrBlock) Pseudo-APDU Q(0) Q(1) … Q(7) Where: Q(0),Q(1)…Q(7) Host random number, 8 bytes Page 55 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Pseudo-APDU Ch(0) Ch(1) … Ch(7) Where: Ch(0),Ch(1)…Ch(7) Host challenge, 8 bytes Response Data Format (abData field in the RDR_to_PC_DataBlock) Where: SW1 SW2 = 90 00h if no error Page 56 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Byte Address b is the memory address location of the memory card = 1000 0000b for reading fuse MEM_L Length of data to be read from the memory card Page 57 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
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 58 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Command Format (abData field in the PC_to_RDR_XfrBlock) Pseudo-APDU Q(0) Q(1) … Q(7) Where: Byte Address Memory address location of the memory card Q(0),Q(1)…Q(7) Host random number, 8 bytes Page 59 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Memory address location of the memory card Q1(0),Q1(1)…Q1(7) Host challenge, 8 bytes Response Data Format (abData field in the RDR_to_PC_DataBlock) Where: SW1 SW2 = 90 00h if no error Page 60 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
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 61 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
MEM_L = 1 + INT( (number of bits - 1)/8 ) For example, to read 8 protection bits starting from memory 0010h, the following pseudo-APDU should be issued: FF B2 00 10 01h Page 62 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
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 63 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
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 64 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Page 65
= 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 65 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
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 66 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Response Data Format (abData field in the RDR_to_PC_DataBlock) PROT 1 PROT 2 PROT 3 PROT 4 Where: PROT y Bytes containing the protection bits from protection memory SW1, SW2 = 90 00h if no error Page 67 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Byte Address = 000A b (00h to 1Fh) is the protection memory address location of the memory card MEM_L Length of data to be written to the memory card Page 68 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
= Error Counter. 07h indicates that the verification is correct. 00h indicates the password is locked (exceeded the maximum number of retries). Other values indicate that the current verification has failed. Page 69 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Command Format (abData field in the PC_to_RDR_XfrBlock) Pseudo-APDU CODE MEM_L Byte Byte Byte Response Data Format (abData field in the RDR_to_PC_DataBlock) Where: SW1 SW2 = 90 00h if no error Page 70 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
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 71 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
02h: Write with backup enabled (SLE 4436, SLE 5536 and SLE 6636 only) 03h: Write with carry and with backup enabled (SLE 4436, SLE 5536 and SLE 6636 only) BYTE Byte value to be written to the card Page 72 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
1. Search a '1' bit in the presentation counter and write the bit to '0'. 2. Present the specified code to the card. The ACR3901U-S1 does not try to erase the presentation counter after the code submission. This must be done by the application software through a separate ‘Write with carry' command.
AUTHENTICATE_MEMORY_CARD (SLE 4436, SLE 5536 and SLE 6636) To read a card authentication certificate from a SLE 5536 or SLE 6636 card, the ACR3901U-S1 executes the following actions: 1. Select Key 1 or Key 2 in the card as specified in the command.
Page 75
16 bits of authentication data computed by the card. The LSB of BYTE 1 is the first authentication bit read from the card. SW1 SW2 = 90 00h if no error Page 75 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
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 76 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Section 8.8.5. Command Format (abData field in the PC_to_RDR_XfrBlock) Pseudo-APDU Byte Address MEM_L Where: Byte Address = Memory byte address location of the scratch pad Typical value is 02h Page 77 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Note: After SW1SW2 = 9000h has been received, read back the User Error Counter to check if the VERIFY_USER_CODE is correct. If User Error Counter is erased and is equal to “FFh,” the previous verification is successful. Page 78 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Note: After SW1SW2 = 9000h has been received, read back the Application Area can check if the VERIFY_MEMORY_CODE is correct. If all data in Application Area is erased and is equal to “FFh,” the previous verification is successful. Page 79 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
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 80 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
3. VERIFY_SECURITY_CODE commands as specified in Section 8.9.7. Command Format (abData field in the PC_to_RDR_XfrBlock) Pseudo-APDU Byte Address MEM_L Where: Byte Address Memory byte address location of the word to be erased Page 81 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
AT88SC102: Erase Application Zone 2 with EC2 function disabled AT88SC1003: Erase Application Zone 1 AT88SC1003: Erase Application Zone 2 with EC2 function disabled AT88SC1003: Erase Application Zone 3 Page 82 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Length of presentation error counter in bits. The value should be 80h always. Byte Address Byte address of the Application Zone Key in the card Byte Address AT88SC101 AT88SC102 AT88SC1003 CODE 4 bytes Erase Key Page 83 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
Note: After SW1SW2 = 9000h has been received, read back the Security Code Attempts Counter (SCAC) to check whether the VERIFY_USER_CODE is correct. If SCAC is erased and is equal to “FFh,” the previous verification is successful. Page 84 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
EC2EN Fuse Issuer Fuse Manufacturer Fuse AT88SC1003 EC2EN Fuse Issuer Fuse Response Data Format (abData field in the RDR_to_PC_DataBlock) Where: SW1 SW2 = 90 00h if no error Page 85 of 88 ACR3901U-S1 – Reference Manual info@acs.com.hk www.acs.com.hk Version 1.01...
C_TYPE The card types supported by the ACR3901U-S1. This data field is a bitmap with each bit representing a particular card type. A bit set to '1' means the corresponding card type is supported by the reader and can be selected with the SELECT_CARD_TYPE command.
Appendix B. Error Codes The following table summarizes all the error codes for ACR3901U-S1: Error Code Description Invalid checksum Invalid data length Invalid command format Invalid command / Unknown command ID Card operation error Authentication is required / Authentication error...
Need help?
Do you have a question about the ACR3901U-S1 and is the answer not in the manual?
Questions and answers