Last month I was asked by a colleague if I knew anything about how to program fingerprint scanning devices – this isn’t something I’ve worked with before, but it sounded interesting so I decided to spend some of my own time researching how to get started.

First thing was to find the right hardware

The first thing I needed was hardware – an initial search on Amazon for “fingerprint scanner” returned a few hardware devices, but they looked pretty tied into a single use case – authenticating a user to log into a Windows machine. This isn’t really what I was looking for – I wanted something from which I could capture an image of a fingerprint.

The phrases fingerprint scanner and fingerprint reader seem to be used interchangeably. I prefer the term “scanner” or “sensor” for hardware that produces an image – the term “reader” seems more passive, a function that could be satisfied by software reading from a pre-generated image.

After broadening my search using Bing/Google, I found a site which reviewed fingerprint sensors. This site seemed to have more of the items of hardware that I was interested in – and one in particular jumped out at me, the Suprema BioMini. This advertises a C# SDK, which was a huge selling point for me. I looked at a few more fingerprint scanners, which claimed to capture fingerprint images (technically known as “Enrollment”), but I could find very little explanation of how this would actually be done using code. I eventually decided that the C# SDK gave the BioMini an advantage, and bought one from Amazon.

This is where things started to go wrong

When the BioMini arrived, it looked good – the device felt solid and robust. The package came with a USB pen drive containing the drivers for the device, and a PDF document describing how to install the drivers.

WP_20160224_20_01_45_Pro

If you acquire the BioMino hardware and there’s no driver shipped with it, don’t worry – you can get the drivers from the downloads section of the Suprema Inc. website. However, you do need to register and log-on to get access to this section.

WP_20160224_20_03_35_Pro

This was a pretty simple and standard installation – just don’t attach the device until you’ve installed the drivers from the executable. You can check that the drivers installed correctly by attaching the device, and then looking at the USB devices installed in Windows Device Manager.

The driver executable I received was unsigned – I wish software distributors would treat the digital signature of their drivers as an important security feature. With the current focus on the security of the Internet of Things (or general lack thereof), knowing that the software you’re running comes from a trusted source is critical.

It’s not what I got that’s the problem – it’s what I didn’t get

What didn’t come on the USB pen drive from my reseller was the BioMini SDK. This was a bit frustrating – I’ve done a lot of searching online and whereas there’s lot of information from Suprema about how great the SDK is, there’s actually very little information about how to obtain this SDK. At the time of writing this, it doesn’t seem to be available from their download site either (to me anyway) – there’s a “Download” link on this page, but this redirects me to their downloads search page here…with no search results.

I’ve contacted my reseller to ask if they can supply this, and I’ve also contacted Suprema directly. So far – well over a week after emailing them – I’ve received no response from either. (I’ll update this article if/when I get a response).

So at this point, I was intending to re-package the device and send it back to my Amazon reseller for a refund – and I was a bit annoyed. The device wasn’t particularly cheap, and I couldn’t find any helpful documentation about how to use or develop for this device from the manufacturer – not even as a paid service. I seemed to have reached the end of the internet.

UPDATE: I reached out to Suprema three times – their advertised direct support email address (no reply from this), Twitter (nothing from this either), and finally though their website’s online form – and I did get a reply from this third avenue. The information supplied to me is that the SDK is available as a separate purchase to the fingerprint scanner.

After this things got better

As a last ditch effort before returning the scanner, I spent a lot more time on Bing and Google, trying to find if anyone else had experience working with the BioMini. One colleague suggested as a long shot that I should check if the device was TWAIN compatible – it’s just a scanner, so that’s a reasonable thing to check. I used Twacker to check if it was a TWAIN compatible device – unfortunately the sensor wasn’t detected so I had to call that one as a dead end.

Eventually I came across a company called Neurotechnology which sell a suite of biometric SDKs. Most interestingly to me, they have a Free Fingerprint Verification SDK (FFV SDK) – with support for .NET –  which allows images to be created from a range of scanners, and allows a limited number of fingerprints to be stored in a database for verification.

And fortunately – the BioMini is supported.

The FFV SDK is a big download – 140MBytes – but this is a comprehensive package, which includes libraries, samples and documentation for a range of programming languages (C++, Delphi, .NET, VB6, Java). The documentation is excellent – it’s been written for developers to allow them to start building applications quickly.

And it worked. So I won’t be returning the device as it’s now more than a paperweight. When I ran the sample program, a window appeared asking me to choose the device that I wanted to connect to. I selected “Suprema”.

choose scanner

I was then shown a Windows form, with options to Enroll and Verify in the top left corner.

C# sample app open

On clicking Enroll, a dialog box appeared prompting me to enter a name for the scan.

enroll

After clicking OK, if there’s a problem and it can’t detect your fingerprint sensor, you’ll get a warning like this:

noscanner error

However, if the program does see the device successfully, it’ll wait to detect a finger on the device. When I did this, the device scanned my finger (a red light appeared from within the device somewhere), and an image appeared on the screen showing my fingerprint. Success!

C# sample app

The “Redacted” text in the image above is something I did to the screenshot – it’s not a feature of the software.

I only have a couple of negative observations:

  • Windows 10 doesn’t seem to be supported yet (according to their website);
  • The samples are projects from Visual Studio 2005. They still worked…but showing they’re from 11 years ago doesn’t point towards a product which has been worked on recently.

Conclusion

The BioMini fingerprint scanner is solidly built, and receives good reviews online – however, it’s let down by uncertainty around how to obtain, licence and build upon the SDK which allows developers to actually use the device. Fortunately there are free and commercial alternatives available, and I found the Neurotechnology FFV SDK worked well – however, Windows 7 is the last supported OS (according to the website) and both Windows 8 and 10 have been out for some time now.

I haven’t finished with this device and FFV SDK – next I’ll research how to use the SDK to scan a fingerprint, and generate a bitmap image of the print.