Creative Commons images are CC BY-NC-SA 3.0


added to your
shopping cart

In stock 301 in stock
31.95 1+ units
28.76 10+ units
25.56 100+ units

Description: Fingerprint scanners are awesome. Why use a key when you have one right at the tip of your finger? Unfortunately, they're usually unreliable or difficult to implement. Well not anymore! We've found this great fingerprint module from ADH-Tech that communicates over TTL Serial so you can easily embed it into your next project.

The module itself does all of the heavy lifting behind reading and identifying the fingerprints with an on-board optical sensor and 32-bit CPU. All you need to do is send it simple commands. To get started, just register each fingerprint that you want to store by sending the corresponding command and pressing your finger against the reader three times. The fingerprint scanner can store different fingerprints and the database of prints can even be downloaded from the unit and distributed to other modules. As well as the fingerprint "template," the analyzed version of the print, you can also retrieve the image of a fingerprint and even pull raw images from the optical sensor!

This is the more economical version of the GT-511 which has a decreased memory capacity (compared to the GT-511C3). The module can only store up to 20 different fingerprints and is only capable of 30° fingerprint recognition. If you are on a budget and need only a small number of fingerprints stored, this is the perfect option for you!

The module is small and easy to mount using two mounting tabs on the side of the sensor. The on-board JST-SH connector has four signals: Vcc, GND, Tx, Rx. A compatible JST-SH pigtail can be found in the related items below. Demo software for PC is available in the documents below, simply connect the module to your computer using an FTDI Breakout and start the software to read fingerprints!

Note: The module does not come with a cable, check below for an appropriate one.

Dimensions: 37 x 17 x 9.5 mm


  • High-Speed, High-Accuracy Fingerprint Identification using the SmackFinger 3.0 Algorithm
  • Download Fingerprint Images from the Device
  • Read and Write Fingerprint Templates and Databases
  • Simple UART protocol (Default 9600 baud)
  • Capable of 1:1 Verification and 1:N Identification




