If you want to write the template(Access on Card) with BioStar 2 Device SDK, one of the ways is that use Suprema device for scanning fingerprint and use DE-620 for issuing the card.


In this case, you need both the Dual-i SDK and Device SDK. Please contact Dual-i and request to download the SDK package.


Some users have asked that they can't write data to smart cards despite successfully integrating the two SDKs. For these people, we've prepared a checklist as below.


1. How to calculate CRC(hdrCRC, cardCRC)

The crc (hdrCRC, cardCRC) portion of the Access on Card data must exactly match the calculated value for the card to be recognized as an Access on Card. Please note that CRC should be calculated based on valid data only.  For example, even if you assigned the maximum size for template data(384*2 bytes), this doesn't mean that you need to calculate 384*2 always.


Please see if your CRC checksum(BS2_ComputeCRC16CCITT) is correct. You can see the sample code for CRC calculation in the "CardControl.cs"


2. Information of CIS

 - 2.x smartCard header
 - 2bytes : hdrCRC;
 2bytes : cardCRC;
 1byte : cardType; // Can operate in BS2_CARD_TYPE_SECURE or BS2_CARD_TYPE_ACCESS.
 1byte : numOfTemplate; // 0 ~ 4
 2bytes : templateSize; // The valid range is 300 ~ 384
 2bytes : issueCount;
 1byte :duressMask;
 1byte :reserved[5];
-> Please refer to the attached document for Mifare or iClass card structure.


3. How to set "start" of template, "end" of template, and length
The SDK doesn't store CRC which calculated template information.
But, total CRC can be calculated as follows.
 - ex) card CRC calculation -->> BS2_ComputeCRC16CCITT(0xffff, (unsigned char*)&(cardInfo->header.cardType),
                                                totalDataLen - offsetof(BS2SmartCardHeader, cardType)))


4. Start buffer & End buffer & Buffer length
There are only two factors are necessary. It's "start buffer" and "templateSize". So, End buffer and buffer length values are not necessary. 
- startBlock : it depends on the device setting.
- templateSize: You can set from 300 bytes to 384 bytes. The default parameter is 300 bytes.
Plus, the access group information should be assigned on the card. Please refer to the attached file.
If you don't use access-group feature and door control purposes, the device setting should be set "full access".


5. Secure Credential Card(SC card) needs to specify BS2CSNCard.data correctly. 

In the case of Secure Credential Card(SCC), users need to have card information which includes Card ID(24byte), issueCount(4byte) and TimeStamp(4byte). Also, cardObjs array of BS2UserBlob structure should be filled for SCC cards and the user should be updated after SCC issuing.