अपडेट पर वापस जाएँ
UpdatedAug 20, 2026

ft9201-libfprint — Updated!

Focal-systems FT9201 (2808:93a9) USB फ़िंगरप्रिंट रीडर के लिए Linux libfprint ड्राइवर — FocalTech के स्वयं के Windows मैचिंग इंजन को Linux पर मूल रूप से चलाता है, कोई Wine नहीं। अन्य Windows-Hello-only रीडर को पोर्ट करने की एक विधि शामिल है।

साझा करें

ft9201-libfprint

Linux फिंगरप्रिंट समर्थन Focal-systems FT9201 USB रीडर के लिए (2808:93a9, जो एक स्टैंडअलोन विंडोज हैलो डोंगल के रूप में बेचा जाता है), libfprint ड्राइवर के रूप में।

Focal-systems FT9201 USB fingerprint reader

सेंसर एक छोटा 96×96 ऑप्टिकल रीडर है। libfprint का अंतर्निहित मिलानकर्ता इतनी छोटी छवि पर खराब काम करता है, इसलिए यह ड्राइवर इसके बजाय FocalTech के स्वयं के मिलान इंजन का पुन: उपयोग करता है — उनके हस्ताक्षरित विंडोज ड्राइवर से ftWbioEngineAdapter.dll — जो लिनक्स पर एक छोटे इन-प्रोसेस PE लोडर के साथ मूल रूप से चलता है। कोई Wine, कोई विंडोज, कोई क्लाउड नहीं।

यह रिपॉजिटरी केवल एक ड्राइवर नहीं, बल्कि एक पुन: प्रयोज्य विधि भी है। तकनीक — विक्रेता के विंडोज मिलान इंजन को लिनक्स पर मूल रूप से चलाना, बिना Wine के — अन्य "केवल विंडोज हैलो" रीडरों पर लागू होती है, जिनमें वे भी शामिल हैं जो SDCP सुरक्षित चैनल (Synaptics/Goodix/ELAN/EgisTec-श्रेणी के क्रिप्टो सेंसर) भेजते हैं, वैकल्पिक src/crypto_shims.c मॉड्यूल के माध्यम से। FT9201 कार्य उदाहरण है; इन-प्रोसेस लोडर, WinBio ब्रिज, और क्रिप्टो-बाइपास लेयर अगले डिवाइस पर ले जाए जाते हैं। चरण-दर-चरण विधि और जो यथावत पुन: उपयोग किया जा सकता है, उसके लिए PORTING.md देखें।

स्थिति

वास्तविक हार्डवेयर पर एंड-टू-एंड कार्य कर रहा है: fprintd / कमांड-लाइन टूल्स के माध्यम से एनरोल और वेरिफाई करें, और एक बार स्थापित होने पर KDE/GNOME में। यह विक्रेता के वास्तविक एल्गोरिदम का उपयोग करके आपकी उंगली का मिलान करता है।

इस सटीक रीडर (ASIN B0DK7LQZGH) के विरुद्ध विकसित और परीक्षण किया गया — 2808:93a9 का FT9348W वेरिएंट।

चेतावनियाँ:

  • केवल 2808:93a9 डिवाइस के उस FT9348W वैरिएंट पर परीक्षण किया गया।
  • मिलानकर्ता एक मालिकाना बाइनरी है जिसे हम कॉल करते हैं; हम उसके अंदर बग ठीक नहीं कर सकते।
  • x86-64 केवल (DLL और लोडर 64-बिट हैं)।

यह कैसे काम करता है (संक्षिप्त संस्करण)

  • USB इनिशियलाइज़ेशन + फ़र्मवेयर-बूट अनुक्रम FocalTech के स्वयं के ड्राइवरों से रिवर्स-इंजीनियर किया गया था; 8051 MCU फ़र्मवेयर अपलोड किया जाता है, फिर एक विशिष्ट रजिस्टर-कॉन्फ़िग अनुक्रम इसे शुरू करता है।
  • प्रत्येक कैप्चर (96×96) को 64×80 में केंद्र-क्रॉप किया जाता है जैसा कि इंजन अपेक्षा करता है।
  • ft_engine.c एक ~450-लाइन का लोडर है जो ftWbioEngineAdapter.dll को मेमोरी में मैप करता है, इसके द्वारा आयात किए जाने वाले ~90 kernel32 फ़ंक्शन प्रदान करता है, एक नकली विंडोज 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     # विक्रेता DLL + MCU फ़र्मवेयर खींचें (नीचे नोट देखें)
