Xhci root hub 0 что это за драйвер
Upd: В общем, в конце концов помогла вот эта версия драйверов, спасибо большое за подсказку.
В общем, коллеги, поклонников у ASUS стало на одного меньше, да и вас призываю принять во внимание этот пост, если подумываете об предстоящей покупке и буквосочетание ASUS вклинивается в эти думы. Ибо что-то не совсем так в датском королевстве, если для работы современной операционной системы на компьютере с современной материнской платой приходится включать многолетние опыт системного администрирования и интуицию, однако.
1. Bootcamp был нужен, т.к. ОЗУ было маловато для двух параллельных систем. Да и пользователю была нужна только винда.
2. Там требование к винде были минимальные, места хватало, но факт остается фактом, что для того чтобы сделать дефрагментацию диска, пришлось заново ставить систему.
После такого как то несерьёзно говорить у бубне из за драйвера, который в итоге нашлось за 5 мин.
Пробовал всякие утилити, устанавливал 20мб, а она, чтобы создать загрузочный диск, начинала собирать из системы информацию на 4гб. А в итоге загрузочный диск зависал при старте.
Еще для меня было сюрпризом узнать, что USB Skype phone не распознается в винде ни через bootcamp, ни через paralells, т.к. он не совместим в MacOS.
Мне как-то понадоболись поставить windows на MBA, в котором было 40Гб свободного места на диске, НО.
Свободное пространство было фраментировано и BootCamp не мог столько места.
А теперь изложите пожалуйста ваш метод дефрагментации диска. Согласен даже на танцы в бубном, но чтоб реально работало.
П.С.
Заранее изложу официальный метод эпл. Забекапить все, переустановить систему, восстановить данные из бекапа и получить дефрагментированный диск.
Мне как-то понадоболись поставить windows на MBA, в котором было 40Гб свободного места на диске, НО.
Свободное пространство было фраментировано и BootCamp не мог столько места.
А теперь изложите пожалуйста ваш метод дефрагментации диска. Согласен даже на танцы в бубном, но чтоб реально работало.
Заранее изложу официальный метод эпл. Забекапить все, переустановить систему, восстановить данные из бекапа и получить дефрагментированный диск.
Не стоит ставить Вин7 (у Вас же вин7, не ХП? ) на 40 гиг. Я недавно на 50 гиг поставил, после всех обновлений осталось 3 гига свободного места. На вин-разделе.
Про фрагментацию не знаю, ССД же не надо фрагментировать. Попробовать утилитки какие-то? Мне не было нужды, потому не в курсе.
USB Root Hub — что это такое?
Приветствую, друзья! USB Root Hub — упоминание в ошибке Эта операция требует интерактивного оконного терминала, которая может появиться при подключении флешки к ПК, при этом сама флешка может открыться, а клава/мышь — не работать. Даже после перезагрузки. Если отключить все USB-устройства, то работает. Интересная ситуация — попробуем разобраться. Ошибка может выскочить также при установке драйверов.
Собрал здесь всевозможные способы решения, очень надеюсь поможет.
Само название USB Root Hub означает концентратор/хаб. То есть устройство, уже от которого идут порты USB.
Варианты решения
Еще одно сообщение:
Проверка целостности файлов
Совет о проверке нашел на форуме Майкрософт, вот мини-инструкция:
Нажмите энтер и дождитесь окончания проверки:
Кстати у меня стоит SSD, но проверка все равно заняла некоторое время, к сожалению процесс не моментальный.
Некоторым пользователям проверка эта помогла.
Вывод
Способов решения проблемы — несколько, надеюсь один из них вам поможет. Совет — если решите проблему, сразу создайте точку восстановления с названием Проблема с USB разьемами решена. Намного лучше создать образ системного диска.
Надеюсь информация помогла. Удачи.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.
Скачать драйвер для USB Root Hub Windows 7 x64 1.12.9.0
USB Root Hub Windows 7 x64 1.12.9.0
Как установить драйвер?
a) Для начала надо на рабочем столе выбрать значок (Мой компьютер) и нажать по нему правой кнопкой мыши, в выпадающем меню выбрать (Свойства).
b) Теперь переходим на вкладку (Оборудование) и нажимает на кнопку (Диспетчер устройств).
c) Теперь необходимо выбрать устройство для которого будет устанавливаться/обновляться драйвер. На строке с устройством надо нажать правой кнопкой мыши и в выпадающем меню выбрать (Свойства), либо можно просто дважды по нему щелкнуть, чтобы перейти в нужные настройки.
d) Переходим на вкладку (Драйвер), выбираем кнопку (Обновить).
e) В появившемся диалоговом окне выбираем пункт (Нет, не в этот раз) и переходим (Далее).
g) Этот пункт меню подразумевает выбор между поиском драйвера на сменных носителях и вариантом указать папку с драйвером самостоятельно. Поэтому если в наличии есть диск с драйверами, то надо вставьте диск в CD-rom и выбрать вариант (Поиск на сменных носителях (дискетах, компакт-дисках..)) и перейти (Далее).
Если драйвер найден и скачен в интернете самостоятельно, то надо указать в ручную путь к папке в которой находятся установочный данные для драйвера следующим образом. Выбираем пункт (Включить следующее место поиска:) и переходим в (Обзор), теперь из списка выбираем папку с драйвером и кликаем на кнопку (ОК). Теперь смело переходим (Далее), если все сделано правильно, то начнется установка необходимого драйвера.
Что такое XHCI hand off в настройках BIOS?
Опция xhci hand off практически всегда встречается в современных материнских платах, на которых реализованы порты USB 3.0. Также данную опцию часто путают с EHCI Hand-Off. Обе они обычно имеют два состояния – Enabled (включено) и Disabled (выключено). Реже бывает значение AUTO.
В данной статье мы расскажем вам о назначении каждой из выше описанных опций, а также когда и какую из них нужно включать.
Для чего нужны EHCI Hand-Off и XHCI hand off?
Обе данные опции отвечают за включение и отключение функции контроля передачи управления контроллером USB от BIOS к операционной системе.
Разница между ними заключается в том, что EHCI Hand-Off (расшифровывается как Enhanced Host Controller Interface) контролирует передачу управления контроллера USB 2.0, а XHCI Hand Off (eXtensible Host Controller Interface) – контроллера USB 3.0.
Стоит обратить внимание на тот факт, что usb порты работают как в BIOS, так и в операционной системе. Так вот до того, как начнет грузится ОС работой контроллера USB управляет BIOS, а после загрузки ОС передает управление контроллером ей.
Ранее в этот самый момент передачи управления могли возникать проблемы и ошибки. Чтобы ошибки исключить и были придуманы опции EHCI Hand-Off и XHCI Hand Off. Последняя является продолжением первой, так как современные материнские платы имеют на своем борту eXtensible Host Controller Interface – usb контроллер, поддерживающий работу с USB 3.0.
Какое значение выставлять?
Что касается старого EHCI Hand-Off, то, начиная с Windows XP, ей нужно выставлять значение Disabled, так как механизм контроля и исключения ошибок при передачи управления контроллером USB 2.0 был интегрирован в операционную систему.
Правильные значениях для опций XHCI hand off и EHCI Hand-Off
Что касается опции XHCI Hand Off, то здесь все наоборот. Она должны быть всегда включена вне зависимости от версии операционной системы. По умолчанию включена практически на всех материнских платах.
Ее отключение может привести к сбоям в работе USB портов, а также устройств, подключенным к ним.
EHCI по-людски на русском языке
Введение
Всех приветствую. Сегодня хочу поделиться опытом и всё-таки по-моему внятно объяснить про такой, на первый взгляд, простой стандарт для USB 2.0 хост-контроллера.
Изначально можно представить себе что USB 2.0 порт — это всего лишь 4 пина, по двум из которых просто передаются данные(Как, к примеру, COM-порт), но самом деле всё не так, и даже совсем наоборот. USB-контроллер в принципе не даёт нам возможности передавать данные как через обычный COM-порт. EHCI — довольно замысловатый стандарт, который позволяет обеспечить надежную и быструю передачу данных от софта до самого девайса, и в обратную сторону.
Возможно, вам пригодиться эта статья, если, к примеру, вы не имеете достаточных навыков написания драйверов и чтение документации к хардвейру. Простой пример: хотите написать свою ОС для мини-ПК, дабы какая-нибудь винда или очередной дистрибутив линукса не загружали железо, и вы использовали всю его мощь исключительно в своих целях.
Что такое EHCI
Что же, давайте начнем. EHCI — Enhanced Host Controller Interface, предназначен для передачи данных и управляющих запросов USB-устройствам, и в другую сторону, а в 99% случаев — является связующим звеном, между каким-либо софтом и физическим устройством. EHCI работает как PCI-устройство, а соответственно использует MMIO(Memory-Mapped-IO) для управления контроллером(да-да, я знаю, что некоторые PCI-девайсы используют порты, но тут я всё обобщил). В документации от Intel описан лишь принцип работы, и никаких намеков на алгоритмы, написанные хотя бы на псевдокоде, нет вовсе. EHCI имеет 2 типа MMIO-регистров: Capability и Operational. Первые служат для получения характеристик контроллера, вторые же — для его управления. Собственно, прикреплю саму суть связи софта и EHCI контроллера:
Каждый EHCI контроллер имеет несколько портов, каждому из которых могут быть подключены какие-либо USB-устройства. Так же, прошу заметить, что EHCI является улучшенной версией UHCI, который так же был разработан Intel на несколько годов раньше. Для обратной совместимости любой UHCI/OHCI контроллер, который имеет версию ниже, чем EHCI, будет компаньоном к EHCI. К примеру, у вас есть USB-клавиатура(А большинство клавиатур года так до сих пор были именно такими), которая работает на USB 1.1(заметим, что максимальная скорость работы USB 1.1 — 12 мегабит в секунду, а FullSpeed USB 2.0 имеет пропускную способность аж в 480 мбит/сек), а у Вас имеется компьютер с USB 2.0 портом, при подключении клавиатуры к компьютеру хост-контроллер EHCI как ни как будет работать с USB 1.1. Данная модель показана на следующей схеме:
Так же на будущее хочу сразу предупредить, что Ваш драйвер может работать не правильно из-за такой вот нелепой ситуации: вы инициализировали UHCI, а после чего EHCI, при этом добавили два одинаковых устройства, поставили в регистр порта бит Port Owner Control, после чего UHCI перестал работать, из-за того, что EHCI автоматически перетягивает порт на себя, а порт на UHCI перестаёт откликаться, эту ситуацию надо отслеживать.
Так же, давайте рассмотрим схему, показывающую саму архитектуру EHCI:
Справа написано про очереди — о них чуть позже.
Регистры EHCI контроллера
Для начала хочется еще раз уточнить, что через данные регистры вы будете управлять вашим устройством, поэтому они очень важны — да и без них программирование EHCI невозможно.
Для начала вам надо получить адрес MMIO, который выдан данному контроллеру, по смещению +0x10 будет лежать адрес наших долгожданных регистров. Есть одно но: сначала идут Capability регистры, а только после них — Operational, поэтому по смещению 0(от предыдущего адреса, который мы получили по смещению 0x10 относительно начала MMIO нашего EHCI) лежит один байт — длина Capability-регистров.
Capability регистры
По смещению 2 лежит регистр HCIVERSION — номер ревизии данного HC, который занимает 2 байта и содержит BCD версию ревизии (что такое BCD можно узнать из википедии).
По смещению +4 лежит регистр HCSPARAMS, его размер — 2 слова, он содержит структурные параметры устройства и его биты показывают следующее:
Operation регистры
По смещению 0 лежит регистр USBCMD — командный регистр контроллера, его биты означают следующее:
По смещению +8 лежит регистр USBINTR — регистр включения прерываний
Чтобы долго не писать, и тем более, Вам долго не читать, значения битов данного регистра можно посмотреть в спецификации, ссылка на неё будет оставлена внизу. Сюда я просто записываю 0, т.к. абсолютно не имею желания писать обработчики, мапить прерывания и т.п., так что это я считаю почти что абсолютно бессмысленным.
По смещению +12(0x0C) лежит регистр FRINDEX, в котором просто лежит текущий номер фрейма, при чем, хочу заметить, что последние 4 бита показывают номер микро-фрейма, в старшие 28 — номер фрейма (так же значение не обязательно меньше размера frameList’а, если вам нужен индекс — лучше брать его с маской 0x3FF(или же 0x1FF, и т.п.).
Регистр CTRLDSSEGMENT лежит по смещению +0x10, он показывает хост-контроллеру старшие 32 бита адреса листа фреймов.
Регистр PERIODICLISTBASE имеет смещение +0x14, в него вы можете положить младшие 32 бита листа фреймов, заметим, что адрес должен быть выравнен по размеру страницы памяти (4096).
Регистр ASYNCLISTADDR имеет смещение +0x18, в него вы можете положить адрес асинхронной очереди, заметим, что он должен быть выравнен по границе 32 байта, при этом должен находиться в первых четырех гигабайтах физической памяти.
Регистр CONFIGFLAG показывает, настроено ли устройство. Вы должны выставить бит 0 после завершения настройки устройства, он имеет смещение +0x40.
Перейдем к регистрам портов. Каждый порт имеет свой командно-статусный регистр, каждый регистр порта располагается со смещением +0x44 + (PortNumber — 1)*4, его биты значат следующее:
Структуры передачи данных и запросов
Организация структуры для обработки запросов включает в себя очередь и трансфер дескрипторы(TDs).
На данный момент мы рассмотрим только 3 структуры.
Последовательный список
Последовательный(Периодичный, Pereodic) список устроен следующим образом:
Как видно на схеме, обработка начинается с получения нужного фрейма из фрейм листа, каждый его элемент занимает 4 байта и имеет следующую структуру:
Как видно на картинке, адрес очереди/трансфер дескриптора выровнен по границе 32 байта, бит 0 означает то, что хост-контроллер не будет обрабатывать данный элемент, биты 3:1 показывают тип того, что будет обрабатывать хост-контроллер: 0 — изосинхронный TD(iTD), 1 — очередь, 2 и 3 в данной статье я рассматривать не буду.
Асинхронная очередь
Хост контроллер обрабатывает данную очередь только тогда, когда фрейм последовательный пустой, либо хост-контроллер обработал весь последовательный список.
Асинхронная очередь представляет собой указатель на очередь, где содержатся другие очереди, которые нуждаются в обработке. Схема:
qTD(Queue Element Transfer Descriptor)
Данный TD имеет следующую структуру:
Next qTD Pointer — указатель на продолжение очереди для обработки(для Horizontal Execution), бит 0 Next qTD Pointer’а показывает, то, что дальше нет еще одной очереди.
qTD Token — токен TD, показывает параметры передачи данных:
Голова очереди
Голова очереди(Queue Head) имеет следующую структуру:
Queue Head Horizontal Link Pointer — указатель на следующую очередь, биты 2:1 имеют следующие значения в зависимости от типа очереди:
Endpoint Capabilities/Characteristics — характеристики очереди:
Переходим к самому интересному.
Драйвер EHCI
Начнем с того, какие запросы может выполнять EHCI. Есть 2 типа запросов: Control — а-ля команд, и Bulk — к конечным точкам, для обмена данными, к примеру, абсолютное большинство флешек(USB MassStorage) использует тип передачи данных Bulk/Bulk/Bulk. Мышь и клавиатура для передачи данных тоже используют Bulk — запросы.
Инициализируем EHCI и настраиваем асинхронную и последовательные очереди:
Собственно, код для сброса порта в изначальное состояние:
Control-запрос к устройству:
Код обработки очереди:
И теперь запрос к конечной точке(Bulk-запрос)
Думаю, что тема достаточно интересная, в интернете на русском документаций, описаний и статей на эту тему почти нет, а если есть — очень размыто. Если интересна тема работы с железом и разработки ОС, то есть много чего рассказать.