Версия usb для android
Версия 1.5.5g
Что нового: Добавлены новые языки
1. Удален весь гугл.
2. Удалены firebase
3. Удалена реклама
4. Чищен resources.arsc от хлама.
5. Графика xhdpi (Проверено на Highscreen Fest Xiaomi Redmi 4X 2/16 )
Скачать: USB OTG Checker.apk ( 1.61 МБ )
Сообщение отредактировал UtopianStorytelling — 25.09.18, 17:38
Что нового:
— Отвязано от гугла, нет гуглокода, рекламы, firebase
Скачать: USB OTG Checker 1.5.5g [AdFree].apk ( 2.26 МБ )
Сообщение отредактировал Aleks431 — 25.09.18, 15:02
Aleks431,
Значит разрабы молодцы 😀
Сообщение отредактировал Vologhat — 25.09.18, 15:33
Приложение плохо работает(всмысле ненадежное)оно получается вообще смысла не имеет если пишет все что угодно.Проверка слишком ненадёжная чтобы проверять!
Вообще у меня по адресу :/storage/ есть папка usbotg получается так /storage/usbotg это являеться доказательством поддержки как таковой в смысле аппаратного обеспечения.
Совет:не проверяйте этой прогой а проверяет файловым менеджером(сторонним)тогда не ошибетесь!
(Если помог напишите спасибо или т.п. в лс например.)
Сообщение отредактировал tixonov312 — 28.01.19, 00:02
Источник
Работаем с USB Custom HID на Android
В современных Android — приложениях для взаимодействия с другими устройствами чаще всего используются беспроводные протоколы передачи данных, как например Bluetooth. В годы, когда часть устройств имеют беспроводную зарядку, сложно представить себе связку Android устройства и периферийного модуля, в которой необходимо использование проводных интерфейсов. Однако когда такая необходимость возникает, на ум сразу же приходит USB.
Давайте разберем с вами гипотетический кейс. Представьте, что к вам приходит заказчик и говорит: “Мне нужно Android приложение для управления устройством сбора данных и вывода этих самых данных на экран. Есть одно НО — приложение надо написать на одноплатный компьютер с операционной системой Android, а периферийное устройство подключено по USB”
Звучит фантастически, но и такое иногда случается. И тут как нельзя кстати пригодится глубокое знание USB стека и его протоколов, но данная статья не об этом. В данной статье мы рассмотрим, как управлять периферийным устройством по протоколу USB Custom HID с Android устройства. Для простоты напишем Android-приложение (HOST), которое будет управлять светодиодом на периферийным устройством (DEVICE) и получать состояние кнопки (нажатия). Код для периферийной платы приводить не буду, кому интересно — пишите в комментариях.
Итак, приступим.
Теория. Максимально коротко
Для начала немного теории, максимально коротко. Это упрощенный минимум, достаточный для понимания кода, но для большего понимания советую ознакомиться с этим ресурсом.
Для общения по USB на периферийном устройстве необходимо реализовать интерфейс взаимодействия. Разные функции (например, USB HID, USB Mass Strorage или USB CDC) будут реализовывать свои интерфейсы, а некоторые будут иметь несколько интерфейсов. Каждый интерфейс содержит в себе конечные точки — специальные каналы связи, своего рода буферы обмена.
На моем периферийном устройстве реализован Custom HID с одним интерфейсом и с двумя конечными точками, одной для приёма, другой для передачи. Обычно информация с существующими на устройстве интерфейсами и конечными точками написана в спецификации на устройство, в противном случае определить их можно через специальные программы, к примеру USBlyzer.
Устройства в USB HID общаются через репорты. Что такое репорты? Так как данные передаются через конечные точки, то нам надо как-то идентифицировать, а также распарсить в соответствие с протоколом. Устройства не просто кидают друг другу байты данных, а обмениваются пакетами, имеющими четко определенную структуру, которая описывается на устройстве в специальном дескрипторе репорта. Таким образом, по дескриптору репорта, мы можем точно определить, какой идентификатор, структуру, размер и частоту передачи имеют те или иные данные. Идентификация пакета происходит по первому байту, который представляет из себя ID репорта. Например данные о состоянии кнопки, идут в репорта с а светодиодом мы управляем через репорт с >
Подальше от железа, поближе к Android
В Android поддержка USB устройств появилась начиная с API версии 12 (Android 3.1) Для работы с периферийным устройством нам необходимо реализовать режим USB host. Работа с USB достаточно неплохо описана в документации.
Для начала необходимо идентифицировать ваше подключаемое устройство, среди всего разнообразия USB девайсов. USB девайсы идентифицируются по сочетанию vid (vendor id) и pid (product id). Создадим в папке xml файл device_filter.xml со следующим содержимым:
Теперь необходимо внести соответствующие разрешения и action (если вам они необходимы) в манифест приложения:
В android:resource мы указываем файл с необходимыми фильтрами для устройств. Также, как я уже говорил ранее, можно назначить intent фильтры, для запуска приложения, к примеру, в результате подключения вашего устройства.
Для начала необходимо получить UsbManager, найти устройство, интерфейс и конечные точки устройства. Это необходимо делать при каждом подключении устройства.
Здесь мы видим те самые интерфейсы и конечные точки, речь о которых шла в прошлом разделе. Зная номер интерфейса, мы находим обе конечные точки, на прием и передачу, и инициируем usb соединение. На этом все, теперь можно читать данные.
Как я уже говорил ранее, устройства общаются через репорты.
В метод sendReport мы передаем массив байт, в котором нулевым байтом является репорт ID, берем текущее USB подключение к устройству и выполняем передачу. В качестве параметров в метод BulkTransfer передаем номер конечной точки, данные, их размер и таймаут передачи. Стоит отметить, что класс UsbDeviceConnection имеет методы для реализации обмена данными с устройством USB — методы bulkTransfer и controlTransfer. Их использование зависит от типа передачи, который поддерживает та или иная конечная точка. В данном случае используем bulkTransfer, хотя для HID чаще всего характерно использование конечных точек с типом control. Но у нас Custom HID, так что делаем что хотим. Про тип передачи советую почитать отдельно, так как от него зависит объем и частота передаваемых данных.
Для получения данных необходимо знать размер получаемых данных, который можно, как знать заранее, так и получить из конечной точки.
Метод получения данных по USB HID является синхронным и блокирующим и выполнять его необходимо в другом потоке, кроме того, репорты от устройства могут приходить постоянно, либо в любое время, поэтому необходимо реализовать постоянный опрос репорта, чтобы не пропустить данные. Сделаем это при помощи RxJava:
Получив массив байт, мы должны проверить нулевой байт, так как он является report ID и в соответствии с ним парсить полученные данные.
По завершении всех действий с USB нужно закрыть соединение. Можно выполнять это в onDestroy activity или в onCleared во ViewModel.
Заключение
В статье рассмотрен очень небольшой и примитивный, исключительно демонстративный код с реализацией для конкретного устройства. Конечно, классов USB существует много, не только HID и для них естественно реализация будет иная. Однако все методы достаточно неплохо документированы и имея хорошее представление о USB стеке можно легко разобраться в том, как их применять.
Источник
Работа с устройствами USB в Android
В недавней статье на Geektimes в комментариях возник вопрос о поддержке в ОС Android периферии, подключенной к шине USB. Действительно, большинство вендорского ПО, к примеру, для работы с принтерами и МФУ, поддерживает только подключение по сети. Однако это не означает, что в самой ОС Android нет такой возможности — это означает лишь то, что большинство устройств не имеют полноценного USB хоста, и далеко не все имеют поддержку OTG. По сети же могут работать абсолютно все без исключения.
Большинство устройств на Android при наличии порта OTG поддерживают на уровне системы (ядра Linux или стандартных компонентов Android) следующие классы устройств:
- Устройства ввода — клавиатуры, мыши, джойстики (HID)
- Накопители (Mass Storage)
Несколько реже:
- Сотовые модемы
- Сетевые адаптеры
- Вебкамеры
Хабы поддерживаются при наличии полноценных хост-портов, но не поддерживаются на портах OTG.
Подробнее список устройств, поддерживаемых на уровне ядра Linux, можно получить в sysfs:
$ ls /sys/bus/usb/drivers
Если же модуль в принципе доступен в исходниках ядра Linux, но не включен в Android — не стоит рассчитывать на то, что его получится собрать и расставить на все целевые системы.
Однако, начиная с Android 3.1 (API 12), в системе содержатся средства, достаточные для поддержки на уровне приложения любой USB периферии. Данные средства описаны в разделе USB Host руководства по Android API. Здесь же я хочу привести примеры реальной работы с некоторыми видами устройств.
Права доступа
Как и для прочих действий, Android требует, чтобы приложение получило разрешение на доступ к USB периферии. Существует 2 способа получить такое разрешение:
- Задекларировать список устройств в AndroidManifest
- Явно показать пользователю диалог “разрешить”
Поскольку для моих задач лишние вопросы к пользователю были нежелательны, я использовал первый способ.
Итак, нам необходимо добавить в манифест следующее:
А в res/xml/device_filter.xml вписать следующее:
Отмечу, что хотя общепринято указывать VID:PID в 16-ричной системе счисления, здесь они должны быть указаны в десятичной. В документации заявляется, что возможно указание только класса, без VID и PID, но у меня это не стало работать.
Принтеры
На примере принтера я покажу, как непосредственно использовать API android.hardware.usb. На уровне передачи данных все принтеры поддерживают стандартый класс USB устройств:
Класс предельно простой. В рамках этого класса устройство должно поддерживать:
- Обязательный bulk out endpoind для отправки данных на принтер
- Опциональный bulk in endpoind для получения статуса принтера
- 3 управляющих запроса
Код, приведенный ниже, предоставляет функциональность, аналогичную устройству /dev/usb/lp в Linux. Далее нам нужен фильтр, преобразующий исходный документ в пакет данных, понятный конкретной модели принтера. Но это тема иной статьи. Как один из вариантов — можно собрать ghostscript с помощью NDK.
Для работы с устройством нам в первую очередь нужно:
1. Найти устройство. В примере для простоты я ищу первый попавшийся:
2. Получить endpoint’ы:
3. Непосредсвенно открыть устройство:
4. После этого мы можем читать и писать в устройство:
5. По завершении работы — закрыть устройство:
Преобразователи USB-Serial
В отличие от притеров, преобразователи USB-Serial гораздо менее стандартизированы. Существует несколько распространенных чипов, для которых существенно отличается установка параметров последовательного порта — битрейта, чётности и проч. К счастью, есть библиотека github.com/mik3y/usb-serial-for-android, поддерживающая практически все существующие чипы. Библиотека полностью скрывает USB API, сводя все необходимые действия к минимуму вызовов с минимумом параметров.
1. Найти и открыть устройство:
2. Установить параметры последовательного порта:
3. Читать и писать в порт:
4. По завершении работы — закрыть порт:
Резюме
Надеюсь, что мне удалось показать, что работа с USB периферией достаточно проста и логична. Безусловно, реализация протоколов некоторых конкретных устройств не блещет простотой — но это проявится в любой системе в одинаковой степени.
Все приведенные примеры я взял из реального проекта, лишь исключил очевидные проверки, оставив только ключевые строки.
Источник
Версия usb для android
Для функционирования программы необходимы права root пользователя и установленный busybox.
Краткое описание:
Форматирует флешки и может делать их загрузочными.
Описание:
Данная программа может помочь в экстренных ситуациях, когда у вас нет под рукой компьютера и необходимо срочно создать загрузочный LiveUSB диск или отформатировать флеш-накопитель через USB-OTG. Теперь это можно сделать прямо на Android.
Основные возможности:
1)Форматирование USB-накопителя в формат FAT32, exFAT, NTFS с поддержкой изменения размера кластера.
2)Запись ISO дистрибутивов на USB-накопитель.
3)Конвертирует linux образы в isohybrid. Это помогает исправить ошибку «isolinux missing or corrupt».
Требуется Android: 2.3+
Русский интерфейс: Да
версия: 1.1.2Android_usb_tool_1.1.2.apk ( 3.67 МБ )
версия: 1.1.1AndroidUSBTool_1.1.1.apk
версия: 1.1.0AndroidUSBTool_1.1.0.apk ( 3.65 МБ )
версия: 1.0.0AndroidUSBTool_1.0.apk ( 271.73 КБ )
Сообщение отредактировал EraFeri — 30.08.15, 09:23
Новая версия Android USB Tool.
Скачать: AndroidUSBTool_1.1.1.apk ( 3.66 МБ )
HTC One X, 4.1.1, сток,root -не работает,то есть не форматирует.
Ошибок нет, просто переобновляется окно и на этом все.
Сообщение отредактировал Neonmoto — 28.07.14, 07:22
EraFeri, флешка, 4гб, фирма неизвестная, по ОТГ без проблем определяется, храню фильмы или музыку. В системе sda и sda1. Для форматирования выбираю sda1. Формат FAT, жму старт-окно обновляется и все. Данные на месте. Пробовал сразу как подкючил и когда в меню памяти нажал отключить,при этом из телефона не вытаскивал. Могу логи и видео снять
Сообщение отредактировал Neonmoto — 30.07.14, 15:59
Neonmoto, Возможно проблема с busybox. Попробуйте установить (если нет) или переустановить. Программа запрашивала рут?
Сообщение отредактировал EraFeri — 30.07.14, 18:01
EraFeri, Версия 1.0.0 работает. Думаю ее и надо развивать: добавить автоопределение внешних накопителей и если их несколько-сделать выбор. Также было бы замечательно,если приложение само могло отключить накопитель для форматирования,а после форматирования обратно подключить.
PS: раз приложение требует рут и бузибокс, встраивать не надо, пусть лучше системное использует-так вернее.
Сообщение отредактировал Neonmoto — 31.07.14, 20:43
Neonmoto, Значит проблема с получением рут прав в версии 1.1.1. В скором времени все это реализую, сейчас пока разработка приостановлена. 😉
Сообщение отредактировал EraFeri — 01.08.14, 08:19
Источник