Android and usb hub

Работа с устройствами 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 периферией достаточно проста и логична. Безусловно, реализация протоколов некоторых конкретных устройств не блещет простотой — но это проявится в любой системе в одинаковой степени.

Все приведенные примеры я взял из реального проекта, лишь исключил очевидные проверки, оставив только ключевые строки.

Источник

Мобильный активный OTG-хаб Ugreen CM418: многофункциональная док-станция в кармане

Обзор универсального расширителя портов UGREEN для смартфонов, планшетов и ноутбуков. Устройство имеет встроенный USB-хаб, Ethernet-to-USB адаптер, HDMI-видеовыход и активное питание. А самое главное — UGREEN CM418 активирует скрытый режим — Android Desktop mode, превращая смартфон в полноценную рабочую станцию. Пользователи смартфонов Samsung Galaxy S-серии знакомы с подобным режимом под названием Samsung DeX.

Для чего нужен — подключение к мобильным гаджетам: к смартфонам, планшетам, к современным ультрабукам — различной периферии, а именно: клавиатуры-мышки, проводные джойстики, USB-накопители. Наличие питания, а я напоминаю, что данный хаб UGREEN является активным, то есть имеет возможность подключения внешнего питания, — позволяет подключать мощные потребители напрямую к смартфону или планшету. То есть, легко можно подключить HDD-диск 2,5″ и смотреть фильмы долгой дорогой в поезде. Внешнее питание можно взять с павербанка.

Характеристики

  • Бренд: UGREEN
  • Модель: CM418
  • Тип: активный мобильный хаб для OTG-устройств
  • Питание: QC4.0/PD4.0, USB-C, до 100 Вт
  • Интерфейсы: USB-C 3.1, USB-A (3x), HDMI, RJ-45
  • Поддержка вывода видеопотока: HDMI FullHD/4K

В комплекте также имеется подробная инструкция с описанием вариантов подключения и характеристиками.

У меня несколько подобных активных мобильных хабов. Для чего они нужны — можно посмотреть в статье технологии Мобильного офиса в кармане. Основное преимущество перед аналогами и стационарными вариантами — это предельная компактность. В маленьком узком алюминиевом корпусе скрывается достаточно производительная начинка (100W/4K/5Gbps) и высокая функциональность. На обороте имеется конкретная информация о док-станции: модель UGREEN CM418. На лицевой стороне расположен логотип UGREEN. Кстати, интерфейсный кабель имеет утолщение в основании, которое спасает от заломов при частом использовании.

Читайте также:  Airpods android не работает микрофон

Внутри установлены следующие коммуникационные чипы: RTL8153 для Ethernet 1Gb/s, видеопроцессор IT6563 (DisplayPort to HDMI Converter). За работу активного хаба отвечает чип LLANO GL3510 (USB3.0 до 5 Гбит/с), а также применен FL7102 в качестве контроллера сквозной зарядки PD4.0. Заявлена поддержка скорости обмена данным по RJ-45 до 1 Гб/с. Очень удобно, если есть рядом проводное подключение для комфортной работы.

Подключение к OTG-устройствам выполняется с помощью USB-C коннектора. Штекер — в металлической рубашке. Длина «хвостика» с USB-C около 20 см. На конце защитный колпачок.

В качестве кабеля с поддержкой PD100W я использую качественные кабели от Baseus. Есть кабели с USB-C на обоих концах, так и USB-C/USB-A. Тут уж смотрите, что вам лично удобно. У меня подобных адаптеров несколько — стараюсь иметь с собой и в сумке с ноутбуком, и на работе и т.п. Для сравнения — достаточно неплохой универсальный OTG-адаптер BlitzWolf BW-TH10.

BlitzWolf — широкий, с расположенными разъемами с двух сторон.Функциональность примерно такая же. Отмечу наличие светодиодного индикатора на лицевой панели.

Также прикладываю интерфейсный адаптер Baseus USB-C для смартфона, ноутбука и планшета, с которым я подключал смартфон подключаем к телевизору и проектору (HDMI/DEX). А вот эти две модели имеют сходную компоновку. Отмечу также наличие широкого светодиодного индикатора у Baseus.

Как я уже сказал выше, режим Android Desktop mode превращает смартфон в полноценную рабочую станцию. На примере смартфона Samsung Galaxy Note10+ я покажу, какие возможности доступны при активированном Samsung DeX.

Итак, доступно не только подключение накопителей (USB, SSD, HDD), а также периферии, но и полноценная работа и зарядка от данного адаптера. В режиме вывода видеопотока подключить можно мониторы, телевизоры, портативные мониторы и планшетные экраны.

