Как превратить «столетний» usb-хаб в «умный» управляемый и сэкономить при этом 300$. Управляемый hub usb


Управляемый USB хаб c управлением по WEB интерфейсу и Telnet

Управляемый USB хаб (с управлением через WEB интерфейс и Telnet)

 

Управляемый USB хаб входит в серию оборудования обеспечения безопасности и удобства использования USB устройств:

- Управляемых USB хабов – для аппаратного отключения и включения USB устройств, подключенных по интерфейсу USB;

- USB over IP хабов - для удаленного подключения USB устройств по сети;

-  Управляемых USB over IP концентраторов - для удаленного подключения и аппаратного отключения и включения USB устройств, подключенных по сети;

В настоящее время одним из наиболее востребованных наших продуктов является управляемый USB хаб c управлением через WEB интерфейс и telnet .

В дополнение к управляемому USB хабу c управлением через WEB интерфейс и telnet, совместно с нашими партнерами, было разработано устройство аппаратного подключения USB по сети (USB over IP, USB over Network, USB over Ethernet) - DistKontrolUSB.

Возможно, эти устройства могут оказаться полезным и Вам. С их помощью Вы сможете удаленно осуществлять аппаратное отключение и подключение USB устройств через Telnet или WEB интерфейс устройства:

  • электронных ключей защиты программных продуктов,
  • электронных ключей защиты клиент-банковских приложений и приложений сдачи отчетности в электронном виде,
  • флеш накопителей,
  • USB мониторов,
  • USB периферийных устройств и т.п.

Устройство аппаратного подключения USB по сети (USB over IP, USB over Network, USB over Ethernet) - DistKontrolUSB это аппаратно-программное решение, позволяющее устройствам USB использоваться удаленно посредством сети и работать с ним напрямую так же, как если бы они были подключены локально! Это даёт возможность использовать удаленные устройства USB на своем компьютере, так и делится своими USB устройствами с другими пользователями или ресурсами по сети (по сути удлиняя USB кабель через линию интернета).

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

Отсутствие возможности потерять, вывести из строя какой-то ключ принесет существенную экономию материальных средств.

Широкий модельный ряд позволит нам подобрать наиболее подходящий для вас вариант поставки управляемого USB хаба.

ВНИМАНИЕ !!! НОВЫЕ ВОЗМОЖНОСТИ !!!!

В модели управляемого USB хаба от 2015 года:

  • создание учетных записей пользователей и назначение им прав на подключение / отключение (просмотр состояния) USB портов управляемого USB хаба,
  • возможность подключения управляемого USB хаба к нескольким (до 4-х) USB хостам (компьютерам, серверам) одновременно и выбор через WEB интерфейс или telnet активного в текущий момент времени хоста.

Возможность подключения управляемого USB хаба к нескольким USB хостам одновременно и выбор через WEB интерфейс или telnet активного в текущий момент времени хоста позволит Вам легко продолжить использование USB устройств в кластерных системах.

Управляемый USB хаб полностью совместим и не имеет проблем при работе в средах виртуализации VMware vSphere и Microsoft Hyper-V.

Аналоги нашего управляемого USB хаба, на сегодня, на рынке – отсутствуют.

Предлагаем Вам 8 - 64 портовый управляемый USB хаб в пластиковом или металлическом корпусе или исполнением в 19" стойку, с расширенным диапазоном температур. Управляемый USB хаб позволяет производить подключение и отключение USB устройств и оборудования по сети LAN-Ethernet через пользовательский WEB интерфейс или по каналу GSM с помощью мобильного телефона.

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

Внешний вид управляемого USB хаба

Внешний вид управляемого USB хаба в пластиковом корпусе и исполнением в 19" стойку

Внешний вид управляемого USB хаба в пластиковом корпусе и исполнением в 19" стойку

(вид сзади)

Интерфейс управляемого USB хаба - Стандарт USB 1, USB 2.0

Разъем USB управляемого USB хаба - USB Type B (в комплекте - кабель для подключения к компьютеру)Параметры управляемого USB хабаКоличество выходных портов 8 …56Макс. выходной ток (на каждый порт), мА 500Разъем выходных портов USB Type A

Требования по электропитанию управляемого USB хабаРабочее напряжение от внешнего источника 9 ~ 16 ВПотребление тока до 15АРазъем электропитания Клеммы/Концентрический штекер

Требования к окружающей среде управляемого USB хабаРабочая температура, град. C -20 ~ +85 (-40 ~ +85)Рабочая влажность, % 5 ~ 95Температура хранения, град. C -40 ~ +85

Конструктивные свойства управляемого USB хабаМатериал корпуса Алюминий, пластикМонтаж Настольный/настенный/в 19" стойкуНа DIN-рейку (опционально)

Описание и инструкция по использованию управляемого USB хаба «USB–hub 1.32»Управляемый USB хаб «USB–hub 1.32» (далее «устройство») представляет собой USB-разветвитель на 32 порта USB, позволяющий управлять подачей питания (+5В) индивидуально на каждый порт. Управление и отслеживание текущего состояния каждого из портов осуществляется при помощи WEB-интерфейса или через стандартный терминал «Telnet».ВАЖНО: Перед началом работы необходимо в настройках BIOS ПК, с которым планируется использовать управляемый USB хаб выставить тип USB «Full Speed». В противном случае возможны ошибки ОС типа «USB устройство не опознано».

WEB-ИНТЕРФЕЙС УСТРОЙСТВА1. Настройка общих параметров протокола Интернет TCP/IPПеред первым подключением управляемыого USB хаба к сети LAN-Ethernet необходимо, чтобы системный администратор, обслуживающий данную сеть, назначил для подключаемого прибора, как для сетевого устройства, IP-адрес и маску подсети (см. в заводские установки).

Заводские установки сетевых параметров управляемыого USB хаба:№ п/п Параметр Значение1. MAC-адрес 00:04:A3:01:05:xx2. Собственный IP-адрес 192.168.10.1803. IP-адрес шлюза 192.168.10.14. Маска подсети 255.255.255.0

Для получения доступа к WEB-интерфейсу управляемыого USB хаба необходимо выполнить следующую последовательность действий (для ОС «Windows XP»):

1. Подключите управляемый USB хаб к сетевой карте персонального компьютера, используя сетевой кабель типа «компьютер-компьютер» («кросовер») с разъемами RJ-45. Включите ПК.

2. Откройте на ПК панели Windows XP: «Пуск» → «Настройка» → «Сетевые подключения» → «Подключение по локальной сети».

3. Настройте параметры протокола TCP/IP для сетевого подключения таким образом, чтобы ПК находился в одной подсети с управляемым USB хабом. Для этого, в большинстве случаев достаточно присвоить компьютеру IP-адрес, отличающийся только последней цифрой от IP-адреса прибора, например, 192.168.10.83 (см. рис. 1). Нажмите кнопку «ОК» на панели «Свойства: Протокол Интернета (TCP/IP)».

4. Запустите Интернет-браузер «MS Internet Explorer» или любой другой,

5. В настройках браузера отключите возможность использования прокси-сервера. Для этого при работе в «MS Internet Explorer» зайдите в меню «Пуск», откройте «Панель управления» и выберите «Свойства обозревателя». На появившейся форме (см. рис. 2) выберите вкладку «Подключения» и нажмите кнопку «Настройка LAN». На появившейся форме «Настройка локальной сети» снимите отметку «Использовать прокси-сервер…». Нажмите кнопки «ОК» на панелях «Настройка локальной сети» и «Свойства обозревателя».

6. Вид WEB интерфейса управляемого USB хаба.

 

Перечень команд для управления управляемым USB хабом через telnet:

 

Скачать описание и инструкцию по использования управляемого USB хаба можно по ссылкам

Описание управляемого USB хаба

Руководство по эксплуатации управляемого USB хаба

Обеспечение аппаратной защиты USB устройств при удаленной работе в терменальном режиме. Управляемый USB хаб.

Буклет на управляемый USB хаб.

 

Габаритные размеры управляемых USB хабов

Наименование изделия

габариты изделия в мм.

габариты упаковки в мм.

высота

ширина

глубина

высота

ширина

глубина

Управляемый USB хаб, 1 вход – 8 выходов,

85

430

204

128

500

240

Управляемый USB хаб, 1 вход – 16 выходов,

85

430

204

128

500

240

Управляемый USB хаб, 2 входа – 16 выходов,

85

430

204

128

500

240

Управляемый USB хаб, 1 вход – 24 выхода,

128

430

204

171

500

240

Управляемый USB хаб, 3 входа – 24 выхода,

128

430

204

171

500

240

Управляемый USB хаб, 1 вход – 32 выхода,

171

430

204

214

500

240

Управляемый USB хаб, 2 входа – 32 выхода,

171

430

204

214

500

240

Управляемый USB хаб, 4 входа – 32 выхода,

171

430

204

214

500

240

Управляемый USB хаб, 1 вход – 40 выходов,

171

430

204

214

500

240

Управляемый USB хаб, 5 входов – 40 выходов,

171

430

204

214

500

240

Управляемый USB хаб, 1 вход – 48 выходов,

257

430

204

300

500

240

Управляемый USB хаб, 6 входов – 48 выходов,

