Интеграция драйвера периферийного USB-устройства в Android для Samsung Galaxy S2

у меня есть USB-устройство (считыватель отпечатков пальцев), которое я подключаю к Galaxy S2 (поскольку он поддерживает режим USB-хоста) и использую его в своем собственном приложении, использующем новейшие Android API USB http://developer.android.com/reference/android/hardware/usb/UsbDevice.html

Когда я подключаю ридер к телефону, он пишет "неизвестное периферийное USB-устройство" и ридер включается, так что проблем с питанием нет. У меня есть исходный код Linux-драйвера ридера, поэтому при необходимости я могу скомпилировать его для архитектуры ARM.

Как мне интегрировать этот драйвер в ядро ​​Android (если возможно, так как он основан на Linux)?? Можно ли создать отдельный модуль?? привилегии root абсолютно необходимы?

Или проще, могу ли я определить тип периферийного устройства через USB API??


person mark    schedule 24.08.2011    source источник
comment
Похоже, что официальный API-интерфейс USB-хоста доступен только на уровне API 12, в то время как S2, похоже, поставляется с Gingerbread (уровень API 9 или 10), поэтому неясно, будет ли этот метод доступен, если только Samsung каким-либо образом его не портирует. Если вы можете установить собственное ядро ​​на это устройство, или у вас есть root, и он уже поддерживает модули, и соответствующие исходные коды уже выпущены, то традиционный метод драйвера ядра Linux должен быть возможен.   -  person Chris Stratton    schedule 24.08.2011
comment
Раньше это работало, но Apple подала в суд.   -  person b_yng    schedule 24.08.2011


Ответы (3)


Я знаю, что может быть несовместимость с API. Но поскольку Galaxy изначально поддерживает режим USB Host, возможно, проблем нет...

Однако, что касается интеграции драйвера в ядро ​​с помощью отдельного модуля, есть ли руководство, объясняющее процедуру?

person mark    schedule 25.08.2011

Руководство по интеграции можно найти здесь: http://android.serverbox.ch/?p=285

Хотя этот пример показывает, как скомпилировать драйвер ftdi для Honeycomb, он поможет вам начать работу.

person olivervbk    schedule 26.11.2011

Вам нужно будет скомпилировать драйвер Linux как модуль, чтобы получить «fingerprintdriver.ko». Сделайте точно так же, как если бы это был драйвер Linux 2.6.35 (версия зависит от вашей версии Android) с кросс-компилятором ARM. Теперь я видел в блогах, что вы должны получить компилятор ARM из набора инструментов Android, поскольку в нем есть небольшая разница, которая иногда имеет значение, но я никогда не пробовал это сам, так как я использую тот, который поставляется с Android Комплект разработчика. Затем вы установите его с помощью команды «insmod /modules/fingerprintdriver.ko». Вы также должны поместить его в файл «init.rc», чтобы он устанавливался во время загрузки. Но в зависимости от драйвера он может быть не виден (скорее всего) Android API. Если это то, что вы хотите, вам придется написать фрагмент кода, чтобы устройство воспринималось, например, как «датчик». Тогда ваше устройство станет доступным для всего сообщества Android-программистов. Если вы просто хотите использовать его только для своих целей, а не всем сообществом разработчиков приложений для Android, вы, вероятно, просто захотите использовать его через USB API. Гораздо меньше работы для вас.

Надеюсь, эта небольшая информация будет чем-то полезна.

person Sylvain Huard    schedule 01.12.2011