Open Source Sweetness
Setting up the fingerprint reader on Ubuntu was a piece of cake. I just installed this fingerprint application and within seconds I was recording my index finger and using it to unlock my screen saver. It even works with sudo commands, kudos to the guys that put this together!
I think my only gripe, and this seems to be a popular one, is that the gui could use a little polish. So I decided to pull out my C++ skills of yore and see if I could make a few changes - this is open source after all and anyone brave enough can get the code and compile it.
Not So Easy
As with most open source bundles, I found a readme file with directions on how to build the package. Unfortunately that didn't work for me, I ran into a compile error:
In file included from ../../src/MainWindowImpl.cpp:46:0: ../../src/../include/UserSettings.h:30:20: fatal error: QtCrypto: No such file or directory compilation terminated. make[2]: *** [MainWindowImpl.o] Error 1 make[2]: Leaving directory `/home/dsixe/Downloads/fingerprint-gui-1.03/bin/fingerprint-gui' make[1]: *** [sub-fingerprint-gui-make_default] Error 2 make[1]: Leaving directory `/home/dsixe/Downloads/fingerprint-gui-1.03/bin' make: *** [sub-bin-make_default] Error 2Taking a look at the makefile in /fingerprint-gui-1.03/bin/fingerprint-gui I found that a reference to QtCrypto was missing, so I added it:
INCPATH = -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/QtCrypto -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4 -I. -I../../include -I../../upek/include -I. -I.Note that for some reason QtCrypto doesn't live in qt4 like the other Qt libraries.
Recompile, now I see:
g++ -m64 -Wl,-O1 -o fingerprint-gui DeviceHandler.o PermissionHandler.o AboutImpl.o ExistDialogImpl.o Fingerprint.o FingerprintData.o UpekDevice.o GenericDevice.o FingerprintGUI.o MainWindowImpl.o SavedDialogImpl.o MessageDialogImpl.o PamTester.o xmlwriter.o UserSettings.o UsbDevice.o moc_DeviceHandler.o moc_AboutImpl.o moc_ExistDialogImpl.o moc_Fingerprint.o moc_FingerprintDevice.o moc_FingerprintData.o moc_MainWindowImpl.o moc_SavedDialogImpl.o moc_MessageDialogImpl.o moc_PamTester.o qrc_GUI-res.o qrc_About-res.o -L/usr/lib/x86_64-linux-gnu -lusb-1.0 -lfprint -lpam -ldl -lpthread -lQtXml -lQtGui -lQtCore UserSettings.o: In function `UserSettings::UserSettings(char*)': UserSettings.cpp:(.text+0x1fcc): undefined reference to `QCA::Cipher::~Cipher()' UserSettings.cpp:(.text+0x1fd4): undefined reference to `QCA::SecureArray::~SecureArray()' UserSettings.cpp:(.text+0x1fe1): undefined reference to `QCA::SecureArray::~SecureArray()'It took me a long time to figure out that it was failing to link in the QtCrypto library. Resolved by adding -lqca to the same makefile:
LIBS = $(SUBLIBS) -L/usr/lib/x86_64-linux-gnu -lusb-1.0 -lfprint -lpam -ldl -lpthread -lQtXml -lQtGui -lQtCore -lqcaFinally, a clean compile!
Changing the Image
Now that I could compile the code, I went about making a simple change which didn't really involve altering any code. I wanted to change the animated gif file fingerprint-gui-1.03/src/res/Animation.gif to something else, and this required recompiling. For testing purposes I just converted the existing Fingerprint.png file to a gif and renamed it Animation.gif.
Now all I had to do is run make install and it should work. Once again, not so fast, something wasn't working. I finally just reinstalled clean from the repository and manually copied the file myself:
sudo cp fingerprint-gui-1.03/bin/fingerprint-plugin/fingerprint-plugin /usr/lib/fingerprint-gui/fingerprint-pluginAnd now this is what I see when prompted to scan my finger:
This got me a little closer trying to do the same on Fedora 16. Had a few includes for qt4 which the compiler doesn't seem to like as well. Think I'll redownload the source and try again.
ReplyDeleteMany thanks!
ReplyDeletethanks so much
ReplyDeletethank you for this article. it helped me to change the image. I didnt like the default image.
ReplyDeletemy system is, Ubuntu 13.10 64bit
for some people who also interested in doing same, here are the commands.
1) Downloaded fingerprint-gui from below source
http://ullrich-online.cc/nview/Appliance/fingerprint/download/fingerprint-gui-1.05.tar.gz
2) Install all dependencies
sudo apt-get install libxtst-dev build-essential libqt4-dev qt4-qmake
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libfprint-dev
sudo apt-get install libpam0g-dev
sudo apt-get install libqt4-dev
sudo apt-get install libqca2-dev
sudo apt-get install libfakekey-dev
sudo apt-get install libpolkit-qt-1-dev
3) cd fingerprint-gui-1.05/
qmake-qt4 LIBPOLKIT_QT=LIBPOLKIT_QT_1_1
make
sudo make install
4) sudo reboot now
Everything should be fine now.