257

430

204

300

500

240

Управляемый USB хаб, 1 вход – 56 выходов,

257

430

204

300

500

240

Управляемый USB хаб, 4 входа – 56 выходов,

257

430

204

300

500

240

Управляемый USB хаб, 7 входов – 56 выходов,

257

430

204

300

500

240

www.distkontrol.ru

Как превратить «столетний» usb-хаб в «умный» управляемый и сэкономить при этом 300$

Как-то давно понадобился мне хаб, желательно с большим количеством портов и c достаточно удобной формой, пригодной для встраивания вместо флоппи-дисковода в отсек 3,5''. Беглый просмотр барахолки подкинул модель D-link DUB-H7, да еще и в комбинации «2 по цене 1». Внешний осмотр ничего особенного не дал, хаб как хаб, сделан добротно, капитальный «принтерный» USB AM-BM на оборотной стороне и 3 А блок питания. Как всегда первым делом разобрал, порадовался малому количеству пустых мест вместо элементов вкупе с качественной пайкой и успокоился. Правда на всякий случай зашел в интернет посмотреть, а что это за хаб и есть ли интересные проекты с его участием. Проектов не оказалось, отзывы пользователей 50/50, в общем, никакой динамики. Хаб на протяжении 5-7 лет довольно сносно работал и выполнял свою задачу, потом плавно переместился в коробку для электронного хлама и вполне возможно сгинул бы в итоге вместе с безызвестными переходниками, адаптерами и т. п. Но произошло у меня в жизни событие, которое заставило-таки меня покопаться в мешках со старым барахлом, найти этот, как оказалось уникальный D-link, и стряхнув пыль извлечь его на божий свет. Если интересно послушать зачем — добро пожаловать под cut.

Intro или Плач о жадных производителях usb-хабов
С появлением маленьких удобных SoC роутеров (вроде любовно описанного мной в статье Руководство по доведению «до кондиции» клона популярного китайского мини-роутера Hame A15, он же «unbranded A5-V11» ) и повсеместного внедрения openwrt для управления сонмами устройств (в абсолютном большинстве случаев, это устройства подключаемые по USB) очень актуальной задачей становится задача управления электропитанием всевозможных модемов, картридеров, usb-rs232 преобразователей и т. д. и т. п. Найболее часто встречается необходимость управления портом при работе с GSM-модемами (для перезагрузки, например). В принципе, народ наработал уже достаточное количество решений. Для этих целей, начиная от использования свободных GPIO выводов в роутере, и заканчивая готовыми реле. Существуют решения и от сторонних производителей. Это например программируемый USB хаб на 4 порта от Acroname, который и в корпусе приятном и программным обеспечением богат, но стоит около 300$. Есть вариант подешевле, умный переключаемый хаб с приятным названием Yupkit YKUSH всего лишь за 35€: Самые же экономные могут использовать связку из самого дешевого usb хаба, нормально закрытого 5V реле, и любой из Arduino-к для отключения питания от usb порта в случае необходимости. Стоимость такого решения

Казалось бы тупик. Либо дорого и красиво, либо просто и на соплях неказисто. Но оказалось существует третий вариант. Притом решение старо, как сама спецификация USB 2.0 для хабов в которой оно описано.

Выдержки из спецификации, касающиеся управления питания USB

Self-powered hubs may have power switches that control delivery of power downstream facing ports but it is not required. Bus-powered hubs are required to have power switches. A hub with power switches can switch power to all ports as a group/gang, to each port individually, or have an arbitrary number of gangs of one or more ports. A hub indicates whether or not it supports power switching by the setting of the Logical Power Switching Mode field in wHubCharacteristics. If a hub supports per-port power switching, then the power to a port is turned on when a SetPortFeature(PORT_POWER) request is received for the port. Port power is turned off when the port is in the Powered-off or Not Configured states. If a hub supports ganged power switching, then the power to all ports in a gang is turned on when any port in a gang receives a SetPortFeature(PORT_POWER) request. The power to a gang is not turned off unless all ports in a gang are in the Powered-off or Not Configured states. … Although a self-powered hub is not required to implement power switching, the hub must support the Powered-off state for all ports. Additionally, the hub must implement the PortPwrCtrlMask (all bits set to 1B) even though the hub has no power switches that can be controlled by the USB System Software.

Переводя на русский, получается, что в стандарте USB уже прописана возможность управления питанием портов, с помощью т.н. Per-Port Power Switching (PPPS), но вот встретить устройство, которое бы поддерживало эту возможность не просто тяжело, а очень тяжело. Для реализации PPPS-функционала необходимы дополнительные компоненты (полевые транзисторы и обвязка), которые в целях экономии в хабы не устанавливаются.

Чутко реагируя на запросы рынка некоторые производители указывают в спецификациях хабов функцию PPPS, но на деле дальше надписи на коробке дело не идет. И в принципе, придраться тяжело, ведь многие чипы внутри хабов эту функцию поддерживают, но вот реализовать ее без дополнительных переключателей (транзисторов) невозможно (чаще всего USB порты напрямую подключены к линии +5V).

Я даже разобрал специально несколько маленьких USB-хабов, которые планировал использовать совместно c A5-V11 роутером. Внутри оказались: чип GL850G и горяче любимый китайцами FE1.1s. Естественно внутри обнаружились только сами контроллеры с минимумом деталей. Ввиду миниатюрного размера платы поместить даже навесным монтажом транзистор и примкнувшие к нему детали тяжело. Пришлось это успокоится. Хотя, в зависимости от чипа, если в даташите встречается упоминание о over-current detection and Individual or ganged power control, то можно провести операцию по smart-изации такого устройства по методу описанному в статье. Товарищ использовал комбинацию из транзистора и кучки резисторов для включения функции PPPS в своем хабе.

Схема переделки и внешний вид устройства Также читая документацию, ловишь себя на том, что в ней нет-нет да и встречается упоминание о том, что режим управления портами можно реализовать, добавив дополнительно в схему какой-нибудь AIC1526-0 или MIC2026 (Dual-channel power distribution switch). Схемы из даташитов не дадут соврать
Часть основная или переходим к сути
Обуреваемый невеселыми мыслями по поводу покупки китайских хабов с неизвестным функционалом («кота в мешке») и невозможности предварительной их проверки, я нечаянно натолкнулся на статью, посвященную настройке openwrt для управления питанием USB-хаба, притом в качестве примера приведен тот самый, заброшенный и забытый D-Link DUB-H7 в сером корпусе. Изучив матчасть стало ясно, что на борту хаба помимо достаточно продвинутого контроллера Philips ISP1521BE есть и целая куча тех самых dual-channel power distribution switch AIC1528-0 для полноценного переключения питания. Хотя судя по даташиту, чип с минимальным обвесом сам может управлять питанием downstream портов (а еще там много чего, как оказалось, не реализовано, например индикация активности upstream порта с помощью технологии GoodLink, или хост USB 1.1 для корректной поддержки смеси 2.0 и 1.1 на downstream портах и т.д. и т.п.).

Кстати, для тех, кто решится повторить пройденный мной путь, сразу скажу, что современные версии D-Link DUB-H7 (в черном глянцевом корпусе) уже не так полезны, как старички серого цвета.

По информации с wikidevi.com (1,2,3,4) существует несколько ревизий данного хаба, с различным набором компонентов на борту, и соответственно с различным функционалом (А1/A5 — ISP1521BE 7-port, B1-2xGL854G 4-port, C1 — 2xGL850Z 4-port).

Внимание на D-Link DUB-H7 обращено еще и потому, что помимо его неплохого функционала, это еще и самый доступный (как по цене, так и по распространенности) в наших краях вариант. Из моделей, которые могли упоминаться попутно с «Per-Port Power Switching» можно дополнительно отметить, например, такие:

  • Linksys USB2HUB4 USB 2.0 hub.
  • D-Link DFB-H7 Combo Hub
  • Elecom U2H-G4S
  • Sanwa Supply USB-HUB14GPH
  • Targus Inc. PAUh312
  • Hawking Technology Uh314
Мне искать упомянутые устройства не довелось, потому что когда-то повезло с версией ревизии A5. Правда сейчас, если бы пришлось покупать такой хаб, я бы постарался найти ревизию B1, потому что помимо управления питанием портов, чип, на котором она построена (GL854G) имеет внутри такую штуку, как Multi Transaction Translator.
Важность наличия Multi Transaction Translator (MTT) в USB хабе
Небольшое отступление для того, чтобы расказать, что такое этот Multi Transaction Translator (MTT) и почему он так важен и нужен. Передатчик операции (англ. transaction translator, TT) является важным компонентом любого высокоскоростного хаба, который обеспечивает связь между upstream и downstream портами концентратора, особенно в случае, когда эти порты работают на разных скоростях передачи данных. Фактически, TT отделяет низко- и среднескоростные устройства, от высокоскоростных (сугубо USB 2.0, например) и отвечает за работу на скоростях USB 1.1.