scripts/build.sh           # पिन किया हुआ libfprint क्लोन करें, ड्राइवर को ग्राफ्ट करें, बिल्ड करें

बिना कुछ इंस्टॉल किए इसे आज़माएँ:

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 द्वारा बिल्ड समय पर मौजूदा सार्वजनिक स्रोतों से लाई जाती हैं:

फ़ाइलयह क्या हैयह कहाँ से आता है
ftWbioEngineAdapter.dllमिलान इंजनMicrosoft अपडेट कैटलॉग पर FocalTech का हस्ताक्षरित विंडोज ड्राइवर
FT9348W MCU फ़र्मवेयर (src/ft9201_fw.h)8051 फ़र्मवेयर जो सेंसर चलाता हैसार्वजनिक ft9201-static ब्लॉब से निकाला गया (प्रतीक FOCALFP_9348_FW_APP)

मैन्युअल रूप से बाइनरी प्राप्त करना

यदि कोई डाउनलोड URL बदल गया है, तो आपको केवल उन दो फ़ाइलों की आवश्यकता है:

  • ftWbioEngineAdapter.dll — Microsoft अपडेट कैटलॉग में "FocalTech Electronics Biometric" खोजें (ड्राइवर 1.0.3.58, हार्डवेयर आईडी USB\VID_2808&PID_93A9 से मेल खाता है)। .cab डाउनलोड करें, cabextract से निकालें, और ftWbioEngineAdapter.dll को blobs/ में डालें।
  • MCU फ़र्मवेयर — FocalTech Linux libfprint ब्लॉब की कोई भी प्रतिलिपि प्राप्त करें जिसमें FOCALFP_9348_FW_APP प्रतीक हो (जैसे ft9201-static से) और python3 scripts/extract-firmware.py <that-libfprint-2.so> src/ft9201_fw.h चलाएँ।

फिर scripts/build.sh फिर से चलाएँ।

श्रेय

  • USB प्रोटोकॉल मूल रूप से banianitc/ft9201-fingerprint-driver द्वारा रिवर्स-इंजीनियर किया गया।
  • फ़र्मवेयर और इनिशियलाइज़ेशन/बूट अनुक्रम mrrbrilliant/ft9201-static के माध्यम से FocalTech के Linux ब्लॉब के विरुद्ध क्रॉस-रेफरेंस किया गया।
  • libfprint पर निर्मित।

पुन: प्रयोज्य विधि और क्रिप्टो-सेंसर पथ अतिरिक्त रूप से निम्नलिखित के काम पर आधारित है:

  • uunicorn — जिनका synaWudfBioUsb-sandbox और wine fork वाइन के अंतर्गत विक्रेता के विंडोज बायोमेट्रिक ड्राइवर को ट्रेस करने का हार्नेस है, जो कि कैसे एक क्रिप्टो सेंसर का कमांड प्रोटोकॉल विंडोज बॉक्स के बिना पुनर्प्राप्त किया जाता है।
  • मार्को ट्रेविसन (3v1n0), libfprint के रखरखावकर्ता — जिन्होंने उस वाइन-ट्रेसिंग दृष्टिकोण का रास्ता दिखाया, और जिनके द्वारा libfprint के स्वयं के मिलान को अपस्ट्रीम में सुधारने के प्रयास यह बताते हैं कि विक्रेता-मिलानकर्ता मार्ग का अस्तित्व क्यों है।
  • championswimmer/libfprint-eh577 — EgisTec EH577 सेंसर परिवार के लिए पूर्व कला।

FT9201 को Linux पर चलाने के अन्य तरीके

यह एकमात्र दृष्टिकोण नहीं है — विकल्प मुख्य रूप से इस बात में भिन्न हैं कि वे FocalTech के मिलानकर्ता का पुन: उपयोग कैसे करते हैं (वे सभी करते हैं; छोटा सेंसर सामान्य मिलान को खारिज करता है)।

श्रेणियाँ