Fingerabdruckscanner - BioPod in OpenWrt

For einiger Zeit wurde ich von einem Kunden gebeten das Zutrittskontrollsystem nicht nur mit standarten Proximity cards und Touch-Memory zu versorgen, als auch mit dem Zugang durch Fingerabdrücke. Ich kann mich daran erinnern, dass ich damals überhaupt keine Zeit dafür sowie auch keine Ahnung hatte, wie das zu machen ist. Deshalb habe ich abgesagt und den Kunden verloren.

For kurzem habe ich eine Einrichtung gefunden, welche USB BioPod heißt und von der Firma APC erstellt ist. Es wird ein Biometric-Sensor AES3500 in dieser Einrichtung verwendet. Versuchen wir diese an den Router anzuschließen und eine Fingerabdruckabbildung zu bekommen.

Auf der Konfigurationsstufe von OpenWrt sind folgende Module auszuwählen:
Libraries:
<M> libjpeg
Utilities:
<M> jpeg-tools

Es gibt keine Unterstützung für APC USB Biopod in OpenWrt.

Den Treiber für Linux für APC USB Biopod kann hier heruntergeladen werden: http://ww2.cs.fsu.edu/~micsmith/devices/ Vielen Dank seinen Autoren. Aber ehrlich gesagt, kann man nach seinem Herunterladen bemerken, dass er nicht aktuell ist und nicht ab sofort sich zusammenbauen läßt. Diese Situation wird noch schlimmer durch den Mangel an den irgendwelchen Dokumentationen, was mit ihm zu machen ist.

Da wir damit schon begonnen haben, machen wir es weiter. Nachdem ich ein bisschen in Google gesucht habe, um zu verstehen, woraus ein USB-Treiber besteht. Es hat sich herausgestellt, dass alles nicht so schlimm ist. Es wäre interessant selber einen Treiber für Linux für APC BIOPOD zu schreiben, aber dafür wird viel Zeit gebrauch sowie auch Dokumentationen für den Sensor selbst...

Also, nachdem ich einige Zeit daran gearbeitet habe, habe ich eine betriebsbereite Version als Ergebnis bekommen. Ich werde hier nicht erzählen, was und wo zu korrigieren ist, ich schlage einfach vor die von mir korrigierte Version des Treibers APC BIOPOD für Linux zu benutzen biopod_linux_drv.tar.bz2.

Es ist aber zu beachten, dass der Treiber mittels eines Cross-Compilers zu bauen ist. Wie dies zu machen ist, kann man auch in Makefile zu lesen. Beim Zusammenbau ist folgendes zu erfüllen: make testers (Dienstprogramme werden zusammengebaut), und dann make(der Modul selbst wird zusammengebaut).

Kopieren wir das Verzeichnis biopod in den Abschnitt MyData der USB-Stick (den Abschnitt, welcher am Verzeichnis home montiert wird)

Also, loaden wir und installieren die Pakete:

root@OpenWrt:/# opkg install bash bash-completion
Installing bash (3.2-2) to root...
Downloading ftp://ftp:ftp@192.168.0.9/bash_3.2-2_brcm47xx.ipk.
Installing libncurses (5.7-3) to root...
Downloading ftp://ftp:ftp@192.168.0.9/libncurses_5.7-3_brcm47xx.ipk.
Installing bash-completion (20080705-1) to root...
Downloading ftp://ftp:ftp@192.168.0.9/bash-completion_20080705-1_all.ipk.
Configuring libncurses.
Configuring bash.
Configuring bash-completion.
root@OpenWrt:/# opkg install libjpeg jpeg-tools
Installing libjpeg (6b-1) to root...
Downloading ftp://ftp:ftp@192.168.0.9/libjpeg_6b-1_brcm47xx.ipk.
Installing jpeg-tools (6b-1) to root...
Downloading ftp://ftp:ftp@192.168.0.9/jpeg-tools_6b-1_brcm47xx.ipk.
Configuring libjpeg.
Configuring jpeg-tools.

Jetzt gehen wir in das Verzeichnis/home/biopod. Weiter führen wir eine magische Vorgehensweise aus.

Laden wir den Modul und prüfen die Ausgabe des Befehls lsmod:

root@OpenWrt:/home/biopod_dlink# ./biopod_load
root@OpenWrt:/home/biopod_dlink# lsmod |grep bio
biopod 9568 0
usbcore 103600 7 biopod,snd_usb_audio,snd_usbmidi_lib,usb_storage,ohci_hcd,ehci_hcd

Es ist nicht schwer zu erraten, dass die Script biopod_unload den Modul выгружает.
Weiter schließen wir APC BIOPOD an und prüfen die Ausgaben dmesg und ls:

root@OpenWrt:/home/biopod_dlink# dmesg
usbcore: registered new interface driver biopod
usb 1-1.2: new full speed USB device using ohci_hcd and address 4
USB Biopod device now attached to USBBiopod-192
root@OpenWrt:/home/biopod_dlink# ls /dev/bio*
/dev/biopod0

Der Modul wurde geladen. Die Einrichtung wurde erstellt. Es scheint gearbeitet zu haben! Prüfen wir..
Starten wir die Script setdefaults.sh (dem Namen nach konfiguriert biopod AES3500)

root@OpenWrt:/home/biopod_dlink# ./setdefaults.sh
80 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
80 0 81 0 82 0 83 10 84 7 85 7F 86 3 87 1 88 2 89 3 8A 5 8B 2F 8C 7A 8D 0 8E 20 8F 22 90 0 91 14 92 3
93 0 94 F 95 0 96 7F 97 4 98 20 99 0 0 0 0 0 9C 0 9D 0 9E 0 0 0 A2 2 A1 3 A7 8 A9 40 B4 5 BB 22

Wir werden einen Abdruck des Fingers schaffen. Wir bringen den Finger zum Sensor heran und starten createFingerprints.sh:

root@OpenWrt:/home/biopod_dlink# ./createFingerprints.sh
count0
fprint0
0 0 81 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 count =
8329
Starting ioctl based image retrievalioctl biopod_start called with retval 0
ioctl biopod_image called with retval -1
ioctl biopod_stop called with retval 0
count01
fprint01
0 0 81 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 count =
8329
Starting ioctl based image retrievalioctl biopod_start called with retval 0
ioctl biopod_image called with retval -1
ioctl biopod_stop called with retval 0

Als Ergebnis wurde eine Datei mit dem Fingerabdruck im laufenden Verzeichnis erstellt. Bei mir sieht es wie folgt aus:

Bestellen Sie einen APC BIOPOD AES3500 bei uns: