
Focal-systems FT9201 (2808:93a9) USB 지문 인식기를 위한 Linux libfprint 드라이버 — Linux에서 기본적으로 FocalTech의 자체 Windows 매칭 엔진을 실행하며, Wine이 필요 없습니다. 다른 Windows Hello 전용 리더기를 포팅하는 방법도 포함되어 있습니다.
리눅스 지문 인식 지원을 위한 Focal-systems FT9201 USB 리더기
(2808:93a9, 독립형 Windows Hello 동글로 판매됨)의
libfprint 드라이버입니다.
센서는 작은 96×96 광학 리더기입니다. libfprint의 내장 매처는 그렇게 작은 이미지에서 성능이 좋지 않으므로, 이 드라이버는 대신 FocalTech 자체 매칭 엔진 — 서명된 Windows 드라이버의 ftWbioEngineAdapter.dll — 을 재사용하며, 작은 인프로세스 PE 로더로 리눅스에서 네이티브로 실행합니다. Wine, Windows, 클라우드가 필요 없습니다.
이 저장소는 단순한 드라이버가 아니라 재사용 가능한 방법론입니다. 이 기술 — Wine 없이 리눅스에서 벤더의 Windows 매칭 엔진을 네이티브로 실행 — 은 다른 "Windows Hello 전용" 리더기로 확장되며, SDCP 보안 채널이 있는 것들 (Synaptics/Goodix/ELAN/EgisTec 계열 암호화 센서)까지 포함하며, 선택적
src/crypto_shims.c모듈을 통해 가능합니다. FT9201은 작업 예제이며, 인프로세스 로더, WinBio 브리지, 암호화 우회 계층은 다음 장치로 이어집니다. 단계별 방법과 그대로 재사용할 사항은 **PORTING.md**를 참조하세요.
실제 하드웨어에서 종단 간 작동: fprintd / 명령줄 도구를 통해 등록 및 확인 가능하며, 설치 후 KDE/GNOME에서 사용 가능합니다. 벤더의 실제 알고리즘을 사용하여 지문을 매칭합니다.
다음 리더기에서 개발 및 테스트되었습니다: 이 특정 리더기 (ASIN B0DK7LQZGH) — 2808:93a9의 FT9348W 변형.
주의사항:
2808:93a9 장치의 해당 FT9348W 변형에서만 테스트됨.ft_engine.c는 약 450줄의 로더로, ftWbioEngineAdapter.dll을 메모리에 매핑하고, 가져오는 약 90개의 kernel32 함수를 제공하며, 가짜 Windows TEB를 설정하고, 등록/확인을 위해 엔진의 WinBio 인터페이스를 호출합니다.fprintd의 기본 MemoryDenyWriteExecute 강화 설정에서 실행되며, 보안 설정을 비활성화할 필요가 없습니다.전체 기술 문서는 docs/how-it-works.md를 참조하십시오.
빌드 도구 + libfprint의 빌드 종속성. Fedora/Nobara에서:
sudo dnf install git meson ninja-build gcc cabextract python3 \
glib2-devel gusb-devel nss-devel pixman-devel gobject-introspection-devel \
libgudev-devel systemd-devel
(Debian/Ubuntu: 해당 패키지 — libglib2.0-dev libgusb-dev libnss3-dev libpixman-1-dev libgudev-1.0-dev libsystemd-dev, 추가로 cabextract.)
git clone https://github.com/OMGrant/ft9201-libfprint
cd ft9201-libfprint
scripts/fetch-blobs.sh # pull the vendor DLL + MCU firmware (see note below)
scripts/build.sh # clone pinned libfprint, graft the driver in, build
설치하지 않고 시도해보기:
FT9201_ENGINE_DLL=$PWD/blobs/ftWbioEngineAdapter.dll \
LD_LIBRARY_PATH=libfprint/build/libfprint \
libfprint/build/examples/enroll
KDE/GNOME/로그인용 설치 (병렬 설치; 배포판의 libfprint은 그대로 두며, 강화 설정이 비활성화되지 않습니다):
sudo scripts/install.sh
fprintd-enroll
모든 것을 되돌리려면: sudo scripts/install.sh --uninstall.
이 저장소는 독점 바이너리를 포함하지 않습니다. 두 파일은 FocalTech의 것이며, 빌드 시 scripts/fetch-blobs.sh에 의해 기존 공개 소스에서 가져옵니다:
| 파일 | 설명 | 출처 |
|---|---|---|
어느 다운로드 URL이 변경된 경우에도 다음 두 파일만 있으면 됩니다:
ftWbioEngineAdapter.dll — Microsoft 업데이트 카탈로그에서 "FocalTech Electronics Biometric" (드라이버 1.0.3.58, 하드웨어 ID USB\VID_2808&PID_93A9와 일치)을 검색하십시오. .cab을 다운로드하여 cabextract로 추출하고 ftWbioEngineAdapter.dll을 blobs/에 넣으십시오.FOCALFP_9348_FW_APP 심볼을 포함하는 FocalTech Linux libfprint blob의 사본을 가져와서 (예: ft9201-static에서) python3 scripts/extract-firmware.py <that-libfprint-2.so> src/ft9201_fw.h를 실행하십시오.그런 다음 scripts/build.sh를 다시 실행하십시오.
재사용 가능한 방법론과 암호화 센서 경로는 다음 작업을 추가로 기반으로 합니다:
이것이 유일한 접근 방식은 아닙니다 — 대안들은 주로 어떻게 FocalTech의 매처를 재사용하는지에서 다릅니다 (모두 재사용합니다; 작은 센서는 일반 매칭을 불가능하게 합니다).
9338 → 93a9)합니다.
.deb를 설치하고 두 바이트를 패치하며 리버스 엔지니어링이 필요 없습니다. 하지만 TOD 지원 libfprint가 필요하며 (Debian/Ubuntu 계열; 기본 Fedora/Arch에는 없음), 시스템 전체 libfprint를 오래되고 완전히 폐쇄된 빌드로 교체하며, 패키지 관리자와 싸워 고정시켜야 합니다. 반면 이 프로젝트는 오픈 드라이버를 제공하고, 병렬 설치 (배포판의 libfprint은 그대로 둠), TOD가 없는 메인라인 libfprint에서 실행되며, 분리된 벤더 매처 DLL만 로드합니다 — 이것이 리버스 엔지니어링의 성과입니다.해당 .deb/RPM 패키지가 재배포하는 독점 Linux TOD 드라이버는 GPD Win 4용 FocalTech/GPD 릴리스였으며 나중에 공식 배포에서 제거된 것으로 보입니다 — 그래서 지금은 커뮤니티 재호스트로만 존재합니다. (또한 일부 GPD Win 4 장치는 이 FocalTech 부품이 아닌 다른 센서인 Chipsailing CS9711을 탑재합니다.)
1c7a:0577)용 Linux 드라이버 노력, 또 다른 누름식 "Windows Hello 전용" 리더기 (52×72 활성 센서). 다른 벤더와 USB 프로토콜이지만 동일한 호스트 매칭 형태: Windows 패키지에는 벤더 엔진 어댑터 DLL (EgisTouchFPEngine0577.dll, VBS 엔클레이브 없음)이 포함되어 있으므로 **PORTING.md**의 방법이 적용됩니다.드라이버와 로더 (src/, scripts/)는 libfprint와 동일한 LGPL-2.1 이상입니다. FocalTech DLL과 펌웨어는 해당 회사의 자산이며 여기에 배포되지 않습니다 — 사용자가 직접 가져와야 합니다. 이 프로젝트는 사용자가 소유한 하드웨어를 위한 상호 운용 도구입니다; FocalTech 코드를 포함하거나 재라이선스하지 않습니다.
ftWbioEngineAdapter.dll| 매칭 엔진 |
| Microsoft 업데이트 카탈로그의 FocalTech 서명 Windows 드라이버 |
FT9348W MCU 펌웨어 (src/ft9201_fw.h) | 센서가 실행하는 8051 펌웨어 | 공개 ft9201-static blob에서 추출 (심볼 FOCALFP_9348_FW_APP) |