Передатчик операции может быть двух видов — одинарным (англ. Single Transaction Translator, STT) или множественным (англ. Multiple Transaction Translator, MTT). В случае STT используется один передатчик для всех портов, а в случае MTT — у каждого порта свой передатчик. Понятно что первый вариант более дешевый и простой, откуда происходит и основной недостаток такого варианта — в случае подключения к хабу нескольких USB 1.1 портов все они будут работать через одно-единственное «бутылочное горлышко». Думаю можно представить что будет со скоростью обмена.

Говоря простым языком, STT-хабы имеют ограничение на количество устройств, которыми можно пользоваться одновременно. В противном случае это чревато потерей пакетов из-за конфликтов в планировании передачи данных, перегрузкой хаба (особенно в случае использования активно обменивающихся данными устройств, вроде звуковых карт) и т.п. Поэтому лучше при выборе хаба сразу ориентироваться на устройства с MTT, а не искать потом причину нестабильности в работе. Если хаб уже имеется, и он, к несчастью, оказался с STT, то остается только внимательно проверить стандарты подключенных к хабу устройств и, по возможности, сократить количество подключенных USB 1.1 до одного.

К сожалению, абсолютное большинство недорогих хабов, построенных на бюджетных чипах (fe1.1s, GL850G, и ISP1521BE моего A5 хаба) на борту имеют STT, более дорогие и продвинутые (GL852G, GL854G (B1 ревизия обсуждаемого D-link DUB-H7), GL3520, VL812, VL813, SMSC USB2514) работают под управлением MTT.

Проверить тип передатчика операции можно либо прочитав даташит на чип (но часто китайцы не могут или не хотят сообщать марку чипа), либо подключив хаб к компьютеру с *nix и выполнив команду lsusb -v и найдя кусок служебной информации, относящийся к исследуемому хабу (по названию). В строке DeviceProtocol будет указано либо Single TT либо Multi TT. Ясно, что покупать лучше только с Multi :)

Описание характеристик хаба выданное командой lsusb

Bus 001 Device 005: ID 2001:f103 D-Link Corp. DUB-H7 7-port USB 2.0 hub Couldn't open device, some information will be missing Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 9 Hub bDeviceSubClass 0 Unused bDeviceProtocol 1 Single TT bMaxPacketSize0 64 idVendor 0x2001 D-Link Corp. idProduct 0xf103 DUB-H7 7-port USB 2.0 hub bcdDevice 1.00 iManufacturer 0 iProduct 0 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 25 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 0mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 9 Hub bInterfaceSubClass 0 Unused bInterfaceProtocol 0 Full speed (or root) hub iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 12

При запуске команды lsusb -v -t можно увидеть симпатичную иерархическую структуру подключенных usb-устройств.

Вместо lsusb можно использовать утилиту hwinfo с ключем --usb (ее желательно предварительно установить через sudo apt-get install hwinfo). Тогда вывод информации о usb устройствах будет выглядеть немного иначе:

Информация выдаваемая hwinfo

lab@lab-G:~$ hwinfo --usb 23: USB 00.0: 10a00 Hub [Created at usb.122] Unique ID: zFuK.sOcBcpBDhs4 Parent ID: k4bc.9T1GDCLyFd9 SysFS ID: /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0 SysFS BusID: 1-8:1.0 Hardware Class: hub Model: «D-Link DUB-H7 7-port USB 2.0 hub» Hotplug: USB Vendor: usb 0x2001 «D-Link» Device: usb 0xf103 «DUB-H7 7-port USB 2.0 hub» Revision: «1.00» Driver: «hub» Driver Modules: «usbcore» Speed: 480 Mbps Module Alias: «usb:v2001pF103d0100dc09dsc00dp01ic09isc00ip00in00» Config Status: cfg=new, avail=yes, need=no, active=unknown Attached to: #21 (Hub)

В общем, кратенько с особенностями работы низкоскоростных устройств разобрались и теперь самое время перейти к программной части.
Управляем питанием USB-портов
Cкажу сразу, найти способ реализации функционала PPPS в среде Windows мне не удалось (хотя бы из праздного интереса). Максимум — включить/отключить устройство с помощью утилиты devcon. Буду рад, если кто-то из читателей поправит и дополнит. А пока же все процедуры проводятся на примере Ubuntu (в случае openwrt – алгоритм аналогичен, хотя в последних trunk-ах она уже должна быть включена в состав «дистрибутива»).

Итак, возможность Per-Port Power Switching (PPPS) или «попортового переключения питания» реализуется на хабах с аппаратной поддержкой этой функции с помощью программы hub-ctrl или ее потомка uhubctrl. Рассмотрю их по-очереди.

HUB-CTRL
Программа написана японским борцом за независимость инженером Niibe Yutaka в далеком 2006 году. Но работает без проблем и сейчас. Для установки нам понадобится любой *nix и библиотека libusb-dev. На примере Ubuntu 16.04 LTS алгоритм следующий:Устанавливаем доп. пакеты: sudo apt-get update && sudo apt-get install libusb-dev git gcc Скачиваем исходники: git clone https://github.com/codazoda/hub-ctrl.c Комплируем с помощью gcc: cd hub-ctrl.c && gcc -o hub-ctrl hub-ctrl.c -lusb В случае недоступности адреса, можно вручную закачать исходники отсюда или отсюда и скомпилировать описанной выше командой.

У программы достаточно простой синтаксис командной строки, укладывающийся в следующее описание:

./hub-ctrl [{-h HUBNUM | -b BUSNUM -d DEVNUM}] \ [-P PORT] [{-p [VALUE] | -l [VALUE]}] где HUBNUM — номер хаба, BUSNUM-номер шины, DEVNUM-номер устройства, PORT-номер порта

Для того, чтобы узнать эти параметры, достаточно запустить команду lsusb:

Кстати, программа hub-ctrl может выступать в качестве своеобразного «пробника» usb-хаба на факт наличия в нем способности к управлению питанием портов. Достаточно ее запустить с ключом -v. Получаем список имеющихся в системе поддерживаемых хабов (строка INFO) и состояние портов (в моем случае все порты выключены).

lab@lab-G:~/hub$ sudo ./hub-ctrl -v Hub #0 at 001:006 INFO: individual power switching. WARN: Port indicators are NOT supported. Hub Port Status: Port 1: 0000.0000 Port 2: 0000.0000 Port 3: 0000.0000 Port 4: 0000.0000 Port 5: 0000.0000 Port 6: 0000.0000 Port 7: 0000.0000 А вот так будет выглядеть конфигурация, когда все порты включены:lab@lab-G:~/hub$ sudo ./hub-ctrl -v Hub #0 at 001:006 INFO: individual power switching. WARN: Port indicators are NOT supported. Hub Port Status: Port 1: 0000.0100 power Port 2: 0000.0100 power Port 3: 0000.0100 power Port 4: 0000.0100 power Port 5: 0000.0100 power Port 6: 0000.0100 power Port 7: 0000.0100 power Чтобы включить какой-то из портов нужно выполнить команду sudo ./hub-ctrl -h 0 -P 1 -p 1, где -h указывает какой хаб используем (0-й в моем случае), -P говорит какой порт (1-й порт в моем случае), а -p указывает на состояние (0-выключен, 1-включен).

Чтобы получить конфигурацию как на картинке выше, понадобилось последовательно выполнить следующие команды (для изначально отключенных портов):

sudo ./hub-ctrl -h 0 -P 2 -p 1 sudo ./hub-ctrl -h 0 -P 4 -p 1 sudo ./hub-ctrl -h 0 -P 6 -p 1

Соответственно, не сложно написать скрипт, который заставит for fun мигать светодиоды в нужной последовательности. Примеры таких вещей уже есть и успешно функционируют: азбука Морзе на usb-хабе, елочные гирлянды и т.д. и т.п. Мне вот из возможностей hub-ctrl не хватило функции циклического включения для реализации своих сиюминутных светотехнических фантазий (чтобы не тратить время на написание скрипта ну и т.п.). Этот досадный недостаток устранен в преемнике — uhubctl.

UHUBCTL
Программа uhubctl представляет из себя оптимизированный аналог hub-ctrl и обладает некоторыми косметическими отличиями (ну и конечно же поддерживает большее количество устройств).С uhubctl работают: Теоретически, утилита может быть скомпилирована для запуска в среде windows, но… Но пока взаимодействует она с утройствами через драйвер winusb.sys, который не может обращаться напрямую к хабу. Также в программе заявлена поддержка USB 3.0 (хабов USB 3.0 поддерживающих Per-Port Power Switching, кстати, намного больше чем хабов USB 2.0 с аналогичным функционалом). При работе с USB 3.0 хабом, подключенным к USB 3.0 upstream-порту, программа определяет его как два независимых виртуальных хаба: USB 2.0 и USB 3.0, а уже сами USB-устройства будут подключены к одному из них в зависимости от их возможностей и скорости соединения. Соответственно, для управления такими устройствами программа по-умолчанию включает/отключает питание на виртуальных хабах (перевести утилиту в ручной режим можно добавив в команду запуска ключ -е).

Важно: некоторую путаницу может вызвать система адресации для USB-портов (она схожа для hub-ctrl и uhubctl). При работе использует тот же метод адресации аналогичный таковому в ядре Linux: b-x.y.z, где b — номер шины USB, а x, y, z — номера портов цепочки узлов, начиная с корневого USB-хаба для данной шины. Если имеется больше чем один управляемый USB-хаб, определить правильные параметры можно запустив uhubctl с параметром -l (location). Отмечу, что эта адресация является полустабильной — она не изменится, если вы отключите и подключите USB-устройства обратно к одному и тому же физическому порту.