Также можно работать с проекторами. Пример вывода на проектор Thundeal TD96 и большой экран (100″) игры WoT в режиме зеркалирования экрана HDMI. Пример можно посмотреть в обзоре портативного сенсорного монитора Omiodo DR1561Pro, который подойдет для смартфонов, для ноутбуков, для игровых приставок.

Привожу скриншот основного экрана Android в режиме Desktop mode. Рабочий стол DeX. Доступно сразу несколько приложений, работающих в полноэкранном режиме. Очень удобно работать прямо с телефона с онлайн документами типа Google Docs/Sheets.

В завершение тест скорости чтения/записи. Проверку выполнял с использованием USB-C адаптера на USB-A и компьютером с USB3.0. На рабочих станциях и ноутбуках с нативным USB-C 3.1 портом скорости доступа будет выше. Соответственно, скорости чтения/записи и с мобильных устройств на накопители также будет высоким.

Так что, мобильный активный хаб UGREEN — это вполне удобный вариант многопортовой док-станции, которая помещается в кармане, и работает со всем USB Type-C устройствами. В плюсах отмечу наличие дополнительного коннектора RJ-45 для подключения к сети Ethernet, а также возможность полноценного вывода видеопотока FullHD/4K через HDMI. Не хватает, разве что, кардридера SD/MicroSD, но это уже детали. Сейчас действуют: купон $1/$15 на странице продавца, промокод HUB200, а также промокод SSD330. Также доступны общие промокоды для всего Алиэкспресс: Lexus200ALI и Lexus100ALI.

Читайте также:  What is manifest in android application

Другие обзоры и тесты смартфонов, инструмента и гаджетов вы можете найти в моем профиле и по ссылкам ниже.
Спасибо за внимание!

Источник

Необычный хаб для планшета

Необычен тем, что помимо наличия OTG HUB на 3 порта, умеет питать подключенное оборудование и подзаряжать сам планшет (смартфон), причём в некоторых случаях одновременно.
Это может быть весьма полезно при использовании планшета например в качестве медиапроигрывателя, а также для одновременного подключения к планшету до трёх USB устройств + внешнего питания.
Порт microUSB планшетов не может выдать более 0,5A для питания внешних устройств, которые зачастую потребляют больше (HDD, некоторые 3G модемы). В этом случае обозреваемый хаб (концентратор) также может помочь, запитывая подключенные устройства через внешний USB БП.

Прислали в пакетике




Разбирается очень просто



Собран на базе FE1.1S USB 2.0 HUB — довольно неплохой 4-х портовый хаб USB 2.0
Скорость передачи информации действительно USB 2.0

Качество монтажа приемлемое, но кабели тонкие, без экрана (кроме хвостика к планшету) и запаяны так себе, лучше за них лишний раз не дёргать.
Питание microUSB зачем-то сделали хвостиком, лучше-бы поставили гнездо на плату и добавили четвёртый порт USB.
Кварц не закреплён.
Конденсатор C4 по питанию не поставили, т.к. он не даст закрыть плоский корпус.
Поставил керамику 10мкФ, хуже не будет.

Схема устройства довольно проста

Переключатель Charge — OTG на удивление не переключает питание, а просто управляет режимом работы планшета через 4pin управления.
Во время работы, зарядка планшета идёт весьма неспешно, по остаточному принципу.

Обращаю внимание, что далеко не всякий планшет может подзаряжаться в режиме OTG — многие не умеют это делать физически, а некоторым нужен другой номинал резистора RS (36кОм, 100кОм, 120кОм).
Планшет Prestigio Multipad Visconte Quad (Win8.1) заработал без малейших проблем, драйвера установились автоматически.
Остальные доступные планшеты (Android) работали либо в режиме OTG либо заряжались в зависимости от положения переключателя.
Без подключения внешнего питания, переключатель необходимо установить в положение OTG, иначе хаб не будет работать.

Следующая доработка — закрепление кабелей, что позволит продлить им жизнь.
Дело в том, что концевые фиксаторы никак кабели не держат и свободно двигаются по ним 🙁

Проще всего с собранном состоянии капнуть циакрином в зазор между кабелем и фиксатором со стороны хаба и штекеров.


Заодно и кварц приклеил к плате.

Достоинства: компактный, недорогой, USB2.0
Недостатки: хлипкие провода, гнездо питания на хвостике, ограниченная совместимость

Вывод: нужно ли Вам такое устройство — решайте сами, мне оно подошло и отлично работает.

Источник

Оцените статью