Особенности AMI UEFI firmware
В одной из предыдущих публикаций[1] мы затронули такой, казалось бы, очевидный вопрос: «Как убедиться в том, что флешка работает в USB 3.0?» Голоса в обсуждении сначала ехидно отметили, что той статье не хватает тэга «садомазо», а затем как бы испугавшись собственного эго, вычеркнули эту мысль из нашего сознания.
Но эта мысль уже ранила неокрепшие умы экспериментаторов. Появилось желание проверить доступность USB 3.0 для любого подключенного устройства еще на этапе старта (например, в UEFI Shell) до запуска операционной системы. Для начала была написана небольшая утилита CheckUSB (которая, правда, пока рассчитана только на работу с некоторыми реализациями 8-й версии чипсетов Intel).
Рис 1. Эксперименты с утилитой CheckUSB на ноутбуке ASUS T300LA
В подходе к мобильной платформе оказалось, что в ряде случаев, при перезагрузке, UEFI firmware ноутбука инициализирует USB-подсистему не полностью, оставляя часть работы операционной системе.
Рис 2. Опция xHCI Pre-Boot Mode в установках UEFI firmware ноутбуке ASUS T300LA
Например, если в CMOS Setup исходное состояние опции xHCI Pre-Boot Mode установлено Disable, заменяем на Smart Auto, и не загружая операционную систему запускаем утилиту CheckUSB, то видим, что список устройств, подключенных к контроллеру xHCI пуст. Это означает, что для обслуживания подключенных USB-устройств используется контроллер EHCI.
Рис 3. Подключение USB-устройств к Enhanced Host Controller Interface на ноутбуке ASUS N750JK до запуска Windows
- USB 2.0 Port Routing = 0, 14 соединений USB2 подключены к EHCI
- USB 3.0 Port SuperSpeed Enable = 0, 4 соединения USB3 отключены
- USB 2.0 Port Routing Mask = 00003FFFh
- USB 3.0 Port Routing Mask = 0000000Fh
Если перезагрузку повторить после старта операционной системы, все устройства оказываются корректно подключенными к контроллеру xHCI.
Рис 4. Подключение USB-устройств к eXtensible Host Controller Interface на ноутбуке ASUS N750JK при загрузке после Windows
What does the BIOS setting 'XHCI Pre-Boot Mode' do?
I have a BIOS setting called XHCI Pre-Boot Mode.
If I have this enabled, USB devices which aren’t plugged in at boot, are never recognised. If I set it to Disabled then USB devices work normally.
The brief BIOS description says "Enable this option if you need USB 3.0 support in DOS." Which I don’t, but it also says "Please note that XHCI controller will be disabled if you set this item as Disabled." So does that mean that USB 3.0 is disabled with this option?
Here’s a picture of the screen:
A subsequent BIOS update seems to have fixed this issue in that USB devices work even when not plugged in at boot with this option Enabled.
4 Answers 4
Based on the general symptom of USB devices not working when xHCI is enabled, and working when xHCI is disabled, it would sound like your OS has USB 2.0 drivers, but not USB 3.0 drivers.
What does this sort of BIOS setting do? I found a good summary of the choices for a similar ‘xHCI Mode’ BIOS setting in a post by tonymac user a6f691ac:
xHCI Mode = Disabled — The on-board USB 3.0 port function like a 2.0 port
xHCI Mode = Enabled — The on-board USB 3.0 port function like a 3.0 port
xHCI Mode = Auto — The on-board USB 3.0 port function like a 2.0 port before OS USB 3.0 driver load. If you reboot the OS, the on-board USB 3.0 port again function like a 2.0 port during this reboot BIOS phase before OS USB 3.0 driver load.
xHCI Mode = Smart Auto — The on-board USB 3.0 port function like a 2.0 port before OS USB 3.0 driver load. If you reboot the OS, during this reboot BIOS phase, BIOS is "Smart" enough to avoid downgrade the USB 3.0 port back to 2.0 functionality before OS USB 3.0 driver load. So Smart Auto is faster than Auto on 2nd boot onward, but Enabled is fastest once you are sure the OS has the USB 3.0 driver installed, because it avoid the switching. Making the on-board USB 3.0 port function like a 2.0 port is mainly to support OS installation or to support OS that does not have build-in USB 3.0 driver, so that the USB keyboard would still work if the user plug-in a USB keyboard or any other USB devices into the USB 3.0 ports before the OS is installed with the USB 3.0 driver come with the motherboard.
Background:
Each major version of USB has used a new software interface on the USB controller (1.x: UHCI and OHCI, 2.x: EHCI: 3.x: xHCI), each incompatible with the drivers for the previous version. Newer USB controllers work fine with older USB peripherals, so there is no reason for a computer to have anything but the latest USB hardware — provided that it’s fully up to date with the necessary drivers.
However, when installing an OS, there’s the possibility of a chicken-and-egg problem where you have the drivers in hand, but they aren’t built into the OS installation, and you don’t have a way to complete the OS installation and get the drivers on to the system other than using a disk that you need the drivers for.
To get around this for USB, systems either include dedicated older ports (for instance dedicated USB 2 ports on a system that also has USB 3 ports) or else they put a selection like this one in the BIOS that lets you change ports to use the older interface standard on the computer side, and then once you’ve got the OS on and the updated USB driver installer copied to the system, you can change back, install the update USB drivers, and now everything is running on the newest faster USB version.
The various "Auto" settings seem like an attempt to provide a BIOS configuration that works at full speed normally without having to change a BIOS setting at install time. This is presumably to save tech support calls from individual owners who are reinstalling their OSes, as well as to suit centrally administered environments where all OS installs are done by remote network boot and something like changing a BIOS setting on an individual machine part way through the setup process would be impractical.
Что делает настройка BIOS Pre-Boot Mode XHCI?
У меня есть настройки BIOS, называемые режимом предварительной загрузки XHCI. Если у меня включен этот USB-устройства, которые не подключены при загрузке, никогда не распознаются, если я установил его на Отключено, то USB-устройства работают нормально. Краткое описание BIOS гласит: «Включите эту опцию, если вам нужна поддержка USB3.0 в DOS». Что я не делаю, но он также говорит: «Пожалуйста, обратите внимание, что контроллер XHCI будет отключен, если вы установите этот пункт как Отключено». Значит ли это, что USB3 отключен с этой опцией? Вот изображение экрана:
ОБНОВЛЕНИЕ I Последующее обновление BIOS, по-видимому, устранило эту проблему, поскольку USB-устройства работают, даже если они не подключены при загрузке с включенным параметром.
4 ответа на вопрос
- Популярные
- Новые
- С комментариями
- Активные
Исходя из описанных вами симптомов, звучит так, будто ваша ОС имеет драйверы USB 2.0, но не драйверы USB 3.0.
Я нашел хорошую сводку вариантов подобной настройки BIOS ‘XHCI Mode’ в посте пользователя tonymac a6f691ac :
Режим XHCI = отключено — встроенный порт USB 3.0 работает как порт 2.0
Режим XHCI = включен — встроенный порт USB 3.0 работает как порт 3.0
Режим XHCI = Авто — встроенный порт USB 3.0 функционирует как порт 2.0 до загрузки драйвера ОС USB 3.0. Если вы перезагружаете ОС, встроенный порт USB 3.0 снова функционирует как порт 2.0 во время этой фазы перезагрузки BIOS до загрузки драйвера ОС USB 3.0.
Режим XHCI = Smart Auto — встроенный порт USB 3.0 функционирует как порт 2.0 до загрузки драйвера ОС USB 3.0. Если вы перезагружаете ОС, во время этой фазы перезагрузки BIOS будет достаточно «умным», чтобы избежать снижения производительности порта USB 3.0 до уровня 2.0 до загрузки драйвера ОС USB 3.0. Таким образом, Smart Auto работает быстрее, чем Auto при 2-й загрузке и позже, но Enabled работает быстрее, если вы уверены, что в ОС установлен драйвер USB 3.0, потому что это позволяет избежать переключения. Выполнение функции встроенного порта USB 3.0, например, порта 2.0, главным образом для поддержки установки ОС или поддержки ОС, в которой нет встроенного драйвера USB 3.0, чтобы клавиатура USB все еще работала, если пользователь подключил USB клавиатура или любые другие USB-устройства в порты USB 3.0 до установки ОС с драйвером USB 3.0 поставляются с материнской платой.
xHCI Pre-Boot Driver
Enabled The USB 3.0 ports are routed to the xHCI controller before booting to OS. (Default)
Disabled The USB 3.0 ports are routed to the EHCI controller before booting to OS.
When this item is set to Enabled, the xHCI Mode below will be automatically set to Smart Auto; when this item is set to Disabled, the xHCI Mode below will be automatically set to Auto.
XHCI hand off что это?
За что отвечает опция XHCI hand off в настройках BIOS?
SATA Configuration в биосе что это?
Initiate Graphic Adapter что это в биосе?
Memory mode – Independent что это?
Что такое 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 портов, а также устройств, подключенным к ним.