Loading
2016. 1. 15. 16:13 - Clarendon

envy 13 우분투에서 지문인식 이용하기 (Using validity sensors fingprint scanner 138a:0050 in Ubunt 15.10)






드디어 성공.

여기에 기록.

내 envy 13은 13-d037TU.

제품 명은 나라마다 다르다. 미국에서는 13 d008na.

사용하는 지문 스캐너는 138a:0050 Validity Sensors, Inc. Swipe Fingerprint Sensor.



 먼저, 필요한 패키지를 설치한다.


Open up a terminal (Ctrl+Alt+T) and add the PPA for fprintd.

$ sudo add-apt-repository ppa:fingerprint/fprint

Update your installation.

$ sudo apt-get update && sudo apt-get upgrade

Get the required packages.

$ sudo apt-get install fprintd libpam-fprintd gksu-polkit


+ 이유가 무엇인지 모르겠지만, 내 컴퓨터에는 gksu-polkit이 설치되지 않았다. 그래서 그냥 deb 파일을 직접 받아서 설치했다.

http://old-releases.ubuntu.com/ubuntu/pool/universe/g/gksu-polkit/

여기서 받아서 설치한다. 총 세개의 패키지가 필요하다. 의존하는 패키지들이니 순서대로 설치하라

libgksu-polkit-dev, libgksu-polkit, gksu-polkit



이제 드라이버 설치.

lsusb로 벤더를 확인, 구글에서 드라이버를 찾아보았다.



$ lsusb -s 001:005 -v

Bus 001 Device 005: ID 138a:0050 Validity Sensors, Inc. Swipe Fingerprint Sensor
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass        16
  bDeviceProtocol       255
  bMaxPacketSize0         8
  idVendor           0x138a Validity Sensors, Inc.
  idProduct          0x0050 Swipe Fingerprint Sensor
  bcdDevice            0.60
  iManufacturer           0
  iProduct                0
  iSerial                 1
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           46
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           4
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               4

138a:0050은 지문 인식 프로그램이 기본적으로 지원하는 기기에 없다.

수동으로 드라이버를 찾아 설치해 주어야 한다. 다행스럽게도 소스코드로는 있다.

git을 이용, 소스를 받아 컴파일 한다.


$ mkdir ~/fprint

$ cd ~/fprint

$ git clone https://github.com/payden/libfprint.git


다운을 받았으니 이제 컴파일 해야한다. 컴파일에 필요한 패키지들을 받아야 한다. 나는 ubuntu-dev-tools와 build-essential을 일단 받았고 그럼에도 불구하고 몇몇의 더 부족한 패키지들이 있었던 것으로 기억한다. libgtk2.0도 설치해야 했고 그 외에도 더 있었던 것 같다. 모두 apt-get install로 설치해준다. (패키지가 없어서 오류가 발생하면 그때 그때 찾아서 설치했다) 터미널에 남아있는 로그에 따르면 다음과 같은 설치도 했었다.


sudo apt-get install g++ xutils-dev
sudo apt-get install make automake autoconf
sudo apt-get install checkinstall





우선 소스가 있는 디렉토리로 들어간다.

$ cd ~/fprint


readme 파일과 install 파일을 읽어보았다.


그에 따르면 설치는 './configure'로 시작되어야 하는데, configure 파일이 없다.


대신 configure.ac 가 있다. 검색해보니 .ac확장자는 autoconf 실행을 위한 것이었다.  autotools를 이용해 매크로로 시스템환경 여기저기를 체크해서 configure을 만드는 것 같다. autotools를 설치해야 했던 것으로 기억한다. 만일 설치를 하지 않은 채로 실행을 하려고 하면 터미널에서 친절하게 어떤 패키지를 설치하라고 하니 그대로 따르면 될 것이다.


다음과 같이 하거나 혹은 그냥 내 패키지를 받아서 설치하면 된다.



우선 컴파일과정을 설명한다.


$ autoreconf

$ make check

$ make -m install

$ sudo checkinstall make install


checkinstall을 이용해 패키지로 만든 뒤에 설치하게 된다. 그 위의 두 줄은(make check, make -m install) 책에서 한번 시도해보라고 하길래 시험삼아 해보았다. 설치에 꼭 필요한 것은 아니다.

checkinstall에서 이것저것 물어보면 답해준다. 버전을 선택하라고 하면 나와있는 후보들 중 하나를 선택해 그대로 기입하고 엔터를 누르는 식이다. 부가 설명을 적으라는 등의 메세지가 나올 것이다. 친절하게 해준다.