Comments 47 comments

  • The “demo software” link ( is for the C3 model and does not work with the C1 model (at least not with the one I got). The software associated with the C1 model is here, but this version of SDK_DEMO.exe doesn’t have an option for a serial connection mode so you have to hook up using USB or roll your own serial interface.

    Also, the C1 serial connection does not support the image download and template management commands. But it does all the basic commands required for fingerprint identification (enrollment, LED control, capture, identification, etc). The image upload commands only work when using a USB connection.

    It might be my imagination, or maybe individual device variances (I only tried one of each), but the C3 model seems a little better at enrollment and fingerprint identification. So for best results, and a demo program that works in serial mode, and all the features like image download, get the C3 model and make sure you’re using the correct SDK_DEMO.exe file.

    • Mmm, maybe a problem with the firmware. I am coding a driver using VC2010 and I have problems with image download also, however I can perform the command “GetTemplate” but this command return the only the firmware version. They should provides a fixed firmware

  • Finally got this working on arduino! I’ll post some stuff when I’ve got a sketch working perfectly, but in the meantime here’s what I did:

    byte highbyte = 0;
    byte lowbyte = 0;
    byte command = 1;
    word checksum = 0;
    byte highcheck = 0;
    byte lowcheck = 0;
    //Here comes the part you want to put in void loop that sends the command to the device
      command = 0x12; //The command goes here. This is the command for the LED.
      valueToWORD(0); //This value is the parameter being send to the device. 0 will turn the LED off, while 1 will turn it on.
      calcChecksum(command, highbyte, lowbyte); //This function will calculate the checksum which tells the device that it received all the data
      Serial2.write(0x55); //Command start code 1
      Serial2.write(0xaa); //Command start code 2
      Serial2.write(0x01); // This is the first byte for the device ID. It is the word 0x0001
      Serial2.write(0x00); // Second byte of Device ID. Notice the larger byte is first. I'm assuming this is because the datasheet says "Multi-byte item is represented as Little Endian"
      Serial2.write(lowbyte); //writing the largest byte of the Parameter
      Serial2.write(highbyte); //Writing the second largest byte of the Parameter
      Serial2.write(0x00); //The datasheet says the parameter is a DWORD, but it never seems to go over the value of a word
      Serial2.write(0x00); //so I'm just sending it a word of data. These are the 2 remaining bytes of the Dword
      Serial2.write(command); //write the command byte
      Serial2.write(0x00); //again, the commands don't go over a byte, but it is sent as a word, so I'm only sending a byte
      Serial2.write(lowcheck); //Writes the largest byte of the checksum
      Serial2.write(highcheck); //writes the smallest byte of the checksum
    //Now for the functions
    void valueToWORD(int v){ //turns the word you put into it (the paramter in the code above) to two bytes
      highbyte = highByte(v); //the high byte is the first byte in the word
      lowbyte = lowByte(v); //the low byte is the last byte in the word (there are only 2 in a word)
    void calcChecksum(byte c, byte h, byte l){
      checksum = 256 + c + h + l; //adds up all the bytes sent
      highcheck = highByte(checksum); //then turns this checksum which is a word into 2 bytes
      lowcheck = lowByte(checksum);

    It’s pretty rough, but I hope this helps someone who was struggling with this as much as I was.

    If you’re not familiar with some of this:

    A byte stores 256 values. A word consists of 2 bytes, and a Dword consists of 4 bytes. The bytes to be sent here were represented in hexadecimal, which is base 16. A word can be split into 2 bytes to be sent. For example: 0x1234 is made up by the bytes 0x12 and 0x34. highByte(0x1234) = 0x12 and lowByte(0x1234) = 0x34.

    Hope this helps!

  • Guys - common !! Upgrade your server !! I had to restart this video 5 times just to finish it - it kept stalling on me and going to error/failure !! Great video - but very frustrating !!

    • Upgrade your server !!

      Assuming you’re referring to the video in the product description, you’re gonna have to take it up with YouTube.

  • Hi everyone, I just bought GT-511C1 and i want to know if i can use it with an Arduino Uno and his UART port ?

    I saw in GT-511C1 datasheet a lot of function like (Verify, verifytemplate etc…) can i use it with the arduino ? Is there a specific line to note at the beginning of the code ?

    Please help me !

  • Hi i am new to this product. I am using the 511C2 version( i have no idea how have i ended up with a C2 version when on the site it says only C1 and C3), can anyone please help me with the coding part. I have connected it to my raspberry pi serially, and i want to communicate with it using the serial communication. However i want to know how should i be doing this communication. I will appreciate your help.

  • Hello everyone, I am working on my senior project and I was trying to connect this fingerprint scanner and arduino uno together. I also purchased the Jst sh jumper 4 such that they were able to connect, I am having issues with this. Can someone give me more insite if you guys are using it too. Thanks! much appreciated.

  • Hi everyone, i have bought GT-511C1, the problem that the software didn’t work with it, i can’t choose the port for it, and i need the software urgently as i use it in my graduation project, so could anyone help me with this. or if any one know the preprocessing type that this sensor use.

    • Hi, were you able to ever get this to work??? I didnt and my graduation is 2 months away and my project progress is not looking good. if you did, can you please help me out, please :)

      • The sensor must be connected directly via USB. When USB connected, the scanner will populate on your computer as a mass storage device. Once the computer has registered the mass storage device, you will be able to connect to the software and begin registering your fingerprints.

        Just connect the V+, V-, D+, and D- lines from a USB cable to the back of the scanner as shown explained below and launch the GT-511C1 software as normal.

        The connection of the sensor from the back side with the USB connections starting from the pad near to (J1) and go down: 1 - Red. 2 - White. 3 - Green. 4 - Black.

        Hope this helps,

  • Hey guys. Do you send to Brazil? Thank you.

  • Has anyone had success with or tried using this to operate a relay?

  • Has anyone successfully hooked this unit up to a Mac or Linux machine via USB?

    I’ve soldered the module directly into a USB cable using the test pads on the bottom and tested it using their windows software successfully. However I have not been able to figure out how to communicate with the module via Mac or Linux. Any information on how to do this would be a huge help!

  • Someone read “The Game” and is peackocking…

  • Does anyone know if this unit will work behind a piece of glass or clear acrylic? How about smoked acrylic? Trying to figure out ways to waterproof this!

  • Has anybody used this scanner with any PIC microcontroller? I’m thinking of using it for a finger print access control project.

    • I was… But it has really been a huge pain in the *ss… I can give you some sort of base code using pic 16F788/877A-18F4550/2550. Those are the ones I’ve tried and the module answered just great. The matter is: I wasn’t able to process the string returned from the device, despite of knowing the answer string is perfect, I can’t go beyond a mirror of the answer, but I haven’t spent much more time focused on solve this. If you make it work it’d be awesome hahaha Saludos desde México

  • Building on the great work on FutureInventions, I have made a sketch for the Arduino Mega which acts as a link between the scanner and a computer.

    Load the sketch onto the mega, open the serial port monitor in Arduino and send two letter/number commands to control the scanner.

    github link

  • Are the 5 open pads on the end of the board connected to the JST connection? Can the be used in lieu of a JST cable?

  • Adafruit makes a fingerprint scanner that is somewhat pricier then this. both sensors seem identical spec wise. they’ve prepared an arduino library for it.“ ” just curious as to whether or not this could successfully be used with this one.

  • I’m having a lot of trouble getting this to communicate with the software. I first tried using it with the 5V FTDI cable (and a 5k resistor) with no results. (And reading the comments, rsp has noted that it will not work over serial with any of the software) Also, it seems that Sparkfun has the wrong pinout. On this page it says Vcc, GND, Tx, Rx whereas the data sheet says Vcc, GND, Rx, Tx. Hopefully It didn’t damage the device. Anyways, I tried it with different baud rates as well, because the video says 115200 and the site and datasheet say 9600. So I’m guessing the video was for the C3 model? I’m a little disappointed with the documentation here. I also tried a USB connection with the pins that rsp has given me: Pin 1 (square pad) = +5V (usually the red wire in a USB cable) Pin 2 = D- (white or yellow) Pin 3 = D+ (green) Pin 4 = Ground (black) Pin 5 = Shield (optional)

    But that doesn’t seem to work. Perhaps I need the right driver for it? When I plug it in, the light for the sensor blinks quickly and then the green status light flickers very dimly. The software doesn’t recognize it, and my computer doesn’t seem to recognize it either. :/

    I’m hoping to get it working with the software first so I can better understand how to properly operate it, but if not, I’ll just have to connect it to my arduino and play around with it from there.

    • Could you tell me what you did to resolve the dimly flickering green status light? I am having the same problem and I fear that I may have fried the board from playing around with it too much.

  • I want to hook this up with an Arduino. Is this what I need?

    • You can connect the UART transmit and receive lines directly to a 5V ATmega328 Arduino. The GT-511 transmit level is 3.3V (measured), which meets the ‘328 input requirement of 0.6*Vcc. The GT-511 receive pin looks like it’s 5V tolerant, but they don’t explicitly say that, so I’d put a 5K resistor in series just for extra safeness (this is the configuration I tested, and it works fine).

      • Thanks so much! Also, do you know if the pads on the back are the same pinout as the connector on the front of the device? (Plus a square pad, I’m assuming that’s ground?)

        • The pads marked J1 are for a USB connection; the pinout is:

          • Pin 1 (square pad) = +5V (usually the red wire in a USB cable)
          • Pin 2 = D- (white or yellow)
          • Pin 3 = D+ (green)
          • Pin 4 = Ground (black)
          • Pin 5 = Shield (optional)

          To use the SDK_DEMO.exe program over USB it must be the version for the C1 model, which is here.

  • arduino code?

  • Could you bring us some C++ or CCS demo code?? Because I haven’t found any of it and I have had a really hard time trying to communicate with the device, even with the demo software, wich, in deed, does all of the functions about storage, templates, etc. But the functions that imply the fingerprint sensor itself (detect if the finger is pressed, enroll, identify or verify…) are really a pain for my brain, because hardly ever detects the finger. It almost every time goes “Timeout”. Thanks

    • I wrote a library for VC++, you can read my blog is a windows console application uncomments some lines in the _tmain function in Console.cpp to test the module

  • I need to use this fingerprint scanners in several locations. but i need only one database for all scanners. is that possible?

    • Yes, you can if you use it along a micro controller; you should develop a library to manage it and provides this special feature

      • I’m looking for the same feature. I’ve been reading the manual and I’m not sure how should that be done. Wont the sensor force me to enroll the fingerprint for validation?

  • I just got one of these and realized that there’s no connector cable. Does anyone know which one I need? I only see a 6 pin one on here.

  • Does anyone know if I could use this with an Arduino to identify fingerprints and then unlock a door if the fingerprint is known? Thanks

  • Does anyone know of a fingerprint reader like this which instead of matching live prints against stored “known” prints, just passes out some kind of fingerprint GUID or “checksum” for each fingerprint press? My problem is that I want to write software to keep track of more people than this module will hold, and I have no problem maintaining an external database of “fingerprint codes” but using this module, you have to keep all the known fingerprints stored in the module..

    Kind of what I want is the same concept as a typical RFID reader, but for fingerprints.. A long, unique, but repeatable number for each print, to be fed to be via serial…

    • Correct me if I’m wrong: I understand, the 506 bytes template is only available once the third print was taken during enrollment. Then it can be downloaded by the enrollment ID. (Should look at the C++ demo code … but I don’t have any inclination right now … sorry!)

      If the template IS available after scanning the finger, it is probably what you are looking for. It must be some sort of ‘summary’ of the print - so to say. Then it would be enough to simply compare it with other templates in the database. Perhaps applying some tolerance. I would capture the same print and create a template several times. Then see the differences between the templates. This would give some idea regarding the tolerance/deviation. Perhaps it leads somewhere.

      It seems one can download the picture of the captured print though.

      I tried finding a ‘fingerprint identification algorithm’ ‘for embedded systems’ - none of them gave the actual algorithm … maybe you are luckier or more patient … pls tell us if you solved it. :)

    • I think that’s what the 506 byte template is, which you can read using external software. I don’t think it comes out exactly the same every time though, so you have to run some sort of matching algorithm yourself. The benefit of the ones stored inside the module is the module runs that matching algorithm for you.

      Remember to flash every single fingerprint on the screen as your software does the search, CSI-style :-)

      • I think you’re basically right, but the “some sort of matching algorithm” is the problem… I don’t think it’s documented as to what you can do with that data, other than to store it externally and import it into another fingerprint reader so users don’t have to register on each device.

        I believe I know who the OEM of this device is, because it pretty much matches up with a PC based device that I bought a couple years ago, and I bought the dev kit for it, and as you imply, there are proprietary DLLs that they provide to do the matching… Nothing that could be conveyed to an embedded situation.

        Don’t get me wrong - The device itself is awesome, and if my application would allow me to pre-load all the fingerprints in, it would be perfect. This would be a great device to build a home automation / security system, etc, but for the project I have in mind, this is a perfect round peg for my square hole..

  • Why does the website say 2 comments, but show none? We’ll see if this one shows up.. I’ll ask my question in a separate comment..

    • Showed up fine. They sometimes delete comments when they are not directly related and merely, say, administrative notices. In this case, according to the RSS, something was wrong with the price. ( Expect this comment, and possibly yours, to get zapped as well :) )

Related Products