Алгоритм компиляции программы аналогичен алгоритму для hub-ctrl. За тем только исключением, что дополнительно нужно установить библиотеку libusb-1.0 (версия 1.0.12 или позднее) привычной командой sudo apt-get install libusb-1.0-0-dev, а затем скомпилировать бинарик командой make.

Синтаксис запуска программы следующий

uhubctl -a off -p 2

Эта команда отключает питание (-a off, или -a 0) на порту 2 (-p 2). Поддерживаемые команды off/on/cycle (или 0/1/2). Ключ cycle отключает питание, выжидает некоторое время (определяется ключом -d) и включает его обратно. Т.е. теперь хаб запросто для мигания может заменить микроконтроллер.

Что из этого всего следует, или Выводы
А следует из этого то, что «секрет» в старом хабе от D-Link все-такие есть. Использование описанной технологии (PPPS) вполне обосновано при необходимости удаленного управления массивом устройств, подключенных к шине USB. Более того, способ этот уже используется для отключения жестких дисков, веб-камер и GSM-модемов (таких как на картинке):

Хотя, что касается модемов и упомянутого мной D-link DUB-H7, то есть люди, которые подвергают сомнению работоспособность такой связки (при работе с программой hub-ctrl).

Причина заключается в том, что...

"… эксперименты с использованием Dlink DUB H-7 показали, что hub-ctrl -p 0 понижает напряжение только до уровня 1.47V. При этом после вставки модема в такой «выключенный порт» светодиод не моргает, однако файлы /dev/ttyUSBx для данного модема в системе появляются. Они даже могут быть открыты. Однако запись команд и чтение ответов из этого порта не заканчиваются успехом."

Описанные в статье утилиты (lsusb, hwinfo, hub-ctrl) могут выступать отличным подспорьем при выборе очередного USB-хаба, особенно, если нет доступа к просмотру внутреннего устройства. На хабре уже описывались пользовательские идеи и ожидания от идеальных usb-хабов (здесь и здесь). Описанные алгоритмы проверки существующих хабов, на мой взгляд, отлично дополнят и разбавят описанные авторами подходы. Ну и так, вдогонку, герой моей статьи (D-link DUB-H7 ver. A5) на мой взгляд очень неплохо выглядит с точки зрения схемотехнических решений. На сим, пожалуй, откланяюсь :)

P.S. Вдогонку вопрос к членам хабра-сообщества, у которых вдруг совершенно случайно завалялся такой же как у меня D-link DUB-H7 в сером корпусе.

Что за детали установлены на обведенных позициях (а может быть кто-то даже видел схему)? Особенно интересуют элементы RP1...RP2 (подозреваю на резисторную сборку из 0-х cопротивлений).

Дополнение: если вдруг кому-то понадобится дамп прошивки микросхемы EEPROM 24C02, то выглядит он вот так:

Список использованных источников

habr.com

Как превратить «столетний» usb-хаб в «умный» управляемый и сэкономить при этом 300$

Как-то давно понадобился мне хаб, желательно с большим количеством портов и c достаточно удобной формой, пригодной для встраивания вместо флоппи-дисковода в отсек 3,5''. Беглый просмотр барахолки подкинул модель D-link DUB-H7, да еще и в комбинации «2 по цене 1». Внешний осмотр ничего особенного не дал, хаб как хаб, сделан добротно, капитальный «принтерный» USB AM-BM на оборотной стороне и 3 А блок питания. Как всегда первым делом разобрал, порадовался малому количеству пустых мест вместо элементов вкупе с качественной пайкой и успокоился. Правда на всякий случай зашел в интернет посмотреть, а что это за хаб и есть ли интересные проекты с его участием. Проектов не оказалось, отзывы пользователей 50/50, в общем, никакой динамики. Хаб на протяжении 5-7 лет довольно сносно работал и выполнял свою задачу, потом плавно переместился в коробку для электронного хлама и вполне возможно сгинул бы в итоге вместе с безызвестными переходниками, адаптерами и т. п. Но произошло у меня в жизни событие, которое заставило-таки меня покопаться в мешках со старым барахлом, найти этот, как оказалось уникальный D-link, и стряхнув пыль извлечь его на божий свет. Если интересно послушать зачем — добро пожаловать под cut.

Intro или Плач о жадных производителях usb-хабов

С появлением маленьких удобных SoC роутеров (вроде любовно описанного мной в статье Руководство по доведению «до кондиции» клона популярного китайского мини-роутера Hame A15, он же «unbranded A5-V11» ) и повсеместного внедрения openwrt для управления сонмами устройств (в абсолютном большинстве случаев, это устройства подключаемые по USB) очень актуальной задачей становится задача управления электропитанием всевозможных модемов, картридеров, usb-rs232 преобразователей и т. д. и т. п. Найболее часто встречается необходимость управления портом при работе с GSM-модемами (для перезагрузки, например). В принципе, народ наработал уже достаточное количество решений. Для этих целей, начиная от использования свободных GPIO выводов в роутере, и заканчивая готовыми реле. Существуют решения и от сторонних производителей. Это например программируемый USB хаб на 4 порта от Acroname, который и в корпусе приятном и программным обеспечением богат, но стоит около 300$.

Есть вариант подешевле, умный переключаемый хаб с приятным названием Yupkit YKUSH всего лишь за 35€:

Самые же экономные могут использовать связку из самого дешевого usb хаба, нормально закрытого 5V реле, и любой из Arduino-к для отключения питания от usb порта в случае необходимости. Стоимость такого решения < 10$, без учета временных затрат на пайку и программирование Arduino.

Казалось бы тупик. Либо дорого и красиво, либо просто и на соплях неказисто. Но оказалось существует третий вариант. Притом решение старо, как сама спецификация USB 2.0 для хабов в которой оно описано.

Выдержки из спецификации, касающиеся управления питания USB

Self-powered hubs may have power switches that control delivery of power downstream facing ports but it is not required. Bus-powered hubs are required to have power switches. A hub with power switches can switch power to all ports as a group/gang, to each port individually, or have an arbitrary number of gangs of one or more ports. A hub indicates whether or not it supports power switching by the setting of the Logical Power Switching Mode field in wHubCharacteristics. If a hub supports per-port power switching, then the power to a port is turned on when a SetPortFeature(PORT_POWER) request is received for the port. Port power is turned off when the port is in the Powered-off or Not Configured states. If a hub supports ganged power switching, then the power to all ports in a gang is turned on when any port in a gang receives a SetPortFeature(PORT_POWER) request. The power to a gang is not turned off unless all ports in a gang are in the Powered-off or Not Configured states.…Although a self-powered hub is not required to implement power switching, the hub must support the Powered-off state for all ports. Additionally, the hub must implement the PortPwrCtrlMask (all bits set to 1B) even though the hub has no power switches that can be controlled by the USB System Software.

Переводя на русский, получается, что в стандарте USB уже прописана возможность управления питанием портов, с помощью т.н. Per-Port Power Switching (PPPS), но вот встретить устройство, которое бы поддерживало эту возможность не просто тяжело, а очень тяжело. Для реализации PPPS-функционала необходимы дополнительные компоненты (полевые транзисторы и обвязка), которые в целях экономии в хабы не устанавливаются.

Чутко реагируя на запросы рынка некоторые производители указывают в спецификациях хабов функцию PPPS, но на деле дальше надписи на коробке дело не идет. И в принципе, придраться тяжело, ведь многие чипы внутри хабов эту функцию поддерживают, но вот реализовать ее без дополнительных переключателей (транзисторов) невозможно (чаще всего USB порты напрямую подключены к линии +5V).

Я даже разобрал специально несколько маленьких USB-хабов, которые планировал использовать совместно c A5-V11 роутером. Внутри оказались: чип GL850G и горяче любимый китайцами FE1.1s. Естественно внутри обнаружились только сами контроллеры с минимумом деталей. Ввиду миниатюрного размера платы поместить даже навесным монтажом транзистор и примкнувшие к нему детали тяжело. Пришлось это успокоится. Хотя, в зависимости от чипа, если в даташите встречается упоминание о over-current detection and Individual or ganged power control, то можно провести операцию по smart-изации такого устройства по методу описанному в статье. Товарищ использовал комбинацию из транзистора и кучки резисторов для включения функции PPPS в своем хабе.

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

Также читая документацию, ловишь себя на том, что в ней нет-нет да и встречается упоминание о том, что режим управления портами можно реализовать, добавив дополнительно в схему какой-нибудь AIC1526-0 или MIC2026 (Dual-channel power distribution switch).

Схемы из даташитов не дадут соврать
Часть основная или переходим к сути

Обуреваемый невеселыми мыслями по поводу покупки китайских хабов с неизвестным функционалом («кота в мешке») и невозможности предварительной их проверки, я нечаянно натолкнулся на статью, посвященную настройке openwrt для управления питанием USB-хаба, притом в качестве примера приведен тот самый, заброшенный и забытый D-Link DUB-H7 в сером корпусе.