혹은 이 파일을 다운로드 받아 설치하라.

libfprint_0.5.1-1_amd64.deb




인스톨이 되었을 것이다.





설정 - 사용자계정 으로 들어가보면


지문 인식으로 로그인 하기 버튼이 있을 것이다. 클릭하고 지문을 등록해야한다. 지문을 등록하기 전에 알아둘 것이 있다.


윈도우에서와 같이 인식률이 많이 높지 않으니 먼저 지고한 수련이 필요하다.

먼저, 자신이 지문을 긁는 게 적절한 속도인지 확인해보자


sudo fprint_demo -d


드라이버 설치가 잘 되었다면 지문스캐너가 인식되어있을 것이다. 일단 오른쪽 검지 손가락 하나를 등록해보자. 'right indexfinger' 옆의 'enroll' 버튼을 누르면

지문 등록이 시작된다.

지문 인식기기에 불이 들어오는 것을 확인하고 손가락을 swipe 해주자

문제는, 일정한 속도를 유지해야 한다는 것이다.

총 5회 등록을 하게 되는데, 화면에 나오는 자신의 지문을 보면서 적정 속도를 찾아내라.

예쁘게 나올 때까지 연습하는 것이다. enroll을 몇 번 더 해보자 마음에 들게 선명하게 지문이 나올 때까지.


속도에 따라 지문 그림이 짧게도 나오고 길게도 나온다. 일정치 못한 속도로 스캔하면 그림이 뭉그러진다. 지문을 스캔할 때 스캐너가 손가락의 움직임을 측정해서 지문을 등록하게 한다면 이런 문제는 없을 것 같은데, 아쉽게도 그렇지 못하다. 그냥 우리는 소시민이므로 맞춰주자. 속도를 일정하게 하도록 노력해라.


+ 나는 아주 미세하게 속도를 바꾸어서 등록해보았다.(1회의 swipe시 일정한 속도를 유지함으로써 선명한 것은 유지하면서, 지문 그림의 길이를 다양하게 했다.)그렇게 하면 인식률이 높아지지 않을까 기대했기 때문이다.


이제 확인해보자. verify 탭으로 이동해서 확인할 손가락은 선택하고 verify를 누르면 지문인식기가 가동된다.

친절한 속도로 스와이프해준다. 그러면 결과가 나온다.

확인해보자. 맞으면 finger matches! 하면서 경쾌한 느낌표를 발사하며 인식이 정상적으로 되었음을 알리고

실패하면 finger does not match.라고 우울한 메세지가 나타난다.

몇 번 더 시도해보면 어떻게 인식을 시키는 것이 이상적인지 알 수 있을 것이다.

verify 버튼을 누르면서 계속 시도해 보자. 스페이스바를 눌러도 된다.


(...)


하산할 때가 되었는가?지문이 살짝 닳은 느낌이 들 정도로 연습을 했는가?


그럼 이제 확인해보자.


설정- 사용자계정으로 들어가 지문을 등록하자.

이제 실전이다.

다섯번 등록을 시키도록 되어있다.


..준비는 되어있다.

그동안의 노력을 떠올려라

마치 서태웅이 눈을 감고 볼을 던지듯이..


Swipe-


끝날 때까지 끝난 게 아니다. 다시,

Swipe-


(...)


다 끝났다면 이제 우측상단의 전원버튼을 눌러 계정 전환을 누르든 터미널에서 sudo xterm을 해보자

그러면 이제 비밀번호를 입력하라는 공란 대신 지문을 인식해 달라는 메세지가 나타난다.


Swipe-

다시 강조하지만 정확한 속도와 일정한 밀착된 정도가 중요하다.

인식이 되면 로그인이 되거나 명령이 실행될 것이다.


-END-


p.s. 'fingerprint-gui'라는 다른 프로그램도 있다. 이건 좀 더 유려한 그래픽을 가지고 있다. 지문을 인식해야하는 상황일 때(sudo등의 명령어를 사용하려고 할 때) 화면 밑에 지문을 스캔해 달라는 그래픽이 스르륵하고 올라오는 식이다. 그러나 이 프로그램은 아직 인식률이 너무 떨어져서 지문을 스캔했을 때 거의 지문이라기 보다 지렁이같은 그림이 나타난다. 추후 버전에서 나아지기를 바라면서 fingerprint-gui는 사용하지 말자.