Contents
1.
2.
3.
4.
5.
Concept ................................................................................................................. 4
Protocol: Packet Structure .................................................................................. 6
Command Packet (Command) ....................................................................... 6
Response Packet (Acknowledge) ................................................................... 6
Data Packet (Data)............................................................................................. 6
Protocol: Commands Summary ......................................................................... 8
Protocol: Error Codes ........................................................................................ 10
Protocol: Command Details ............................................................................. 11
5.1.
Initialization(Open) ......................................................................... 11
5.2.
Termination(Close) .......................................................................... 13
5.3.
Fast searching of the device(UsbInternalCheck)...................... 13
5.4.
CMOS LED control(CmosLed) ....................................................... 14
5.5.
Changing UART baud rate (ChangeBaudrate) ......................... 15
5.6.
Get enrolled fingerprint count(GetEnrollCount) ...................... 16
5.7.
Check enrollment status(CheckEnrolled) ................................... 16
5.8.
Start an enrollment(EnrollStart) .................................................. 17
5.9.
Make 1st template for an enrollment(Enroll1) ......................... 17
5.10.
Make 2nd template for an enrollment(Enroll2) ........................ 18
5.11.
Make 3rd template for an enrollment, merge three
templates(Enroll3) ........................................................................................... 18
5.12.
Check finger pressing status(IsPressFinger) ............................. 20
5.13.
Delete one fingerprint(DeleteID) ................................................ 21
5.14.
Delete all fingerprints(DeleteAll) ................................................ 21
5.15.
1:1 Verification(Verify) ................................................................... 22
5.16.
1:N Identification(Identify) ........................................................... 22
5.17.
1:1 Verification of Template(VerifyTemplate) .......................... 23
5.18.
1:N Identification of Template(IdentifyTemplate) .................. 24
5.19.
Capture fingerprint(CaptureFinger) ........................................... 25
5.20.
Make Template(MakeTemplate)................................................... 26
5.21.
Get fingerprint image(GetImage) ................................................ 27
5.22.
Get raw image(GetRawImage) ...................................................... 28
5.23.
Get template(GetTemplate) ........................................................... 28
5.24.
Set template(SetTemplate) ............................................................ 29
6.
7.
8.
5.25.
Start database download, obsolete(GetDatabaseStart) ......... 29
5.26.
End database download, obsolete(GetDatabaseEnd) ............. 30
5.27.
Upgrade Firmware(UpgradeFirmware) ...................................... 31
5.28.
Upgrade ISO CD Image(UpgradeISOCDImage) ....................... 31
5.29.
Set IAP Mode(SetIAPMode).......................................................... 31
Protocol: Flowchart, description ...................................................................... 32
6.1
Capture of the fingerprint image ................................................ 32
6.2
Identifying and Verifying .............................................................. 32
6.3
Enrollment ......................................................................................... 32
PC Demo ............................................................................................................. 34
Mechanical Dimensions .................................................................................... 36
Storage
environment
Temperatur
e
Humidity
-20℃ ~ +60℃
10% ~ 80%
2. Protocol: Packet Structure
(Multi-byte item is represented as Little Endian.)
Command Packet (Command)
OFFSET
0
1
2
4
8
ITEM
0x55
0xAA
Device ID
Parameter
Command
TYPE
BYTE
BYTE
WORD
DWORD
WORD
10
Check Sum
WORD
DESCRIPTION
Command start code1
Command start code2
Device ID: default is 0x0001, always fixed
Input parameter
Command code
Check Sum (byte addition)
OFFSET[0]+…+OFFSET[9]=Check Sum
Response Packet (Acknowledge)
OFFSET
0
1
2
ITEM
0x55
0xAA
Device ID
TYPE
BYTE
BYTE
WORD
4
Parameter
DWORD
8
Response
WORD
10
Check Sum
WORD
DESCRIPTION
Response start code1
Response start code2
Device ID: default is 0x0001, always fixed
Response == 0x30: (ACK) Output Parameter
Response == 0x31: (NACK) Error code
0x30: Acknowledge (ACK).
0x31: Non-acknowledge (NACK).
Check Sum (byte addition)
OFFSET[0]+…+OFFSET[9]=Check Sum
Data Packet (Data)
OFFSET
0
1
2
ITEM
0x5A
0xA5
Device ID
TYPE
BYTE
BYTE
WORD
4
Data
N BYTES
DESCRIPTION
Data start code1
Data start code2
Device ID: default is 0x0001, always fixed
N bytes Data
The size is pre-defined per protocol stage
4+N
Check Sum
WORD
Check Sum (byte addition)
OFFSET[0]+…+OFFSET[4+N-1]=Check Sum
3. Protocol: Commands
Summary
In a command packet Command can be one of below.
Number
Alias
Description
(HEX)
01
Open
Initialization
02
Close
Termination
03
UsbInternalCheck
Check if the connected USB device is valid
04
ChangeBaudrate
Change UART baud rate
Enter IAP Mode
05
SetIAPMode
In this mode, FW Upgrade is available
12
CmosLed
Control CMOS LED
20
GetEnrollCount
Get enrolled fingerprint count
Check whether the specified ID is already
21
CheckEnrolled
enrolled
22
EnrollStart
Start an enrollment
23
Enroll1
Make 1st template for an enrollment
24
Enroll2
Make 2nd template for an enrollment
Make 3rd template for an enrollment, merge
25
Enroll3
three templates into one template, save
merged template to the database
26
IsPressFinger
Check if a finger is placed on the sensor
40
DeleteID
Delete the fingerprint with the specified ID
41
DeleteAll
Delete all fingerprints from the database
1:1 Verification of the capture fingerprint
50
Verify
image with the specified ID
1:N Identification of the capture fingerprint
51
Identify
image with the database
1:1 Verification of a fingerprint template with
52
VerifyTemplate
the specified ID
1:N Identification of a fingerprint template
53
IdentifyTemplate
with the database
Capture a fingerprint image(256x256) from
60
CaptureFinger
the sensor
61
MakeTemplate
Make template for transmission
Number
(HEX)
Alias
62
GetImage
63
GetRawImage
70
71
72
73
80
81
30
31
GetTemplate
SetTemplate
GetDatabaseStart
GetDatabaseEnd
UpgradeFirmware
UpgradeISOCDImage
Ack
Nack
Description
Download the captured fingerprint
image(256x256)
Capture & Download raw fingerprint
image(320x240)
Download the template of the specified ID
Upload the template of the specified ID
Start database download, obsolete
End database download, obsolete
Not supported
Not supported
Acknowledge.
Non-acknowledge.
4. Protocol: Error Codes
When response packet is Non-acknowledge, Parameter represents an error code
as below.
NACK Parameter
Value
Description
NACK_TIMEOUT
0x1001
Obsolete, capture timeout
NACK_INVALID_BAUDRATE
0x1002
Obsolete, Invalid serial baud rate
NACK_INVALID_POS
0x1003
NACK_IS_NOT_USED
0x1004
The specified ID is not between
0~199
The specified ID is not used
NACK_IS_ALREADY_USED
0x1005
The specified ID is already used
NACK_COMM_ERR
0x1006
Communication Error
NACK_VERIFY_FAILED
0x1007
1:1 Verification Failure
NACK_IDENTIFY_FAILED
0x1008
1:N Identification Failure
NACK_DB_IS_FULL
0x1009
The database is full
NACK_DB_IS_EMPTY
0x100A
The database is empty
NACK_TURN_ERR
0x100B
NACK_BAD_FINGER
0x100C
Obsolete, Invalid order of the
enrollment
(The order was not as: EnrollStart ->
Enroll1 -> Enroll2 -> Enroll3)
Too bad fingerprint
NACK_ENROLL_FAILED
0x100D
Enrollment Failure
NACK_IS_NOT_SUPPORTED
0x100E
NACK_DEV_ERR
0x100F
NACK_CAPTURE_CANCELED
0x1010
The specified command is not
supported
Device Error, especially if
Crypto-Chip is trouble
Obsolete, The capturing is canceled
NACK_INVALID_PARAM
0x1011
Invalid parameter
NACK_FINGER_IS_NOT_PRESSED 0x1012
Finger is not pressed
Duplicated ID
There is duplicated fingerprint (while
enrollment or setting template), This
error describes just duplicated ID
0 – 199
5. Protocol: Command Details
5.1. Initialization(Open)
Host
Device
COMMAND PACKET
Command = Open
Parameter =
0: not to get extra info
Nonzero: to get extra info
RESPONSE PACKET
Response = Ack
If host requested to get extra
DATA PACKET
Data =
typedefstruct_devinfo
{
DWORDFirmwareVersion;
DWORD IsoAreaMaxSize;
BYTEDeviceSerialNumber[16];
} devinfo;
Open command is used to initialize the device; especially it gets device’s static
info.
Description of devinfo structure
Field
FirmwareVersion
IsoAreaMaxSize
DeviceSerialNumber
Sample
Description
Firmware version
Maximum size of ISO
CD image
Unique serial number
of the device
If the Device’s Serial Number is zero, then there is no guarantee for stable
operation of the device.
5.2. Termination(Close)
Device
Host
COMMAND PACKET
Command = Close
RESPONSE PACKET
Response = Ack
Close command does nothing.
5.3. Fast searching of the device(UsbInternalCheck)
Host
Device
COMMAND PACKET
Command = UsbInternalCheck
RESPONSE PACKET
Response = Ack
Parameter = 0x55
The device operates as removable CD drive. If another removable CD drive exists
in the system, connection time maybe will be long. To prevent this,
UsbInternalCheck command is used for fast searching of the device.
5.4. CMOS LED control(CmosLed)
Device
Host
COMMAND PACKET
Command = CmosLed
Parameter =
0: Off LED
Nonzero: On LED
RESPONSE PACKET
Response = Ack
Default state of CMOS (Sensor) LED is OFF state.
(But while booting, LED blinks once, this says the LED is OK.)
Therefore, please issue LED ON command prior to any capture.
5.5. Changing UART baud rate (ChangeBaudrate)
Device
Host
COMMAND PACKET
Command = ChangeBaudrate
Parameter = baud rate
(9600~115200)
RESPONSE PACKET
Response = Ack:
Response = Nack: Error
NACK_INVALID_PARAM
This command changes the UART baud rate at the run-time.
The device initializes its UART baud rate to 9600 bps after power on.
5.6. Get enrolled fingerprint count(GetEnrollCount)
Host
Device
COMMAND PACKET
Command = GetEnrollCount
RESPONSE PACKET
Response = Ack
Parameter = Enrolled Fingerprint
Count
5.7. Check enrollment status(CheckEnrolled)
Host
COMMAND PACKET
Command = CheckEnrolled
Parameter = ID(0~199)
Device
RESPONSE PACKET
Response = Ack: This ID is enrolled
Response = Nack: Error
NACK_INVALID_POS
NACK_IS_NOT_USED
5.8. Start an enrollment(EnrollStart)
Device
Host
COMMAND PACKET
Command = EnrollStart
Parameter = ID(0~199)
If ID == -1, then “Enrollment
without saving” will be stated.
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_DB_IS_FULL
NACK_INVALID_POS
NACK_IS_ALREADY_USED
5.9. Make 1st template for an enrollment(Enroll1)
Host
Device
COMMAND PACKET
Command = Enroll1
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_ENROLL_FAILED
NACK_BAD_FINGER
Duplicated ID(0~199)
5.10. Make 2nd template for an enrollment(Enroll2)
Device
Host
COMMAND PACKET
Command = Enroll2
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_ENROLL_FAILED
NACK_BAD_FINGER
Duplicated ID(0~199)
5.11. Make 3rd template for an enrollment, merge three
templates(Enroll3)
Host
COMMAND PACKET
Command = Enroll3
Device
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_ENROLL_FAILED
NACK_BAD_FINGER
Duplicated ID(0~199)
If EnrollStart was called with ID == -1, then the enrolled template will not be
saved, it will be transferred to the host, as below.
DATA PACKET
Data = enrolled template (498bytes)
To enroll a fingerprint, the host must issue above 4 commands, later chapter
describes how to organize these commands.
5.12. Check finger pressing status(IsPressFinger)
Host
Device
COMMAND PACKET
Command = IsPressFinger
RESPONSE PACKET
Response = Ack:
Parameter = 0: finger is pressed
Parameter = nonzero: finger is not pressed
This command is used while enrollment, the host waits to take off the finger per
enrollment stage.
5.13. Delete one fingerprint(DeleteID)
Host
COMMAND PACKET
Command = DeleteID
Parameter = ID(0~199)
Device
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_INVALID_POS
5.14. Delete all fingerprints(DeleteAll)
Host
Device
COMMAND PACKET
Command = DeleteAll
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_DB_IS_EMPTY
5.15. 1:1 Verification(Verify)
Host
COMMAND PACKET
Command = Verify
Parameter = ID(0~199)
Device
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_INVALID_POS
NACK_IS_NOT_USED
NACK_VERIFY_FAILED
5.16. 1:N Identification(Identify)
Host
Device
COMMAND PACKET
Command = Identify
RESPONSE PACKET
Response = Ack: OK
Parameter = 0~199: identified ID
Response = Nack: Error
NACK_DB_IS_EMPTY
NACK_IDENTIFY_FAILED
5.17. 1:1 Verification of Template(VerifyTemplate)
Host
COMMAND PACKET
Command = Verify
Parameter = ID(0~199)
Device
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_INVALID_POS
NACK_IS_NOT_USED
DATA PACKET
Data = a template (498 bytes)
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_COMM_ERR
NACK_VERIFY_FAILED
5.18. 1:N Identification of Template(IdentifyTemplate)
Host
Device
COMMAND PACKET
Command = IdentifyTemplate
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_DB_IS_EMPTY
DATA PACKET
Data = a template (498 bytes)
RESPONSE PACKET
Response = Ack: OK
Parameter = 0~499: identified ID
Response = Nack: Error
NACK_COMM_ERR
NACK_IDENTIFY_FAILED
5.19. Capture fingerprint(CaptureFinger)
Host
COMMAND PACKET
Command = CaptureFinger
Parameter =
0: not best image, but fast
Nonzero: best image, but slow
Device
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_FINGER_IS_NOT_PRESSED
The fingerprint algorithm uses 450dpi 256x256 image for its input.
This command captures raw image from the sensor and converts it to 256x256
image for the fingerprint algorithm. If the finger is not pressed, this command
returns with non-acknowledge.
Please use best image for enrollment to get best enrollment data.
Please use not best image for identification (verification) to get fast user
sensibility.
5.20. Make Template(MakeTemplate)
Host
Device
COMMAND PACKET
Command = MakeTemplate
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_BAD_FINGER
DATA PACKET
Data = made template (498 bytes)
This function makes template for transmission. CaptureFinger command should
be previously issued. Do not use the template for registration.
5.21. Get fingerprint image(GetImage)
Host
Device
COMMAND PACKET
Command = GetImage
RESPONSE PACKET
Response = Ack: OK
DATA PACKET
Data = 258x202 image (52116
bytes)
5.22. Get raw image(GetRawImage)
Host
COMMAND PACKET
Command = GetRawImage
Device
Capture raw image
RESPONSE PACKET
Response = Ack: OK
DATA PACKET
Data = 160x120
(19200 bytes)
QVGA image
5.23. Get template(GetTemplate)
Host
COMMAND PACKET
Command = GetTemplate
Parameter = ID(0~199)
Device
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_INVALID_POS
NACK_IS_NOT_USED
DATA PACKET
Data = a template (498 bytes)
5.24. Set template(SetTemplate)
Device
Host
COMMAND PACKET
Command = SetTemplate
Parameter = ID(0~199)
(If Parameter’s HIWORD is
non-zero, fingerprint
duplication check will not be
performed )
DATA PACKET
Data = a template (498 bytes)
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_INVALID_POS
RESPONSE PACKET
Response = Ack: OK
Response = Nack: Error
NACK_COMM_ERR
NACK_DEV_ERR
Duplicated ID(0~199)
5.25. Start database download, obsolete(GetDatabaseStart)
Host
Device
COMMAND PACKET
Command = GetDatabaseStart
RESPONSE PACKET
Response = Ack
GetDatabaseStart command does nothing. It exists for historical reason; it was
used for RS232 communication.
5.26. End database download, obsolete(GetDatabaseEnd)
Host
Device
COMMAND PACKET
Command = GetDatabaseEnd
RESPONSE PACKET
Response = Ack
GetDatabaseEnd command does nothing. It exists for historical reason; it was used
for RS232 communication.
5.27. Upgrade Firmware(UpgradeFirmware)
Not supported
5.28. Upgrade ISO CD Image(UpgradeISOCDImage)
Not supported
5.29. Set IAP Mode(SetIAPMode)
Host
Device
COMMAND PACKET
Command = SetIAPMode
RESPONSE PACKET
Response = Ack
The Device enter in IAP Mode,
In this mode, FW upgrade is available.
6. Protocol: Flowchart,
description
6.1 Capture of the fingerprint image
IsPressFinger checks whether a finger placed on the sensor.
This function is used especially while enrollment.
CaptureFinger captures a fingerprint image (256x256), if a finger isn’t placed on
the sensor, it returns with error.
If this function returns with success, the device’s internal RAM keeps valid
fingerprint image for the subsequent commands. If the host issues other
command, the fingerprint image will be used and destroyed.
GetRawImage captures a raw live image (320x240), it doesn’t check whether a
finger placed on the sensor, this function is used for debug or calibration.
6.2 Identifying and Verifying
Identify and IdentifyTemplate perform 1: N matching operation.
Verify and VerifyTemplate perform 1: 1 matching operation.
Just before calling of image-related matching functions (Identify, Verify), the host
must call CaptureFinger.
6.3 Enrollment
An enrollment flowchart is as below.
1.
2.
3.
4.
5.
6.
EnrollStart with a (not used) ID
CaptureFinger
Enroll1
Wait to take off the finger using IsPressFinger
CaptureFinger
Enroll2
7. Wait to take off the finger using IsPressFinger
8. CaptureFinger
9. Enroll3
7. PC Demo
PC demo program describes how to use the device with its source code.
Command Alias
UI item to test it
Open, UsbInternalCheck,
ChangeBaudrate
Close
GetEnrollCount
CheckEnrolled, EnrollStart, Enroll1,
Enroll2, Enroll3, IsPressFinger
,
Command Alias
UI item to test it
DeleteID
DeleteAll
Verify
Identify
VerifyTemplate
IdentifyTemplate
CaptureFinger, GetImage
GetRawImage
GetTemplate, GetDatabaseStart,
GetDatabaseEnd
,
SetTemplate
UpgradeFirmware
UpgradeISOCDImage
Demo program is supported with its source code.
The project is Microsoft Visual C++ 6.0 project.
We selected VC6.0 to minimize the size of the executable.
The demo program checks whether it is running on removable CD drive, if it is the
case, it copies itself to “My Document” folder and executes copied version. This is
for direct access to the device’s removable CD drive.