Сканер отпечатков пальцев от egistec (LighTuning)
Приобрел себе по случаю праздников ноутбук Lenovo V560. В числе прочих устройств, на нем имеется встроенный сканер отпечатков пальцев. Определяется как 0x1c7a:0x0801 (LighTuning Technology Inc.) Потратил несколько дней на поиск хоть каких-то намеков на поддержку сего устройства в Linux, однако нашел только одни вопросы других таких же как я желающих использовать такой сканер под Linux. Насколько я понял - проблеме уже около года - самый ранний вопрос датирован февралем месяцем ушедшего 2010 года. Если я правильно понимаю - самое вменяемое ПО для применения сканеров отпечатков пальцев под Linux - это sys-auth/libfprint, но на сайте проекта нашел единственный вопрос о поддержке указанного выше девайса, который так и остался без ответа. Я так понял, что для ядра Linux нет никаких стандартов / интерфейсов для сканеров отпечатков пальцев, ибо драйверов для них в ядре нет вообще, в т.ч. и в staging. Упомянутый выше libfprint работает с поддерживаемыми устройствами через libusb, разработчики создали собственный интерфейс для работы с устройствами и пишут "драйверы" для каждого конкретного типа сканеров.
Исходя из всего вышесказанного, вряд ли стОит ожидать каких-либо положительных сдвигов в решении вопроса поддержки моего сканера - нужно решать его самостоятельно. Или, отказаться от приобретенного ноутбука в пользу другого, чего не хотелось бы. Хочу все-таки попробовать создать "драйвер" для libfprint самостоятельно, но налицо полное отсутствие опыта работы с USB. Нет ли среди уважаемых участников форума кого-нибудь, кто имеет опыт работы с USB-устройствами напрямую? Посоветуйте, с чего начать изучать этот вопрос? Что следует почитать перед тем, как пробовать реализовывать поддержку моего сканера? Можно ли попробовать зафиксировать протокол обмена между сканером и ПО, например, под Windows, для которого драйвер имеется в наличии? Заранее всем спасибо!
-
Для комментирования войдите или зарегистрируйтесь
"зафиксировать протокол" врятли можно. скорее всего придется дизассемблировать.
вообще, рискну предложить обратиться за помощью к человеку, который написал драйвер madwimax. он русский и думаю, что сможет рассказать как провернул реверсинжиниринг драйверов для usb-брелков yota ;)
- Для комментирования войдите или зарегистрируйтесь
Насчет reverse-engineering я в курсе :) А вот насчет протокола - слышал, что есть некий софт, который может снимать копию траффика с USB, типа tcpdump в случае с сетевым траффиком. Правда, я пока еще не брался за поиски. Если такой софт реально существует, то я думаю, что можно будет попробовать с его помощью разобрать протокол обмена между драйвером и железом. И пока еще остается открытым вопрос о том, как работать с USB под Linux.
- Для комментирования войдите или зарегистрируйтесь
будем надеятся, что до многобаксовых железных снифферов дело не дойдет :)
Compute: Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia. Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
- Для комментирования войдите или зарегистрируйтесь
Спасибо! Как раз то, что нужно на начальном этапе. Почитал доки по libusb, пока ничего страшного не увидел, можно пробовать работать. Главное, чтобы сканер отдавал отпечатки во вменяемом формате. Если вопрос о поддержке указанного в стартовом сообщении девайса интересует еще кого-то, кроме меня, давайте попробуем скооперироваться. Вдруг быстрее дело пойдет.
- Для комментирования войдите или зарегистрируйтесь
- Для комментирования войдите или зарегистрируйтесь
Хочу все-таки попробовать создать "драйвер" для libfprint самостоятельно, но налицо полное отсутствие опыта работы с USB. Нет ли среди уважаемых участников форума кого-нибудь, кто имеет опыт работы с USB-устройствами напрямую? Посоветуйте, с чего начать изучать этот вопрос? Что следует почитать перед тем, как пробовать реализовывать поддержку моего сканера? Можно ли попробовать зафиксировать протокол обмена между сканером и ПО, например, под Windows, для которого драйвер имеется в наличии? Заранее всем спасибо!
Перво-наперво разберитесь как работает libfprint и особенно, как он работает с оборудованием, обо всём этом лучше узнать у разработчиков libfprint. USB-снифферов полно (например, неплохой вариант http://usb-robot.sourceforge.net/ а уж поисковик в интернете обязательно найдёт что-то подходящее для Вас), но, я полагаю что основная проблема будет в обработке полученных данных, если само устройство не выдаёт готовый ответ и не хранит данные отпечатков. Также неплохо было бы подробнее познакомиться с USB шиной (для начала http://microsin.ru/content/view/1107/44/ ).
- Для комментирования войдите или зарегистрируйтесь
С libfprint пока вопросов не возникло - есть доки, на данном этапе понятные. В конце концов - имеются исходники. А вот насчет полученных данных - сам опасаюсь, что они могут оказаться "неформатом", и придется копать на предмет конвертации в формат, который понимает libfprint. Но я очень надеюсь, что до этого дело все-таки не дойдет. В любом случае, спасибо за подсказки.
- Для комментирования войдите или зарегистрируйтесь
читал тут LXF138 и наткнулся на интересную для тебя статью ;) там на нормальном русском рассказывается пример реверс-инжиниринга драйвера для usb-гаджета под windows и написание драйвера под linux ;)
- Для комментирования войдите или зарегистрируйтесь
Спасибо за наводку, почитаем. Правда, в нашей провинции это не продается, но можно дернуть друзей в Киеве - пришлют. Или электронную версию купить.
Пробовал копать с USBsnoop, кое-что становится понятно, пока застрял на определении формата изображения (width/height). Жаль, что usbsnoop не умеет данные конкретного пакета дампить в файл. Или умеет, но я еще не понял как: занимался этим вопросом часов 6 всего - праздники, однако. Где-то поприсутствовать надо, где-то выпить надо, и плюс дежурную техподдержку пинать тоже надо, причем практически круглосуточно, а то напьются и в игнор. Пройдут "каникулы", возьмусь плотнее за задачу.
Написал фидбэк на сайте egistec, не знаю, что из этого выйдет. Сайт у них глючный, мама не горюй. Но письмо получил, что фидбэк принят, робот обещал ответить "as soon as possible". Посмотрим, что ответит производитель.
- Для комментирования войдите или зарегистрируйтесь
Я снял протокол обмена этого устройства под Windows, и мне удалось повторить его под Linux. Я написал "на коленке" тестовую программу (использовал libusb). Однако, данные, которые я получаю после проведения пальцем по сканеру, не поддаются никакому анализу. Увы, я практически не знаком с технологиями обработки изображений. Если кратко, то сканер после проведения пальцем отдает 8 раз по 61440 байт. Каждый из восьми блоков отличается друг от друга, но первые четыре и вторые четыре можно считать сходными. Идентифицировать, какого типа эти данные, я не смог, и соответственно, совершенно непонятно, что теперь с этими данными делать. В скудном описании на странице производителя сказано:
Нет ли среди уважаемых участников форума разбирающихся в алгоритмах обработки и хранения изображений? Я могу дать ссылку на полученные данные, может, кто-то сможет их идентифицировать?