Изучив матчасть стало ясно, что на борту хаба помимо достаточно продвинутого контроллера Philips ISP1521BE есть и целая куча тех самых dual-channel power distribution switch AIC1528-0 для полноценного переключения питания. Хотя судя по даташиту, чип с минимальным обвесом сам может управлять питанием downstream портов (а еще там много чего, как оказалось, не реализовано, например индикация активности upstream порта с помощью технологии GoodLink, или хост USB 1.1 для корректной поддержки смеси 2.0 и 1.1 на downstream портах и т.д. и т.п.).

Кстати, для тех, кто решится повторить пройденный мной путь, сразу скажу, что современные версии D-Link DUB-H7 (в черном глянцевом корпусе) уже не так полезны, как старички серого цвета.

По информации с wikidevi.com (1,2,3,4) существует несколько ревизий данного хаба, с различным набором компонентов на борту, и соответственно с различным функционалом (А1/A5 — ISP1521BE 7-port, B1-2xGL854G 4-port, C1 — 2xGL850Z 4-port).

Внимание на D-Link DUB-H7 обращено еще и потому, что помимо его неплохого функционала, это еще и самый доступный (как по цене, так и по распространенности) в наших краях вариант. Из моделей, которые могли упоминаться попутно с «Per-Port Power Switching» можно дополнительно отметить, например, такие:

  • Linksys USB2HUB4 USB 2.0 hub.
  • D-Link DFB-H7 Combo Hub
  • Elecom U2H-G4S
  • Sanwa Supply USB-HUB14GPH
  • Targus Inc. PAUh312
  • Hawking Technology Uh314

Мне искать упомянутые устройства не довелось, потому что когда-то повезло с версией ревизии A5. Правда сейчас, если бы пришлось покупать такой хаб, я бы постарался найти ревизию B1, потому что помимо управления питанием портов, чип, на котором она построена (GL854G) имеет внутри такую штуку, как Multi Transaction Translator.

Важность наличия Multi Transaction Translator (MTT) в USB хабе

Небольшое отступление для того, чтобы расказать, что такое этот Multi Transaction Translator (MTT) и почему он так важен и нужен. Передатчик операции (англ. transaction translator, TT) является важным компонентом любого высокоскоростного хаба, который обеспечивает связь между upstream и downstream портами концентратора, особенно в случае, когда эти порты работают на разных скоростях передачи данных. Фактически, TT отделяет низко- и среднескоростные устройства, от высокоскоростных (сугубо USB 2.0, например) и отвечает за работу на скоростях USB 1.1.

Передатчик операции может быть двух видов — одинарным (англ. Single Transaction Translator, STT) или множественным (англ. Multiple Transaction Translator, MTT). В случае STT используется один передатчик для всех портов, а в случае MTT — у каждого порта свой передатчик. Понятно что первый вариант более дешевый и простой, откуда происходит и основной недостаток такого варианта — в случае подключения к хабу нескольких USB 1.1 портов все они будут работать через одно-единственное «бутылочное горлышко». Думаю можно представить что будет со скоростью обмена.

Говоря простым языком, STT-хабы имеют ограничение на количество устройств, которыми можно пользоваться одновременно. В противном случае это чревато потерей пакетов из-за конфликтов в планировании передачи данных, перегрузкой хаба (особенно в случае использования активно обменивающихся данными устройств, вроде звуковых карт) и т.п. Поэтому лучше при выборе хаба сразу ориентироваться на устройства с MTT, а не искать потом причину нестабильности в работе. Если хаб уже имеется, и он, к несчастью, оказался с STT, то остается только внимательно проверить стандарты подключенных к хабу устройств и, по возможности, сократить количество подключенных USB 1.1 до одного.

К сожалению, абсолютное большинство недорогих хабов, построенных на бюджетных чипах (fe1.1s, GL850G, и ISP1521BE моего A5 хаба) на борту имеют STT, более дорогие и продвинутые (GL852G, GL854G (B1 ревизия обсуждаемого D-link DUB-H7), GL3520, VL812, VL813, SMSC USB2514) работают под управлением MTT.

Проверить тип передатчика операции можно либо прочитав даташит на чип (но часто китайцы не могут или не хотят сообщать марку чипа), либо подключив хаб к компьютеру с *nix и выполнив команду lsusb -v и найдя кусок служебной информации, относящийся к исследуемому хабу (по названию). В строке DeviceProtocol будет указано либо Single TT либо Multi TT. Ясно, что покупать лучше только с Multi :)

Описание характеристик хаба выданное командой lsusb

Bus 001 Device 005: ID 2001:f103 D-Link Corp. DUB-H7 7-port USB 2.0 hubCouldn't open device, some information will be missingDevice Descriptor:bLength 18bDescriptorType 1bcdUSB 2.00bDeviceClass 9 HubbDeviceSubClass 0 UnusedbDeviceProtocol 1 Single TTbMaxPacketSize0 64idVendor 0x2001 D-Link Corp.idProduct 0xf103 DUB-H7 7-port USB 2.0 hubbcdDevice 1.00iManufacturer 0iProduct 0iSerial 0bNumConfigurations 1Configuration Descriptor:bLength 9bDescriptorType 2wTotalLength 25bNumInterfaces 1bConfigurationValue 1iConfiguration 0bmAttributes 0xe0Self PoweredRemote WakeupMaxPower 0mAInterface Descriptor:bLength 9bDescriptorType 4bInterfaceNumber 0bAlternateSetting 0bNumEndpoints 1bInterfaceClass 9 HubbInterfaceSubClass 0 UnusedbInterfaceProtocol 0 Full speed (or root) hubiInterface 0Endpoint Descriptor:bLength 7bDescriptorType 5bEndpointAddress 0x81 EP 1 INbmAttributes 3Transfer Type InterruptSynch Type NoneUsage Type DatawMaxPacketSize 0x0001 1x 1 bytesbInterval 12

При запуске команды lsusb -v -t можно увидеть симпатичную иерархическую структуру подключенных usb-устройств.

Вместо lsusb можно использовать утилиту hwinfo с ключем --usb (ее желательно предварительно установить через sudo apt-get install hwinfo). Тогда вывод информации о usb устройствах будет выглядеть немного иначе:

Информация выдаваемая hwinfo

lab@lab-G:~$ hwinfo --usb23: USB 00.0: 10a00 Hub[Created at usb.122]Unique ID: zFuK.sOcBcpBDhs4Parent ID: k4bc.9T1GDCLyFd9SysFS ID: /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0SysFS BusID: 1-8:1.0Hardware Class: hubModel: «D-Link DUB-H7 7-port USB 2.0 hub»Hotplug: USBVendor: usb 0x2001 «D-Link»Device: usb 0xf103 «DUB-H7 7-port USB 2.0 hub»Revision: «1.00»Driver: «hub»Driver Modules: «usbcore»Speed: 480 MbpsModule Alias: «usb:v2001pF103d0100dc09dsc00dp01ic09isc00ip00in00»Config Status: cfg=new, avail=yes, need=no, active=unknownAttached to: #21 (Hub)

В общем, кратенько с особенностями работы низкоскоростных устройств разобрались и теперь самое время перейти к программной части.

Управляем питанием USB-портов

Cкажу сразу, найти способ реализации функционала PPPS в среде Windows мне не удалось (хотя бы из праздного интереса). Максимум — включить/отключить устройство с помощью утилиты devcon. Буду рад, если кто-то из читателей поправит и дополнит. А пока же все процедуры проводятся на примере Ubuntu (в случае openwrt – алгоритм аналогичен, хотя в последних trunk-ах она уже должна быть включена в состав «дистрибутива»).

Итак, возможность Per-Port Power Switching (PPPS) или «попортового переключения питания» реализуется на хабах с аппаратной поддержкой этой функции с помощью программы hub-ctrl или ее потомка uhubctrl. Рассмотрю их по-очереди.

HUB-CTRL

Программа написана японским борцом за независимость инженером Niibe Yutaka в далеком 2006 году. Но работает без проблем и сейчас. Для установки нам понадобится любой *nix и библиотека libusb-dev. На примере Ubuntu 16.04 LTS алгоритм следующий:

Устанавливаем доп. пакеты: sudo apt-get update && sudo apt-get install libusb-dev git gccСкачиваем исходники: git clone github.com/codazoda/hub-ctrl.cКомплируем с помощью gcc: cd hub-ctrl.c && gcc -o hub-ctrl hub-ctrl.c -lusb

В случае недоступности адреса, можно вручную закачать исходники отсюда или отсюда и скомпилировать описанной выше командой.

У программы достаточно простой синтаксис командной строки, укладывающийся в следующее описание:

./hub-ctrl [{-h HUBNUM | -b BUSNUM -d DEVNUM}] [-P PORT] [{-p [VALUE] | -l [VALUE]}]где HUBNUM — номер хаба, BUSNUM-номер шины, DEVNUM-номер устройства, PORT-номер порта

Для того, чтобы узнать эти параметры, достаточно запустить команду lsusb:

