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:
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: