Ридер бесконтактных карт RD-03AB и libusb-1.0

Опыт использования ридеров RD-03AB в embedded системах (например, OpenWrt) показал, что погоня создателей системы за обновлениями ядра до добра не доводит: видимо, при каждом новом обновлении ядра приходится клепать такое адское количество патчей, чтобы система показывала признаки жизни, что руки до драйверов у людей просто не доходят. Именно по этой причине драйвер hidraw в последних OpenWrt работает через пень-колоду, если вообще соизволит запуститься, хотя с работой ридеров под linux на PC никаких проблем нет 🙂

В связи с этим положением дел, для ридеров RD-03AB появилась новая ветка API V1.5, работающая с USB через функции библиотеки libusb-1.0. Теперь для работы с ридером доступны 3 версии API: для Windows через функции HID-устройств, для linux через системный драйвер hidraw и новая ветка для linux через функции библиотеки libusb-1.0. Функции libusb устойчиво работают на embedded системах даже тогда, когда hidraw полностью неработоспособен.

Для удобства пользователей была сделана сборка демонстрационного софта для OpenWrt. Для включения софта в сборку, следует скопировать его из инсталляционного архива в каталог ‘./package/utils’, как на скриншоте.

api1.5_owrt1

Далее, запустив buildroot для OpenWrt (команда make menuconfig), на вкладке ‘Utilities’ следует выбрать софт для ридера, который будет включен в сборку. На скриншоте выбран весь софт (название пакетов для ридера RD-03AB начинается с ‘ccr-‘).

api1.5_owrt2

После сборки проекта, прошиваем девайс, который должен ‘продемонстрировать’ работу с ридером бесконтактных карт; в данном случае сборка проводилась для роутера TP-LINK WR-703N. Прошивка зашивается с помощью утилиты mtd или через boot-загрузчик, скачать прошивку можно здесь.

В связи с тем, что процессор AR9331 не поддерживает работу своих USB портов в режиме LS (low speed), ридер следует подключить через хаб — обычно это не является проблемой, т.к. в реальной ситуации к WiFi роутеру подключается несколько турникетов с ридерами, т.е. хаб необходим, т.к. у WR-703N только один USB порт. Если очень надо подключать один ридер к одному WiFi роутеру ‘без посредников’, то следует выбрать другую марку роутера, например ‘Poray M3’. Ну, а то, что всё отлично работает, показано на скриншоте ниже 🙂

api1.5_owrt_rqv