Кстати, программа hub-ctrl может выступать в качестве своеобразного «пробника» usb-хаба на факт наличия в нем способности к управлению питанием портов. Достаточно ее запустить с ключом -v. Получаем список имеющихся в системе поддерживаемых хабов (строка INFO) и состояние портов (в моем случае все порты выключены).

lab@lab-G:~/hub$ sudo ./hub-ctrl -vHub #0 at 001:006INFO: individual power switching.WARN: Port indicators are NOT supported.Hub Port Status:Port 1: 0000.0000Port 2: 0000.0000 Port 3: 0000.0000 Port 4: 0000.0000Port 5: 0000.0000Port 6: 0000.0000 Port 7: 0000.0000

А вот так будет выглядеть конфигурация, когда все порты включены:

lab@lab-G:~/hub$ sudo ./hub-ctrl -vHub #0 at 001:006INFO: individual power switching.WARN: Port indicators are NOT supported.Hub Port Status:Port 1: 0000.0100 powerPort 2: 0000.0100 powerPort 3: 0000.0100 powerPort 4: 0000.0100 powerPort 5: 0000.0100 powerPort 6: 0000.0100 powerPort 7: 0000.0100 power

Чтобы включить какой-то из портов нужно выполнить команду sudo ./hub-ctrl -h 0 -P 1 -p 1, где -h указывает какой хаб используем (0-й в моем случае), -P говорит какой порт (1-й порт в моем случае), а -p указывает на состояние (0-выключен, 1-включен).

Чтобы получить конфигурацию как на картинке выше, понадобилось последовательно выполнить следующие команды (для изначально отключенных портов):

sudo ./hub-ctrl -h 0 -P 2 -p 1sudo ./hub-ctrl -h 0 -P 4 -p 1sudo ./hub-ctrl -h 0 -P 6 -p 1

Соответственно, не сложно написать скрипт, который заставит for fun мигать светодиоды в нужной последовательности. Примеры таких вещей уже есть и успешно функционируют: азбука Морзе на usb-хабе, елочные гирлянды и т.д. и т.п. Мне вот из возможностей hub-ctrl не хватило функции циклического включения для реализации своих сиюминутных светотехнических фантазий (чтобы не тратить время на написание скрипта ну и т.п.). Этот досадный недостаток устранен в преемнике — uhubctrl.

UHUBCTRL

Программа uhubctrl представляет из себя оптимизированный аналог hub-ctrl и обладает некоторыми косметическими отличиями (ну и конечно же поддерживает большее количество устройств).

С uhubctrl работают:

Теоретически, утилита может быть скомпилирована для запуска в среде windows, но… Но пока взаимодействует она с утройствами через драйвер winusb.sys, который не может обращаться напрямую к хабу. Также в программе заявлена поддержка USB 3.0 (хабов USB 3.0 поддерживающих Per-Port Power Switching, кстати, намного больше чем хабов USB 2.0 с аналогичным функционалом). При работе с USB 3.0 хабом, подключенным к USB 3.0 upstream-порты, программа определяет его как два независимых виртуальных хаба: USB 2.0 и USB 3.0, а уже сами USB-устройства будут подключены к одному из них в зависимости от их возможностей и скорости соединения. Соответственно, для управления такими устройствами программа по-умолчанию включает/отключает питание на виртуальных хабах (перевести утилиту в ручной режим можно добавив в команду запуска ключ -е).

Важно: некоторую путаницу может вызвать система адресации для USB-портов (она схожа для hub-ctrl и uhubctrl). При работе использует тот же метод адресации аналогичный таковому в ядре Linux: b-x.y.z, где b — номер шины USB, а x, y, z — номера портов цепочки узлов, начиная с корневого USB-хаба для данной шины. Если имеется больше чем один управляемый USB-хаб, определить правильные параметры можно запустив uhubctrl с параметром -l (location). Отмечу, что эта адресация является полустабильной — она не изменится, если вы отключите и подключите USB-устройства обратно к одному и тому же физическому порту.

Алгоритм компиляции программы аналогичен алгоритму для hub-ctrl. За тем только исключением, что дополнительно нужно установить библиотеку libusb-1.0 (версия 1.0.12 или позднее) привычной командой sudo apt-get install libusb-1.0-0-dev, а затем скомпилировать бинарик командой make.

Синтаксис запуска программы следующий

uhubctl -a off -p 2

Эта команда отключает питание (-a off, или -a 0) на порту 2 (-p 2). Поддерживаемые команды off/on/cycle (или 0/1/2). Ключ cycle отключает питание, выжидает некоторое время (определяется ключом -d) и включает его обратно. Т.е. теперь хаб запросто для мигания может заменить микроконтроллер.

Что из этого всего следует, или Выводы

А следует из этого то, что «секрет» в старом хабе от D-Link все-такие есть. Использование описанной технологии (PPPS) вполне обосновано при необходимости удаленного управления массивом устройств, подключенных к шине USB. Более того, способ этот уже используется для отключения жестких дисков, веб-камер и GSM-модемов (таких как на картинке):

Хотя, что касается модемов и упомянутого мной D-link DUB-H7, то есть люди, которые подвергают сомнению работоспособность такой связки (при работе с программой hub-ctrl).

Причина заключается в том, что...

"… эксперименты с использованием Dlink DUB H-7 показали, что hub-ctrl -p 0 понижает напряжение только до уровня 1.47V. При этом после вставки модема в такой «выключенный порт» светодиод не моргает, однако файлы /dev/ttyUSBx для данного модема в системе появляются. Они даже могут быть открыты. Однако запись команд и чтение ответов из этого порта не заканчиваются успехом."

Описанные в статье утилиты (lsusb, hwinfo, hub-ctrl) могут выступать отличным подспорьем при выборе очередного USB-хаба, особенно, если нет доступа к просмотру внутреннего устройства. На хабре уже описывались пользовательские идеи и ожидания от идеальных usb-хабов (здесь и здесь). Описанные алгоритмы проверки существующих хабов, на мой взгляд, отлично дополнят и разбавят описанные авторами подходы. Ну и так, вдогонку, герой моей статьи (D-link DUB-H7 ver. A5) на мой взгляд очень неплохо выглядит с точки зрения схемотехнических решений. На сим, пожалуй, откланяюсь :)

P.S. Вдогонку вопрос к членам хабра-сообщества, у которых вдруг совершенно случайно завалялся такой же как у меня D-link DUB-H7 в сером корпусе. Что за детали установлены на обведенных позициях? Особенно интересуют элементы RP1...RP2 (подозреваю на резисторную сборку из 0-х cопротивлений).

Список использованных источников

Автор: steanlab

Источник

www.pvsm.ru

4портовый usb3.0 hub с выключателями портов

Дешевенький usb3.0 хаб с выключателями. В целом все работает, но к качеству исполнения есть претензии.

Комплект — хаб и кабель в пакетике.

Каждый порт снабжен включателем питания и голубым индикатором с рассеивателем, так же в углу есть синий индикатор питания без рассеивателя:

С торца два разьема: micro-usb и +5В дополнительное питание, тут же заметны следы не очень аккуратного вскрытия, исходно их не было.

Половинки корпуса держаться на 5 шпиньках:

Плата. Пайка неаккуратная, флюс не смыт, корпуса разьемов частично не пропаяны.

Контроллер GL3520:

Преобразователь питания контроллера, на выходе 1,2В:

Блокировочные конденсаторы на каждый порт предусмотрены, но отсутствуют:

Разьем доп.питания подключен параллельно +5 от usb без развязки:

Выключатели припаяны криво:

Кабель плоский, длина с разьемами ~62см. Замеры: 4,63-4,27=0,36В 0,84А ~0,43 Ом 4,37-3,79=0,58В 1,48А ~0,39 Ом т.е. ~0,4 Ома суммарно в обе стороны. Можно прикинуть что жилы ~0,3Ом/м, похоже на awg30. Слегка компенсирует это безобразие не очень большая длина, но даже 0,9А, для одного порта, в пределах допустимого напряжения, он обеспечить все равно не может, хотя на пару-тройку флешек хватить должно.

usb3.0 работает во всех портах, скорость не режет.

Выводы: + действительно usb3 и работает — исполнение в соответствии с ценой — возможны проблемы с питанием подключаемых устройств

mysku.ru

USB3-хаб с сетевым адаптером (и usb2-хаб для сравнения)

Наконец-то дошли руки купить для ноутбука компактный usb-хаб с портом rj45 — потому что у меня всего один USB-порт, а сеть в компактные ноуты и планшеты ставить уже давно перестали. Сперва несколько стормозил и взял usb2-хаб, потом купил usb3. Так что обзор будет на оба хаба сразу.

USB3 + RJ45. Полная цена заявлена в 12,79$, но сколько раз туда не заглядывал — какие-то скидки всегда есть.USB2 + RJ45. Полная цена 3,49$ но тоже почти всегда есть мелкие скидки. Хотя я его за полную брал.

Кому читать лениво, то usb3 хороший и брать можно, а usb2 так себе и брать не обязательно. :)

И то и другое доставили в пределах месяца, но usb3 пришел раньше и потерялся на почте, потому точный срок доставки сказать не могу. Трек и там и там оборвался при входе в Россию (у USB2 во Внуково, у USB3 в Екатеринбурге).

Внешний вид

