25-08-2023
USB (ю-эс-би, англ. Universal Serial Bus — «универсальная последовательная шина») — последовательный интерфейс передачи данных для среднескоростных и низкоскоростных периферийных устройств в вычислительной технике. Символом USB являются четыре геометрические фигуры: большой круг, малый круг, треугольник и квадрат, расположенные на концах древовидной блок-схемы.
Разработка спецификаций на шину USB производится в рамках международной некоммерческой организации USB Implementers Forum (USB-IF), объединяющей разработчиков и производителей оборудования с шиной USB.
Для подключения периферийных устройств к шине USB используется четырёхпроводной кабель, при этом два провода (витая пара) в дифференциальном включении используются для приёма и передачи данных, а два провода — для питания периферийного устройства. Благодаря встроенным линиям питания USB позволяет подключать периферийные устройства без собственного источника питания (максимальная сила тока, потребляемого устройством по линиям питания шины USB, не должна превышать 500 мА, у USB 3.0 — 900 мА).
Первые спецификации для USB 1.0 были представлены в 1994—1995 годах. Разработка USB поддерживалась фирмами Intel, Microsoft, Philips, US Robotics. USB стал «общим знаменателем» под тремя не связанными друг с другом стремлениями разных компаний:
Поддержка USB вышла в виде патча к Windows 95b, в дальнейшем она вошла в стандартную поставку Windows 98. В первые годы устройств было мало, поэтому шину в шутку называли «Useless serial bus» — «бесполезная последовательная шина».[1] Впрочем, производители быстро осознали пользу USB, и уже к 2000 году большинство принтеров и сканеров работали с новым интерфейсом.
Hewlett-Packard, Intel, Lucent (ныне Alcatel-Lucent), Microsoft, NEC и Philips совместно выступили с инициативой по разработке более скоростной версии USB. Спецификация USB 2.0 была опубликована в апреле 2000 года, и в конце 2001 года эта версия была стандартизирована USB Implementers Forum. USB 2.0 является обратно совместимой со всеми предыдущими версиями USB.
Следует отметить, что в начале 2000-х годов корпорация Apple отдавала приоритет шине FireWire, в разработке которой она принимала активное участие. Ранние модели iPod были оснащены только интерфейсом FireWire, а USB отсутствовал. Впоследствии компания отказалась от FireWire в пользу USB, оставив в некоторых моделях FireWire только для подзарядки. Однако, часть выпускаемых клавиатур и мышей, начиная со второй половины 90-х годов, имели интерфейс USB.
С середины первого десятилетия 2000-х годов BIOS’ы компьютеров массового сегмента начали поддерживать USB[источник не указан 434 дня] (поддержка USB в корпоративном сегменте началась с середины 90-х). Это позволило загружаться с флэш-дисков, например, для переустановки ОС; пропала надобность в PS/2-клавиатуре. Современные материнские платы поддерживают до 20 USB-портов. В подавляющем большинстве современных ноутбуков COM- и LPT-портов нет, всё чаще появляются настольные компьютеры без COM- портов.
Пока происходило распространение USB-портов второй версии, производители внешних жёстких дисков уже «упёрлись» в ограничение USB 2.0 — и по току, и по скорости. Потребовался новый стандарт, который и вышел в 2008 году. Уложиться в старые 4 провода не удалось, добавили 5 новых проводов. Первые материнские платы с поддержкой USB 3.0 вышли в 2010 году. К 2013 году USB 3.0 стал массовым. Также имеются платы расширения, добавляющие поддержку USB 3.0 в старых компьютерах.
Кабель USB (до 2.0 включительно) состоит из 4 медных проводников — 2 проводника питания и 2 проводника данных в витой паре — и заземленной оплётки (экрана).
Кабели USB ориентированы, то есть имеют физически разные наконечники «к устройству» (Тип B) и «к хосту» (Тип A). Возможна реализация USB устройства без кабеля, со встроенным в корпус наконечником «к хосту». Возможно и неразъёмное встраивание кабеля в устройство, как в мышь (стандарт запрещает это для устройств full и high speed, но производители его нарушают). Существуют (хотя и запрещены стандартом) и пассивные USB удлинители, имеющие разъёмы «от хоста» и «к хосту».
С помощью кабелей формируется интерфейс между USB-устройствами и USB-хостом. В качестве хоста выступает программно-управляемый USB-контроллер, который обеспечивает функциональность всего интерфейса. Контроллер, как правило, интегрирован в микросхему южного моста, хотя может быть исполнен и в отдельном корпусе. Соединение контроллера с внешними устройствами происходит через USB-концентратор (другие названия — хаб, разветвитель). В силу того, что USB-шина имеет древовидную топологию, концентратор самого верхнего уровня называется корневым (root hub). Он встроен в USB-контроллер и является его неотъемлемой частью.
Для подключения внешних устройств к USB-концентратору в нем предусмотрены порты, заканчивающиеся разъёмами. К разъёмам с помощью кабельного хозяйства могут подключаться USB-устройства, либо USB-хабы нижних уровней. Такие хабы — активные электронные устройства (пассивных не бывает), обслуживающие несколько собственных USB-портов. С помощью USB-концентраторов допускается до пяти уровней каскадирования, не считая корневого. USB-интерфейс позволяет соединить между собой и два компьютера, но это требует наличия специальной электроники, эмулирующей Ethernet-адаптер с драйверной поддержкой с обеих сторон.
Устройства могут быть запитаны от шины, но могут и требовать внешний источник питания. По умолчанию устройствам гарантируется ток до 100 мА, а после согласования с хост-контроллером — до 500 мА. Поддерживается и дежурный режим для устройств и разветвителей по команде с шины со снятием основного питания при сохранении дежурного питания и включением по команде с шины.
USB поддерживает «горячее» подключение и отключение устройств. Это достигнуто увеличенной длиной заземляющего контакта разъёма по отношению к сигнальным. При подключении разъёма USB первыми замыкаются заземляющие контакты, потенциалы корпусов двух устройств становятся равны и дальнейшее соединение сигнальных проводников не приводит к перенапряжениям, даже если устройства питаются от разных фаз силовой трёхфазной сети.
На логическом уровне устройство USB поддерживает транзакции приема и передачи данных. Каждый пакет каждой транзакции содержит в себе номер оконечной точки (endpoint) на устройстве. При подключении устройства драйверы в ядре ОС читают с устройства список оконечных точек и создают управляющие структуры данных для общения с каждой оконечной точкой устройства. Совокупность оконечной точки и структур данных в ядре ОС называется каналом (pipe).
Оконечные точки, а значит, и каналы, относятся к одному из 4 классов — поточный (bulk), управляющий (control), изохронный (isoch) и прерывание (interrupt). Низкоскоростные устройства, такие, как мышь, не могут иметь изохронные и поточные каналы.
Управляющий канал предназначен для обмена с устройством короткими пакетами «вопрос-ответ». Любое устройство имеет управляющий канал 0, который позволяет программному обеспечению ОС прочитать краткую информацию об устройстве, в том числе коды производителя и модели, используемые для выбора драйвера, и список других оконечных точек.
Канал прерывания позволяет доставлять короткие пакеты и в том, и в другом направлении, без получения на них ответа/подтверждения, но с гарантией времени доставки — пакет будет доставлен не позже, чем через N миллисекунд. Например, используется в устройствах ввода (клавиатуры/мыши/джойстики).
Изохронный канал позволяет доставлять пакеты без гарантии доставки и без ответов/подтверждений, но с гарантированной скоростью доставки в N пакетов на один период шины (1 кГц у low и full speed, 8 МГц у high speed). Используется для передачи аудио- и видеоинформации.
Поточный канал дает гарантию доставки каждого пакета, поддерживает автоматическую приостановку передачи данных по нежеланию устройства (переполнение или опустошение буфера), но не дает гарантий скорости и задержки доставки. Используется, например, в принтерах и сканерах.
Время шины делится на периоды, в начале периода контроллер передает всей шине пакет «начало периода». Далее в течение периода передаются пакеты прерываний, потом изохронные в требуемом количестве, в оставшееся время в периоде передаются управляющие пакеты и в последнюю очередь поточные.
Активной стороной шины всегда является контроллер, передача пакета данных от устройства к контроллеру реализована как короткий вопрос контроллера и длинный, содержащий данные, ответ устройства. Расписание движения пакетов для каждого периода шины создается совместным усилием аппаратуры контроллера и ПО драйвера, для этого многие контроллеры используют крайне сложный DMA со сложной DMA-программой, формируемой драйвером.
Размер пакета для оконечной точки есть вшитая в таблицу оконечных точек устройства константа, изменению не подлежит. Он выбирается разработчиком устройства из числа тех, что поддерживаются стандартом USB.
Спецификация выпущена 15 января 1996 года.
Технические характеристики:
Спецификация выпущена в сентябре 1998 года. Исправлены проблемы и ошибки, обнаруженные в версии 1.0. Первая версия, получившая массовое распространение.
Спецификация выпущена в апреле 2000 года.
USB 2.0 отличается от USB 1.1 введением режима High-speed (пометка на логотипе — «HI-SPEED»[2]).
Для устройств USB 2.0 регламентировано три режима работы:
Последующие модификации к спецификации USB публикуются в рамках Извещений об инженерных изменениях (сайте USB Implementers Forum.
USB OTG (аббр. от On-The-Go) — дальнейшее расширение спецификации USB 2.0, предназначенное для лёгкого соединения периферийных USB-устройств друг с другом без необходимости подключения к ПК. Например, цифровой фотоаппарат можно подключать к фотопринтеру напрямую, если они оба поддерживают стандарт USB OTG. К моделям КПК и коммуникаторов, поддерживающих USB OTG, можно подключать некоторые USB-устройства. Обычно это флэш-накопители, цифровые фотоаппараты, клавиатуры, мыши и другие устройства, не требующие дополнительных драйверов[3]. Этот стандарт возник из-за резко возросшей в последнее время необходимости надёжного соединения различных устройств без использования ПК.
При подключении через USB OTG ранг устройства (ведущий или ведомый) определяется наличием или, соответственно, отсутствием перемычки между контактами 4 (ID) и 5 (Ground) в штекере соединительного кабеля. В USB OTG кабеле такая перемычка устанавливается на стороне ведущего (Тип А) устройства.
Wireless USB — технология USB (официальная спецификация доступна с мая 2005 года), позволяющая организовать беспроводную связь с высокой скоростью передачи информации (до 480 Мбит/с на расстоянии 3 метра и до 110 Мбит/с на расстоянии 10 метров).
23 июля 2007 года USB Implementers Forum (USB-IF) объявила о сертификации шести первых потребительских продуктов с поддержкой Wireless USB.[4]
Area SD-PEU3N-2EL (USB 3.0 PCIe card), USB 3.0 хост на базе микросхемы µPD720200 фирмы Renesas
USB 3.0 хаб, демонстрационная плата на базе микросхемы VL810 фирмы VIA
Окончательная спецификация USB 3.0 появилась в 2008 году. Созданием USB 3.0 занимались компании Intel, Microsoft, Hewlett-Packard, Texas Instruments, NEC и NXP Semiconductors.
В спецификации USB 3.0 разъёмы и кабели обновлённого стандарта физически и функционально совместимы с USB 2.0, причём для однозначной идентификации разъёмы USB 3.0 принято изготавливать из пластика синего или (у некоторых производителей) красного цвета. Кабель USB 2.0 содержит в себе четыре линии — пару для приёма/передачи данных, плюс и ноль питания. В дополнение к ним USB 3.0 добавляет ещё четыре линии связи (две витые пары), в результате чего кабель стал гораздо толще. Hовые контакты в разъёмах USB 3.0 расположены отдельно от старых в другом контактном ряду. Спецификация USB 3.0 повышает максимальную скорость передачи информации до 5 Гбит/с — что на порядок больше 480 Мбит/с, которые может обеспечить USB 2.0. Таким образом, скорость передачи возрастает с 60 Мбайт/с (30 Мбайт/с эффективных) до 600 Мбайт/с и позволяет передать 1 ТБ не за 8-10 часов, а за 40-60 минут.
Версия 3.0 отличается не только более высокой скоростью передачи информации, но и увеличенной силой тока с 500 мА до 900 мА. Таким образом, от одного хаба можно подпитывать большее количество устройств либо избавить сами устройства от отдельных блоков питания. На некоторых материнских платах и ноутбуках одно или несколько гнезд USB 3.0 могут быть помечены значком молнии. Это значит, что от данного порта можно запитывать и заряжать устройства, потребляющие ток более 1 А, а также зарядка будет идти при выключенном компьютере.
Фирмой Intel анонсирована[когда?] предварительная версия программной модели контроллера USB 3.0[5]. Но в октябре 2009 года появилась информация (от EE Times со ссылкой на сотрудника одной из крупнейших компаний по производству персональных компьютеров), что корпорация Intel решила повременить с внедрением поддержки USB 3.0 в свои чипсеты до 2011 года. Это решение привело к тому, что до 2011 года данный стандарт не стал массовым, так как пользователю было недостаточно просто купить материнскую плату, был необходим дополнительный адаптер.[6] Введение в третью аппаратную версию (англ. Rev.3) чипов Intel P/H/Q67 для построения материнских плат поддержки спецификации USB 3.0[7][8] частично решило данную проблему.
Хост-контроллер USB-3(xHCI) обеспечивает аппаратную поддержку потоков для команд, статусов, входящих и исходящих данных, что позволяет более полно использовать пропускную способность USB-шины. Потоки были добавлены к протоколу USB 3.0 SuperSpeed для поддержки UASP.
Аппаратная поддержка 4 портов USB 3.0 реализована в чипсетах AMD на платформах FM1 и FM2, в чипсетах Intel 7-й и 8-й серий для сокетов LGA1155 и LGA1150, а также Apple устанавливает порты USB 3.0 в своих новых MacBook Air, MacBook Pro и Mac mini.
Linux поддерживает USB 3.0, начиная с версии ядра 2.6.31.[9]
В Windows 8 интерфейс USB 3.0 поддерживается без установки дополнительных драйверов.
31 июля 2013 года USB 3.0 Promoter Group объявила о принятии спецификации следующего интерфейса, USB 3.1, скорость передачи которого может достигать 10 Гбит/с. Разъём USB 3.1 Type-C является симметричным, позволяя вставлять кабель любой стороной, как это ранее сделала Apple с разъёмом Lightning .
Спецификация 1.0 регламентировала два типа разъёмов: A — на стороне контроллера или концентратора USB и B — на стороне периферийного устройства. Впоследствии были разработаны миниатюрные разъёмы для применения USB в переносных и мобильных устройствах, получившие название Mini-USB. Новая версия миниатюрных разъёмов, называемых Micro-USB, была представлена USB Implementers Forum 4 января 2007 года.
Обычный | Mini | Micro | |
---|---|---|---|
Тип A | 4×12 мм
|
3×7 мм
|
2×7 мм
|
Тип B | 7×8 мм
|
3×7 мм
|
2×7 мм
|
Существуют также разъёмы типа Mini-AB и Micro-AB, с которыми соединяются соответствующие коннекторы как типа A, так и типа B.
Производителями электроники используется разъём, совместимый с Mini USB, содержащий 10 контактов, а не 5, как в оригинале (10-контактный штекер не войдёт в 5-контактный разъём). В частности, данное гнездо можно увидеть в телефонах под маркой Alcatel(TCL), Fly и Philips, где дополнительные контакты используются для возможности использования гарнитуры с микрофоном. Однако после перехода на Micro USB + Mini Jack, в рамках Европейской программы по стандартизации зарядных устройств, использование данного разъёма с 2012 года резко сократилось.
USB-A удачно сочетает долговечность и механическую прочность, несмотря на отсутствие винтовой затяжки. Однако уменьшенные варианты разъёмов, имеющие тонкие пластмассовые выступы, высоко выступающие из подложки гнезда, плохо переносят частое смыкание-размыкание и требуют более бережного обращения.
Сигналы USB (версии ≤2.x) передаются по двум проводам экранированного четырёхпроводного кабеля.
Номер контакта | 4 | 3 | 2 | 1 |
---|---|---|---|---|
Обозначение |
|
|
|
|
Цвет провода |
|
|
|
|
|
Здесь GND — цепь «корпуса» для питания периферийных устройств, а VBus — +5 вольт, также для цепей питания. Данные передаются дифференциально по проводам D- и D+ (diff0 и diff1 соответственно, в терминологии официальной документации). Состояния «0» и «1» определяются по разности потенциалов между линиями более 0,2 В и при условии, что на одной из линий (D− в случае diff0 и D+ при diff1) потенциал относительно GND выше 2,8 В.[10] Дифференциальный способ передачи является основным, но не единственным (например, при инициализации устройство сообщает хосту о режиме, поддерживаемом устройством (англ. Full-Speed или англ. Low-Speed), подтягиванием одной из линий данных к V_BUS через резистор 1,5 кОм (D− для режима Low-Speed и D+ для режимов Full-Speed и High-Speed)[11].
Для соблюдения достаточного уровня сигнала в кабеле и недопускания его затухания требуется коррелировать длину кабеля с сечением проводников. Принята практика указания толщины сечения провода в AWG, например «28 AWG/1P…..».
AWG | Длина, не больше (см) |
---|---|
28 | 81 |
26 | 131 |
24 | 208 |
22 | 333 |
20 | 500 |
Обычный | Mini | Micro | |
---|---|---|---|
Тип A |
|
||
Тип B |
|
|
|
Внешние изображения | |
---|---|
USB Тип А | |
USB Тип В | |
USB Тип B micro | |
USB Тип B mini | |
USB 3.0 Powered-B | |
3_USB 3B_pinout_lrg.jpg Расположение контактов на розетке USB 3.0 B | |
3_USB 3A_pinout_lrg.jpg Расположение контактов на розетке USB 3.0 A |
№ контакта | A | B | micro B | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
1 | VBUS (VCC) | VBUS (VCC) | VBUS (VCC) | ||||||||
2 | D- | D- | D- | ||||||||
3 | D+ | D+ | D+ | ||||||||
4 | GND | GND | ID | ||||||||
5 | StdA_SSTX- | StdA_SSTX- | GND | ||||||||
6 | StdA_SSTX+ | StdA_SSTX+ | StdA_SSTX- | ||||||||
7 | GND_DRAIN | GND_DRAIN | StdA_SSTX+ | ||||||||
8 | StdA_SSRX- | StdA_SSRX- | GND_DRAIN | ||||||||
9 | StdA_SSRX+ | StdA_SSRX+ | StdA_SSRX- | ||||||||
10 | StdA_SSRX+ | ||||||||||
Экран | Экран | Экран | Экран | ||||||||
|
Также существуют разъёмы USB 3.0 Micro ещё двух типов: вилка USB 3.0 Micro-A и розетка USB 3.0 Micro-AB. Визуально отличаются от USB 3.0 Micro-B «прямоугольной» (не срезанной) частью разъёма с секцией USB 2.0, что позволяет избежать подключения вилки Micro-A в розетку Micro-B, а розетку Micro-AB делает совместимой с обеими вилками.
Розетка Micro-AB будет применяться в мобильных устройствах, имеющих бортовой USB 3.0 host контроллер. Для идентификации режима хост/клиент используется вывод 4 (ID) — в вилке Micro-A он замкнут на «землю».
Новый разъём USB 3.0 Powered-B спроектирован с использованием двух дополнительных контактов, что позволяет устройствам предоставлять до 1000 мА другому устройству, например, адаптеру Wireless USB. Это позволяет избежать необходимости в источнике питания для устройства, подключаемого к Wireless USB адаптеру, делая ещё один шаг к идеальной системе беспроводной связи (без отдельного питания). При обычных проводных подключениях к хосту или хабу эти два дополнительных контакта не используются.
Дополнительные контакты питания розетки USB 3.0 Powered-B
1 | VBUS | +5V Питание |
2 | USB D- | USB 2.0 данные |
3 | USB D+ | |
4 | GND | Земля |
8 | StdA_SSRX- | SuperSpeed приём |
9 | StdA_SSRX+ | SuperSpeed приём |
7 | GND_DRAIN | Земля |
5 | StdA_SSTX- | SuperSpeed передача |
6 | StdA_SSTX+ | SuperSpeed передача |
10 | DPWR | Дополнительное питание на устройство |
11 | GND_D | Земля питания устройства |
На CES 2013 компания Corning представила оптические кабели USB 3.0 и Thunderbolt. Разработчики сообщают о возможности передачи информации (но не энергии) на расстояние до 100 метров[12] против 3-5 метров (как правило) для стандартных «проводных» кабелей. При этом кабели тонкие (3 мм в диаметре) и гибкие (их можно спокойно завязывать в узлы). Скорость передачи данных достигает 1 ГБ/с. Разработчики также сообщают, что стоимость этих кабелей будет сравнима со стоимостью медных кабелей. Новинку обещают запустить в продажу в 1-м квартале 2013 года.
В начале пути сигнал из обычного электрического сигнала USB преобразуется в оптические сигналы. В конце пути сигнал подвергается обратному преобразованию. Кабель не требует никакого дополнительного программного обеспечения в процессе работы. Устройство включится автоматически, когда получит сигнал от компьютера. Все устройства, использующие технологию USB 3.0 или USB 2.0 являются полностью совместимыми с кабелями Corning USB 3.Optical. При подключении USB 3.Optical к компьютеру диспетчер устройств может показать несколько портов USB. "Фантомные" порты являются нормой, это сделано специально, с целью обеспечения правильной работы устройства.
Спецификация USB предлагает разработчику несколько вариантов устройств, в зависимости от требуемой скорости обмена данными. Это Low Speed (физическая скорость 1.5 Мбит/с ±1,5%), Full Speed (12 Мбит/с ±0,25%), High Speed (480 Мбит/с ±0,05%), SuperSpeed (5 Гбит/с), SuperSpeed+ (10 Гбит/с). Low, Full и High Speed устройства используют одну дифференциальную полудуплексную линию связи для обмена данными, SuperSpeed — несколько. Протоколы обмена идентичны.
Упрощенная электрическая схема USB соединения показана на рисунке. Когда к хосту никто не подключен обе сигнальные линии D+ и D- подтянуты резисторами 15 кОм к минусу питания. При подключении устройства одна из линий подтягивается к +3,3В через резистор 1,5 кОм. Устройства Low Speed подтягивают линию D-, а устройства Full Speed — D+. Таким образом хост определяет факт подключения и тип подключенного устройства. Устройства High Speed в момент подключения работают как Full Speed, переключаясь в высокоскоростной режим после обмена визитками.
Состояние дифпары, определенное резисторами подтяжки, в спецификации именуется Idle. То же состояние при включенном драйвере обозначается буквой J. Противоположное ему состояние — буквой K. Замыкание обеих линий на минус именуется Single Ended 0, сокращенно SE0; замыкание на плюс — SE1.
Данные кодируются по методу NRZI (Non-return-to-zero inverted). По этому методу каждому нолику входных данных соответствует изменение состояния дифпары, а при единице изменения нет. Чтобы исключить потерю синхронизации на длительных единичных последовательностях применяют битстаффинг, то есть принудительно вставляют в поток данных нолик на каждые 6 единиц подряд.
Состояние SE0 дольше 10 мс трактуется как сброс (Reset) USB устройства. Состояние Idle дольше 3 мс подряд трактуется как останов шины (Suspend) и формально требует от устройства самоограничения в потреблении электроэнергии от USB. Выход из Suspend происходит либо по возобновлению активности хоста либо устройство может подать специальный сигнал Resume при необходимости. Сигнал Resume состоит из состояния K на несколько миллисекунд, завершаемое трехбитовой последовательностью SE0,SE0,J.
Обмен происходит короткими пакетами. Каждый пакет начинается с последовательности Start of Packet, для Low и Full Speed это KJKJKJKK. Далее всегда идет специальный идентификатор пакета PID (англ. Packet IDentifier), указывающий на тип пакета. Всего имеется 16 разных типов пакетов, поэтому PID имеет размерность 4 бита. Однако для надежности значение этого поля дублируется в инверсном виде, поэтому длина поля PID в пакете 8 бит. Заканчивается пакет последовательностью End of Packet: SE0,SE0,J. Минимальный межпакетный интервал ~0,1 мкс (для Full Speed).
В зависимости от типа пакета между PID и EoP может содержаться ряд других полей с параметрами пакета и/или данными. Все эти поля (включая PID) передаются младшим битом вперед (LSB first).
Пакеты типа IN, OUT, SETUP являются заголовками многопакетной транзакции с обменом данными. Они содержат поля адреса устройства для транзакции и номера Endpoint с которым будет обмен. Целостность пакетов удостоверяет поле CRC5.
Пакеты типа DATA содержат поле данных и поле контроля целостности данных CRC16. Максимальная длина данных 8 байт для несконфигурированных устройств, 64 байта для Low Speed устройств, 1023 байта для Full Speed устройств и 1024 байта для High Speed устройств.
Пакеты типа ACK, NACK, STALL не содержат никаких дополнительных полей.
Спецификация USB содержит понятия временных фреймов и микрофреймов. Для Low и Full Speed устройств каждую миллисекунду хост передает специальный пакет SOF (Start of Frame). Этот период называется фрейм. Для High Speed этот пакет передается каждые 125 мкс, такой период называется микрофрейм. Спецификация USB требует чтобы поддерживалось такое планирование транзакций и пакетов, чтобы периодичность рассылки SOF не нарушалась.
Обмен данными происходит последовательностями из нескольких пакетов (транзакциями). Инициатором обмена всегда является хост. Он передает короткий пакет (token), уведомляющий о предстоящей транзакции. Например, токен OUT означает что немедленно за этим пакетом последует пакет с данными от хоста к устройству, то есть пакеты DATA0 или DATA1. Пакетов с данными может быть несколько, если каждый из них имеет максимально допустимую для этого пакета длину данных. Окончание пересылки данных определяется по длине пакета не равной максимальной. Как только приходит укороченный пакет устройство немедленно передает свой пакет-подтверждение (handshake), например ACK (все успешно принято), NACK (не смог принять, например переполнен входной буфер), STALL (данные адресованы несуществующему или отключенному функционалу устройства). Все пакеты в этой последовательности передаются практически слитно, зазор между пакетами не должен превышать ~1 мкс (для Full Speed), иначе последовательность будет признана ошибочной.
Аналогично происходит передача данных от устройства к хосту. Хост инициирует передачу токеном IN. Если устройство не имеет готовых данных для передачи, то отвечает NACK или STALL и транзакция заканчивается. Если данные готовы, устройство начинает передавать пакеты DATA0/DATA1. Принцип окончания передачи аналогичен: неполная длина пакета с данными. Получив неполный пакет хост отвечает устройству пакетом-подтверждением ACK.
Транзакция с токеном SETUP полностью аналогична транзакции OUT, отличия лишь в логике восприятия данных устройством: это параметры соединения, которые управляют работой USB стека устройства.
В момент подключения хост запрашивает у устройства ряд стандартизованных сведений (дескрипторов), на основании которых принимает решение как с этим устройством работать. Дескрипторы содержат сведения о производителе и типе устройства, на основании которых хост подбирает программный драйвер. Таблицы дескрипторов и назначение полей подробно описаны в главе 9 спецификации USB.
После этого хост производит смену скорости (если устройство High Speed) и назначает устройству адрес.
Назначение USB-устройств определяется кодами классов, которые сообщаются USB-хосту для загрузки необходимых драйверов. Коды классов позволяют унифицировать работу с однотипными устройствами разных производителей. Устройство может поддерживать один или несколько классов, количество которых определяется количеством конечных точек (USB endpoints).
Описание кодов классов:[14]
Код | Название | Примеры использования / примечание |
---|---|---|
00h | N/A | Не задано |
01h | Audio | Звуковая карта, MIDI |
02h | Communication Device (CDC) | Модем, Сетевая карта, COM-порт |
03h | Human Interface Device (HID) | Клавиатура, Мышь, Джойстик |
05h | Physical Interface Device (PID) | Джойстик с поддержкой Force feedback |
06h | Image | Веб-камера, Сканер |
07h | Printer | Принтер |
08h | Mass Storage Device (MSD) | USB-накопитель, карта памяти, кардридер, цифровая фотокамера |
09h | USB hub | USB-хаб |
0Ah | CDC Data | Используется совместно с классом CDC |
0Bh | Smart Card Reader (CCID) | Считыватель смарт-карт |
0Dh | Content security | Биометрический сканер |
0Eh | Video Device Class | Веб-камера |
0Fh | Personal Healthcare | Индикатор пульса, медицинское оборудование |
DCh | Diagnostic Device | Используется для проверки совместимости с USB |
E0h | Wireless Controller | Bluetooth-адаптер |
EFh | Miscellaneous | ActiveSync-устройства |
FEh | Application-specific | IrDA-устройства, режим обновления прошивки (DFU) |
FFh | Vendor-specific | На усмотрение производителя |
Также USB-разъёмы могут выполнять функции электрической розетки (обычно используются для зарядки мобильных телефонов и иных гаджетов)
Хотя теоретическая максимальная пропускная способность USB 2.0 составляет 480 Мбит/с (60 Мбайт/с), на практике обеспечить пропускную способность, близкую к пиковой, не удаётся (максимум 45 Мбайт/с[15], чаще до 30 Мбайт/с). Это объясняется тем, что шина USB является полудуплексной — для передачи данных в обе стороны используется всего одна витая пара, поэтому за один такт данные могут быть переданы только в одну сторону, и, соответственно, для двунаправленного обмена данными требуется 2 такта. Для сравнения, шина FireWire, хотя и обладает меньшей пиковой пропускной способностью 400 Мбит/с, что на 80 Мбит/с (10 Мбайт/с) меньше, чем у USB 2.0, но будучи дуплексной (для передачи данных используется две витые пары — каждая в свою сторону, и для двунаправленного обмена данными требуется 1 такт), она позволяет обеспечить бо́льшую пропускную способность для обмена данными с жёсткими дисками и другими устройствами хранения информации. В связи с этим разнообразные мобильные накопители уже давно «упираются» в недостаточную практическую пропускную способность USB 2.0.
Разъёмы Mini и особенно Micro USB, вследствие конструктивных просчётов производителя, зачастую со временем разбалтываются, начинают терять контакт и не имеют достаточно надёжного крепления к печатной плате, из-за чего при интенсивной эксплуатации могут быть полностью или частично повреждены. В некоторых случаях гнезда отрываются, что может привести к необходимости замены платы или даже приобретения нового устройства, в связи с невозможностью нормального восстановления оторванных печатных дорожек. Данный недостаток наиболее проявляется в малогабаритных устройствах, например, в мобильных телефонах, планшетных компьютерах, электронных устройствах для чтения и карманных цифровых проигрывателях.
Протокол требует от оконечного устройства поддержания достаточно сложного алгоритмического стека как для непосредственно обмена по шине, так и для поддержания сопутствующих функций типа инициализации или ответов на cлужебные сообщения. В виду своей сложности и разнообразности, устройства зачастую аппаратно выполняют лишь базовые уровни протокола, оставляя верхние на откуп программному коду. Это приводит к заметным непроизводительным затратам программной памяти и времени, а также содержит угрозу ошибок и попыток избыточно упростить программный код в ущерб соответствию стандарту.
Коды производителя и номер устройства выдается лишь членам сообщества после бюрократической процедуры. Это ограничивает доступность шины для мелких производителей и независимых разработчиков. Свободно доступные коды для устройств реализующих стандартные функциональности (напр. порт обмена, устройство памяти или аудио-устройство) создатели стандарта не предоставляют.
Список классов и подклассов устройств частями непоследователен, чрезмерно раздут, подклассы одного уровня зачастую неравноценны и содержат устаревшую функциональность. Как результат, поддержка определенного стандартного класса зачастую требует избыточного кода, не нужного для непосредственного функционирования, как со стороны устройства, так и хоста (компьютера). То же относится и к типам передаваемых пакетов, часть из которых имеет скорее историческое значение.
Несмотря на заявленную универсальность, устройства даже принадлежащие стандартным классам, большей частью требуют программной поддержки и отдельных драйверов на хосте. Так, современная операционная система Windows при подключении внешнего СOM-порта или GPS-навигатора (которые относятcя к одному стандартному классу коммуникационных устройств), требует для каждого из устройств отдельного личного драйвера. Это налагает на производителей отдельные обязанности по созданию и, возможно, подписыванию драйверов и содержит потенциальную опасность неработоспособности устройства на операционной системе другой версии.
По сравнению с другими форматами передачи данных, формат USB1.0 имеет большие латентности (задержки) передачи информации. В формате USB2.0 High Speed cоздатели предприняли попытку для уменьшения проблем латентности, но этот формат сам по себе требует наличия высокоскоростного приемопередатчика и высокочастотного кабеля сопряжения, что во многих случаях является избыточным и дорогостоящим.
В августе 2014 года была продемонстрирована реализация уязвимости устройств USB, получившей название BadUSB. Некоторые USB устройства позволяют изменять микропрограмму микросхемы, отвечающую за взаимодействие с компьютером. Злоумышленник, проведя реверс-инжиниринг конкретного устройства, может создать и записать в него вредоносный код. Этот вредоносный код может, например, имитируя клавиатуру, произвести необходимые действия за пользователя на заражаемом компьютере. Или, имитируя сетевое устройство, изменить сетевые настройки таким образом, что пользователь будет просматривать сайты интернет через подконтрольные злоумышленнику промежуточные серверы (Фарминг). Кроме того, имитируя USB-флешку, вредоносный код может загрузить и запустить на компьютере с включенным автозапуском вирусную программу. Такой вирус может скопировать себя и на другие устройства USB, подключённые в данный момент к компьютеру, заражая всё новые USB устройства (Вэб-камеры, клавиатуры, флеш-карты и др.).[16]
Протокол USB Mass Storage, представляющий собой метод передачи команд SCSI по шине USB, имеет бо́льшие накладные расходы, чем соответствующий ему протокол SBP-2 шины FireWire/1394. Поэтому при подключении внешнего диска или привода CD/DVD по FireWire удаётся достичь большей скорости передачи данных. Кроме того, USB Mass Storage не поддерживался в старых ОС (включая Windows 98), и требовал установки драйвера. SBP-2 же в них поддерживался изначально. Также в старых ОС (Windows 2000) протокол USB storage был реализован в урезанном виде, не позволяющем использовать функцию записи CD- и DVD-дисков на подключённом по USB дисководе, SBP-2 никогда не имел таких ограничений.
Шина USB строго ориентирована, поэтому соединение двух компьютеров требует дополнительного оборудования. Соединение оборудования без компьютера, например, принтера и сканера или же фотоаппарата и принтера было определено стандартом USB OTG, ранее же эти реализации были завязаны на конкретного производителя. Шина 1394/FireWire изначально не подвержена этому недостатку (например, можно соединить две видеокамеры).
Тем не менее, ввиду лицензионной политики Apple, а также значительно более высокой сложности оборудования, 1394 менее распространён, контроллер 1394 имеется на материнских платах только Premium или Deluxe версий . Что касается периферии, поддержка 1394 реализована во множестве корпусов для внешних накопителей на основе HDD (особенно премиум-сегмента) и приводов оптических дисков[источник не указан 499 дней], мультимедиа интерфейсах, камкордерах и видеокамерах.
Следует также отметить, что Apple использует в своих компьютерах и порт 1394b, известный как FireWire800, пиковая скорость передачи данных которого составляет 800 Мбит/сек.
«USB Implementers Forum» разрабатывает стандарт беспроводной сети на основе USB.
Inter-Chip USB (IC-USB) и High Speed Inter-Chip USB (HSIC) — упрощенные версии USB 2.0 для некоммутируемого соединения микросхем в одном устройстве. Упрощение достигается за счет замены физического уровня USB с асинхронного на синхронный, отказа от возможности смены скорости и определения подключения, отказа от электрической защиты драйверов и уменьшения их мощности. Логическая часть USB неизменна (в том числе логика состояний шины). IC-USB определяет соединение Full Speed (12 Мб/с) устройств; HSIC определяет соединение High Speed (480 Мб/с) устройств.
Первая версия стандарта IC-USB была принята в 2006 году. Первая версия стандарта HSIC была принята в 2007 году.[17] HSIC использует две цифровых линии с логическими уровнями LVCMOS (1,2 вольта): STROBE и DATA. Максимальная длина проводников 10 см. Синхронный интерфейс обеспечивает пропускную способность 480 Мбит/с при тактовой частоте 240 МГц. Драйвер физического уровня HSIC потребляет на 50 % меньше энергии и занимает на 75 % меньше места на кристалле, чем традиционный драйвер USB 2.0.[18]
В 2012 году была принята первая версия спецификаций Inter-Chip USB для USB 3.0.[19]
Последователям одного из евангельских культов Бразилии запретили пользоваться USB-портами. Так, их лидер Уэлдер Салданья (Welder Saldanha) усмотрел в эмблеме USB символ сатаны, а именно трезубец, которым пытают души грешников в аду. В связи с этим, он заявил, что все, кто используют USB, поклоняются сатане.[20][21][22][23]
Компьютерные шины | |
---|---|
Основные понятия | Шина адреса • Шина данных • Шина управления • Пропускные способности |
Процессоры | BSB • FSB • DMI • HyperTransport • QPI |
Внутренние | AGP • ASUS Media Bus • EISA • InfiniBand • ISA • LPC • MBus • MCA • NuBus • PCI • PCIe • PCI-X • Q-Bus • SBus • SMBus • VLB • VMEbus • Zorro III |
Ноутбуки | ExpressCard • MXM • PC Card |
Накопители | ST-506 • ESDI • ATA • eSATA • Fibre Channel • HIPPI • iSCSI • SAS • SATA • SCSI |
Периферия | 1-Wire • ADB • I²C • IEEE 1284 (LPT) • IEEE 1394 (FireWire) • Multibus • PS/2 • UART (RS-232, RS-485) • SPI • USB • Игровой порт |
Универсальные | Futurebus • InfiniBand • QuickRing • SCI • RapidIO • IEEE-488 • Thunderbolt (Light Peak) |
USB.