Оба хаба для сравнения. Белый — USB2, черный — USB3.

Размеры: USB2 — 95x25x15mm, длина хвоста 100мм, если разъем не считать. USB3 — 110x32x20mm, длина хвоста 140мм, если разъем не считать. Сам кабель более жесткий, чем у usb2.

Обфотографировать со всех сторон смысла не вижу. USB3 — порты на верхней грани.

На остальных гранях ничего нет, внизу только табличка с подписью:

USB2 — порты на боковой грани. Сверху написано «1PortUSB Network with 3PortUSB HUB»

С другой стороны есть разъем для внешнего питания (БП в комплекте нет):

Внутренности USB2. Сверху:

Снизу. Обе микросхемы безымянные, хотя с прямоугольной, наверное, ещё можно что-нибудь попытаться прочитать с хорошей лупой.

Внутрь USB3 лезть не хочу, руки у меня не самые прямые, ещё отломаю что — а мне им пользоваться. Хотя он тоже на защелках, но открывается не так легко, как USB2. В комментах намекнули, как USB3 разбирается — там два болтика под наклейкой.

Верх. Видно чип USB-хаба GL3520.

Низ. Здесь сетевой чип Realtek 8153.

Подключение

Проверял на ноутбуке с windows 10. Под другими ОС не пробовал. Оба устройства подключаются без проблем и не требуют драйверов. Сетевой адаптер usb2 виден просто как безымянный «USB to Ethernet adapter»

Дополнительная информация

USB3 определяется как «Realtek USB GbE Family Controller»:

Дополнительная информация

USB-тестер я опять куда-то задевал, так что измерения силы тока и вольтажа не будет. Могу только сказать, что подключал два жестких диска (SSD USB3 и 2,5" HDD через USB-переходник) и копировал файлы с одного на другой, особых проблем в процессе не заметил — значит питания им более-менее хватает. Хотя тут ещё много от хоста зависит.

Тесты скорости

Ноутбук — Lenovo Yoga 710-11, единственный порт USB3. ОС — Windows 10. Локальную скорость доступа проверял на SSD KingDian S180 в контейнере zalman ve350. Сеть — копировал файл с рабочего сервера (через три гигабитных свитча) на внутренний диск ноутбука.

Скорость SSD при прямом подключении:

Скорость SSD через USB2-хаб:

Скорость SSD через USB3-хаб:

Копирование файла при подключении к сети через USB2. Никаких 100 мегабит не наблюдается:

Копирование файла при подключении к сети через USB3. Скорость хоть и не весь гигабит реализует, но является вполне достойной — всё же это реальная сеть, а не идеальные условия:

Тест SSD при одновременном копировании файла по сети. Скорость копирования при запуске теста практически не меняется, а вот скорость работы с SSD падает заметно. Это ожидаемо и не смертельно (для меня). Редкий сценарий использования.

Выводы

USB3-хаб — к покупке рекомендую, если кому нужен именно такой.Плюсы: Полноценные usb3 и rj45 с соответствующими скоростями. Довольно компактный. Порты расположены так, что широкие usb-устройства не будут друг-друга задевать. Не требует драйверов под Windows 10.Минусы: Нету никаких индикаторов работы.

USB2-хаб. Ну… Можно и купить, но рекомендовать я бы не стал. Средненькое устройство.Плюсы: Компактный. Не требует драйверов под Windows 10. Есть индикаторы активности. Скорость usb2 на портах соответствует ожиданиям. Есть разъем под внешнее питание.Минусы: USB-порты расположены так, что широкие устройства в два соседних порта не встанут. Хотя это важно только если три порта сразу использовать хочется. Сетевой адаптер, хоть и делает вид, что стомегабитный, в реальности только десять мегабит обеспечивает.

mysku.ru

Как выбрать USB хаб (концентратор)

Виджет от SocialMart

Что делать, если необходимо переместить информацию с одного флэш-накопителя на другой, или провести синхронизацию данных на несколько внешних устройств, а такие нужные USB-порты уже заняты принтером, клавиатурой, мышкой, камерой, или USB-модемом? Отсоединить все лишние в данный момент приборы, а после необходимых действий присоединить снова? Неудобно, нудно и вредно для компьютера. Для решения таких проблем и придумано устройство, называемое USB-хаб или USB-концентратор. Эта статья расскажет о том, как выбрать подходящий USB-хаб для ваших потребностей.

Что такое USB-хаб?

USB-хаб (hub – центр деятельности) или концентратор – это своеобразный разветвитель портов, позволяющий расширить функционал компьютера за счет увеличения количества подключаемых внешних устройств, оборудованных интерфейсом – USB. Это посредник между компьютером и USB-приборами. Интерфейс USB (универсальная последовательная шина), как уже понятно из названия, изначально разрабатывался для обеспечения подключения любых девайсов к соответствующему контроллеру на ЭВМ. Такой контроллер называется USB-контроллером, он программно управляем, и обеспечивает программную логику коммуникации с внешними устройствами, подключение которых осуществляется с помощью специального USB-кабеля. Этот кабель в разрезе имеет несколько (от 2 до 6) медных скрученных по спирали парных медных проводов (витая пара) для передачи и приёма данных, и два провода для обеспечения питания внешнего устройства. Если провести свободную аналогию, то USB-хаб — это дорожная развязка с регулировщиком при рации.

Коротко об USB

Как уже говорилось выше, USB-хаб обеспечивает связь между любыми периферийными приборами и компьютером. Сам интерфейс был разработан еще в 1994 году, и с тех пор разделился на несколько спецификаций. Поскольку современные USB-хабы имеют на своем корпусе порты с несколькими спецификациями, то для выбора хорошего устройства стоит разобраться, чем они друг от друга отличаются. Спецификации различаются по поддерживаемой скорости передачи данных, максимальной силе тока, которую может выдать контроллер, количеством подключаемых устройств.

  • USB1 Режимы передачи данных: Low-speed – от 10-1500 Кбит/c; Full-speed — от 0,5-12 Мбит/с; поддержка до 127 подключаемых устройств; контроллер способен выдавать до до 500 мА при 5 В напряжения.
  • Usb0 Режимы передачи данных: кроме Low-speed и Full-speed доступен Hi-speed — 25-480 Мбит/с, остальные характеристики те же. Полная совместимость с USB 1.1, то есть старые устройства работают и с новым интерфейсом, только на пониженных скоростях.
  • USB0 Изменен тип кабеля. Добавлены 4 медных провода передачи/приема в виде другого контактного ряда. Полная совместимость с предыдущими спецификациями. Максимальная скорость до 4,8 Гбит/c. Увеличена сила тока, выдаваемого контроллером с 500 до 900 мА.
  • USB1 Новый разъем, который позволяет вставлять кабель USB в порт любой стороной. Скорость передачи данных увеличена вдвое по сравнению с USB 3.0. Сила тока от контроллера возросла до 5 А.

Типы устройств

Прежде чем дать какой-то конкретный совет по выбору надежного USB-хаба рассмотрим основные типы концентраторов:

  1. PCI или PCI-express карта. Такой hub выполнен в виде модуля для материнской платы компьютера, и размещается непосредственно в ее PCI или PCI-express слот. Относительно дешевые модели на внешней панели имеют от 2-х до 8-ми портов USB разных спецификаций.
  2. Внешний пассивный (не питаемый) USB-хаб. Недорогой, но надежный вариант, выполнен в виде внешнего устройства, имеющего несколько портов (от 3 до 7) USB и напрямую подключенным к компьютеру USB-кабелем. Имеет свои плюсы и минусы. Из плюсов очевидная компактность, минусом же является небольшое количество портов и отсутствие внешнего источника питания. Не стоит забывать, что многие подключаемые приборы не имеют собственного источника питания, и при работе с несколькими особо «прожорливыми» устройствами (принтер, проектор, сканер, цифровая камера) могут возникнуть проблемы.

  1. Внешний активный (с внешним питанием) USB-хаб. Обычно весьма компактное внешнее устройство с большим количеством портов USB (более 10) разной спецификации. В отличии от предыдущего типа оборудован кабелем питания с вилкой для сети переменного тока, но также подключен USB-кабелем к компьютеру. Не имеет ограничений для подключения устройств. В том числе позволяет комфортно работать с несколькими (до 5) USB-хабами нижнего уровня, то есть подключёнными как внешние устройства.
  2. ExpressCard контроллер – это приспособление для ноутбуков. Необходимо вставить небольшой модуль в слот ExpressCard и вы получите несколько рабочих USB-слотов.

Какой выбрать?

Вот мы и подошли к главному вопросу: как выбрать USB-хаб? Прежде всего, посчитайте сколько всего и какие устройства вам нужно будет подключать к концентратору. Высчитайте суммарную потребляемую ими энергию. Потребляемую энергию можно узнать в интернете или в руководстве по эксплуатации девайса.

Внутренние типы устройств

Прежде всего, нужно подумать о том, какой тип концентратора вам нужен. Внутренний или внешний? Если внутренний, то проверьте, что в материнской плате есть свободный соответствующий слот (PCI или PCI-express). Питание такая плата внутреннего USB концентратор будет забирать у блока питания компьютера, поэтому проверьте что его хватит на все подключаемые устройства. Есть отличные модели по соотношению цена-качество, но тем не менее такой выбор теряет популярность и используется чаще всего, когда встроеный контроллер не удовлетворяет требованиям по скорости, например, при переходе с USB 1.1 на USB 2.0. Эксперты не рекомендуют производить установку внутреннего USB-хаба самостоятельно, ведь она сопряжена с вскрытием крышки системного блока, а также требует установки дополнительного программного обеспечения.

Если выбор ваш пал на внешний тип, то на какой? С внешним питанием или без? Первые стоят дороже, но и преимущества предоставляют большие. Не будет никакого толка от 7-ми портов, если питания на них не будет хватать.

Внешнее пассивное устройство

Пассивные модели будут снижать энергопотребление USB-порта, если на устройство, подключенное к нему, будет не хватать энергии, соответственно и скорость обмена данными будет падать, и даже самый лучший USB-хаб подобного типа обернется для вас разочарованием. Но с другой стороны если кроме флеш-карты и USB-зажигалки вы подключать не планировали, то за счет компактности и мобильности последнего вы сможете сохранить рабочее пространство и в случае необходимости взять устройство с собой. Старайтесь выбирать с учетом на будущее. Сейчас разъём – USB 2.0 уже сдает позиции и производители, учитывая совместимость с младшими устройствами, стараются оснащать свои концентраторы новыми USB 3.0 шинами. Например, одна из популярных моделей в 2016 от d-link DUB-1341 имеет 4 порта USB 3.0.

Активные внешние USB-хабы

Если же вам необходимо множество дополнительных USB-разъёмов лучше выбрать активный хаб, собственное питание даст возможность для подключения самых разнообразных устройств без ущерба в скорости. При приходе в магазин присмотритесь к устройству, оцените длину исходящего кабеля (от USB-хаба к компьютеру), удостоверьтесь, что его длины хватит для соединения. Осмотрите и сам исходящий кабель, проводники в нем должны быть упакованы в фольгу, сверху которых медные чулочки, оканчиваясь ферритовыми застежками. Только такой кабель надежно защищен от электромагнитных колебаний.

На форумах часто попадаются жалобы, даже на устройства с высоким рейтингом, на слишком близкое расположение USB-разъёмов друг к другу, что не позволяет подключать некоторые девайсы «по соседству». Учитывайте вес USB-хаба. Он не должен быть ни слишком легким не слишком тяжелым. ориентируйтесь на вес DVD-плеера или Wi-Fi роутера, если конечно не хотите, чтобы игривый ветерок ворвавшись окно опрокинул вашего новоприобретенного друга вместе с проводами, да и подключение устройств обойдется без передерживания легковесного устройства.

Предварительно посетите сайт магазина в интернете, сравните несколько понравившихся моделей USB-хабов по всем характеристикам, выберите несколько фаворитов 2015-2016 года, потому что какой-то модели может и не быть, будет обидно возвращаться ни с чем. Обращайте внимание также и на крепления шнура питания и исходящего кабеля USB-хаба, если они в разъёмах болтаются или выпадают, вы имеете дело либо с браком, либо с позорно некачественной моделью.

Рекомендуем просмотреть интересное видео:

Заключение

Вот и подошла к завершению наша статья о том, как выбрать хороший USB-хаб или как его еще называют концентратор, удобный для использования со всеми вашими устройствами. На сегодня на рынке представлено огромная вереница моделей USB-хабов различающихся и типом, и функциональностью, и дизайном. Чтобы купить себе надежного помощника, не стоит «бросаться» на первую модель в виде мишки с цветочком, потому что она милая. Основательно все взвесьте и прибор прослужит вам долгие годы.

VN:F [1.9.22_1171]

Рейтинг статьи: 8.8/10 (45 проголосовало)

hi-tech-pro.ru

Устройства USB - функции и хабы

Возможности шины USB позволяют использовать ее для подключения разнообразных устройств. Не касаясь "полезных" свойств ПУ, остановимся на их интерфейсной части, связанной с шиной USB. Все устройства должны поддерживать набор общих операций, перечисленных ниже. Динамическое подключение и отключение. Эти события отслеживаются хабом, который сообщает о них хост-контроллеру и выполняет сброс подключенного устройства. Устройство после сигнала сброса должно отзываться на нулевой адрес, при этом оно не сконфигурировано и не приостановлено. После назначения адреса, за которое отвечает хост-контроллер, устройство должно отзываться только на свой уникальный адрес.

Конфигурирование устройств, выполняемое хостом, является необходимым для их использования. Для конфигурирования обычно используется информация, считанная из самого устройства. Устройство может иметь множество интерфейсов, каждому из которых соответствует собственная конечная точка, представляющая хосту функцию устройства. Интерфейс в конфигурации может иметь альтернативные наборы характеристик; смена наборов поддерживается протоколом. Для поддержки адаптивных драйверов дескрипторы устройств и интерфейсов имеют поля класса, подкласса и протокола.

Передача данных возможна посредством одного из четырех типов передач (см. выше). Для конечных точек, допускающих разные типы передач, после конфигурирования доступен только один из них.

Управление энергопотреблением является весьма развитой функцией USB. Для устройств, питающихся от шины, мощность ограничена. Любое устройство при подключении не должно потреблять от шины ток, превышающий 100 мА. Рабочий ток (не более 500 мА) заявляется в конфигурации, и если хаб не сможет обеспечить устройству заявленный ток, оно не конфигурируется и, следовательно, не может быть использовано.

Устройство USB должно поддерживать приостановку (Suspended Mode), в котором его потребляемый ток не превышает 500 мкА. Устройство должно автоматически приостанавливаться при прекращении активности шины.

Возможность удаленного пробуждения (Remote Wakeup) позволяет приостановленному устройству подать сигнал хосткомпьютеру, который тоже может находиться в приостановленном состоянии. Возможность удаленного пробуждения описывается в конфигурации устройства. При конфигурировании эта функция может быть запрещена.

Хаб в USB выполняет коммутацию сигналов и выдачу питающего напряжения, а также отслеживает состояние подключенных к нему устройств, уведомляя хост об изменениях. Хаб состоит из двух частей - контроллера (Hub Controller) и повторителя (Hub Repeater). Повтори Повторитель представляет собой управляемый ключ, соединяющий выходной порт со входным. Он имеет средства поддержки сброса и приостановки передачи сигналов. Контроллер содержит регистры для взаимодействия с хостом. Доступ к регистрам осуществляется по специфическим командам обращения к хабу. Команды позволяют конфигурировать хаб, управлять нисходящими портами и наблюдать их состояние.

Нисходящие (Downstream) порты хабов могут находиться в следующих состояниях:

Ø Powered (питание отключено) - на порт не подается питание (возможно только для хабов, коммутирующих питание). Выходные буферы переводятся в высокоимпедансное состояние, входные сигналы игнорируются.

Ø Disconnected (отсоединен) - порт не передает сигналы ни в одном направлении, но способен обнаружить подключение устройства (по отсутствию состояния SEO в течение 2,5 мкс). Тогда порт переходит в состояние Disabled, а по уровням входных сигналов {DiffO или Diff1 в состоянии Idle) он определяет скорость подключенного устройства.

Ø Disabled (запрещен) - порт передает только сигнал сброса (по команде от контроллера), сигналы от порта (кроме обнаружения отключения) не воспринимаются. По обнаружении отключения (2,5 мкс состояния SEO) порт переходит в состояние Disconnect, а если отключение обнаружено "спящим" хабом, контроллеру будет послан сигнал Resume.

Ø Enabled (разрешен) - порт передает сигналы в обоих направлениях. По команде контроллера или по обнаружении ошибки кадра порт переходит в состояние Disabled, а по обнаружении отключения - в состояние Disconnect.

Ø Suspended (приостановлен) - порт передает сигнал перевода в состояние останова ("спящий" режим). Если хаб находится в активном состоянии, сигналы через порт не пропускаются ни в одном направлении. Однако "спящий" хаб воспринимает сигналы смены состояния незапрещенных портов, подавая "пробуждающие" сигналы от активизировавшегося устройства даже через цепочку "спящих" хабов. Состояние каждого порта идентифицируется контроллером хаба с помощью отдельных регистров. Имеется общий регистр, биты которого отражают факт изменения состояния каждого порта (фиксируемый во время EOF). Это позволяет хост-контроллеру быстро узнать состояние хаба, а в случае обнаружения изменений специальными транзакциями уточнить состояние.

Хост-контроллер

Хост-компьютер общается с устройствами через контроллер. Хост имеет следующие обязанности:

Ø обнаружение подключения и отсоединения устройств USB;

Ø манипулирование потоком управления между устройствами и хостом;

Ø управление потоками данных;

Ø сбор статистики;

Ø обеспечение энергосбережения подключенными ПУ.

Ø Системное ПО контроллера управляет взаимодействием между устройствами и их ПО, функционирующим на хост-компьютере, для согласования:

Ø нумерации и конфигурации устройств;

Ø изохронных передач данных;

Ø асинхронных передач данных;

Ø управления энергопотреблением;

Ø информации об управлении устройствами и шиной.

 

Похожие статьи:

poznayka.org