Usb provisioning что это
Intel AMT ( Active Management Technology ) есть важная составляющая Intel vPro и предназначена для удалённого управления компьютером. Однако для работы данной действительно полезной технологии требуется её первоначальная инициализация. Из-за того, что над развитием AMT работали разные команды, вышло много версий (на момент написания статьи уже заканчиваются работы над "юбилейной" десятой версией AMT 10), а также имеется серьёзная специфика её OEM-ной реализации (разные производители делают этот зоопарк весёлым до беспредела) - всё это крайне усложняет процесс реальной эксплуатации сией фичи. Настолько (усложнений), что сама компания Intel не только не в состоянии популярно объяснить, как же пользоваться Intel AMT, но и постоянно ошибается в документации по ней, окончательно запутывая даже искренне желающих разобраться и получить профит с того, за что уже заплатили (ведь известно, что все системы, имеющие наклейку Intel vPro дороже своих собратьев).
Итак, данной статьёй открывается серия мануалов и реальных кейсов, показывающих, как же задействовать Intel AMT - просто, понятно и доступно (насколько, конечно, это возможно).
Настройки Windows
Если на уровне БИОСа все порты и контроллеры включены, но USB порты все-равно не работают, возможно, проблема в настройках вашей системы Windows.
Во-первых, попробуйте просто отключить и подключить устройство заново. Это вызовет проверку корректности драйверов. Если с ними что-то не так, Windows постарается переустановить их.
Если при переподключении ничего не происходит — попробуйте включить контроллер в реестре Windows. Для этого необходимо сделать следующее:
Статья "Автоматизация процесса инициализации AMT - OneTouch Configuration" из серии "Учебник по Intel AMT", часть четвёртая.
- Часть первая: "Источники информации по Intel AMT".
- Часть вторая: "Основные пароли AMT".
- Часть третья: "PID/PPS инициализация AMT".
В роутере нет Parent Domain
Второй шаг для инициализации через интернет (" Parent Domain " и другие вариации его названия в разных роутерах) требует наличия возможности задать так называемое значение DHCP Option 15 . Некоторые роутеры (обычно старые и/или дешёвые) такого не могут (хотя это не нечто "необычное", а весьма примитивное и часто "появляется" после обновления прошивки роутера). В таком случае придётся внести данное значение "вручную". Это можно сделать многими способами:
- с помощью USB -флешки (так называемый USB-provisioning )
- вручную, зайдя в MEBx и введя в поле PKI DNS-suffix : "vpro.by" (без кавычек)
Инициализация флешкой заслуживает отдельной статьи (и не одной), потому пока остановлюсь на рекомендации "поработать ручками".
One-Touch Provisioning
Как я понимаю, этот метод тоже не актуален начиная с версии AMT 6.0?
Не могли бы вы вкратце посоветовать как мне можно провести provisioning АМТ в enterprise режиме с USBkey?
Есть Intel RCS сервер в домене, создал root сертификат с помощью AMT SDK по этой статье, но не залил его через WSMAN. Хотелось бы создать USB с помощью которого я смогу ввести систему в pre-provisioning режим, чтобы потом при включении комп мог обратиться к Intel RCS серверу используя сертификат, и чтоб сервер пересылал Secure Profile (xml) с интеграцией машины в Active Directory.
Если не ошибаюсь сейчас этот вышеописанный метод называется Remote Configuration using PKI. Уже несколько раз читал статью по в Intel AMT SDK по нему, но так и не понимаю, что конкретно нужно делать. В SDK почему-то говорится о том, что нужно купить для сервера нужно покупать сертификат. Что-то меня интел уже вконец запутал.
Пожалуйста объясните в двух трех абзацах, как внедрить эту технологию на больших предприятиях.
AMI BIOS for Asus
Версия AMI, используемая на ноутбуках Asus. Внешне очень похожа на Phoenix — аналогичная панель закладок. Настройки USB находятся в разделе «Advanced». Перейдите туда, включите все опции и выйдите с помощью кнопки F10 .
Вопреки распространенному мнению, UEFI — не часть BIOS. Его скорее можно назвать более продвинутым, но менее популярным конкурентом. Существует большое количество различных версий, каждая со своими интерфейсами. Однако здесь управление похоже на привычную Windows, поэтому вы без труда найдете нужные опции.
Требования для инициализации AMT через интернет (или "cloud bare metal provisioning")
- Компьютер с поддержкой Intel AMT (и она не запрещена в BIOS)
- Доступ к роутеру - для возможности пробросить порты; если у вас тот случай, что вы имеете "direct internet connection" (без NAT - редкие провайдеры дают такое соединение), то вам порты пробрасывать не нужно
- И, собственно (внезапно!) - наличие интернета
Всё выше было вступление. Далее непосредственно само описание инициализации Intel AMT через интернет.
Инициализация AMT
Любая версия Intel AMT требует трёх вещей:
- Intel AMT "должна быть" (на плате, в компьютере-ноутбуке-планшете-итп), т.е. чипсет должен иметь её поддержку вообще (см. список здесь на сайте).
- Intel AMT должна быть включена (не запрещена в BIOS, перемычками и пр.)
- Intel AMT должна быть проинициализирована.
Первые два пункта достаточно очевидны, но про них нужно помнить и не путать Intel MEI и Intel AMT - первое есть на всех современных чипсетах, а второе, лишь на тех, что "vPro supported".
Что касается инициализации, то в терминологии Intel с этим тоже путаница. Обычно это подразумевает термин Provisioning, а последующая "настройка" обозначается как Configuring. Однако есть ещё и Setup и, собственно Initialization и прочие вариации на данную тему - всё это имеет неоднозначную трактовку и в разных документах (самой же Intel) подразумевает разные вещи. Потому остановимся на двух достаточно понятных "русских" :) словах - инициализация и (последующая) конфигурация (конфигурирование).
И в данной статье мы рассмотрим первое - инициализацию, то бишь перевод компьютера с поддержкой Intel AMT из состояния "не сконфигурирован" (так пишется в интеловском агенте, показывающем состояние AMT в Windows - что как раз хорошо отражает упомянутую выше путаницу) в состояние "сконфигурирован".
Способы инициализации Intel AMT
Их не мало. И это всё путает, пугает даже подготовленного админа, что уж говорить про неподготовленного юзера. Не вникая в исторические особенности (почему этих способов столько расплодилось - читайте в отдельной статье) далее будет описан универсальный способ инициализации через интернет, работающий на всех версиях Intel AMT 2+ (т.е. от Intel AMT 2.0 и выше, включая Intel AMT 9.0/9.5).
USBFile.exe
Утилита USBFile запускается в командной строке и имеет следующие параметры:
*** Intel® AMT USB file writer and viewer sample v4.0***
syntax:
To create a USB file:
USBfile -create
[-v 1|2|2.1|3|4] [-amt] [-rpsk]
[-v1file ]
[-dns ] [-fqdn ]
[-consume 0|1]
[-ztc 0|1]
[-dhcp 0|1]
[-sfwu 0|1]
[-fwu 0|1|2]
[-pm 0|1]
[-fwuq 0|1|2]
[-pp ]
[-pspo ]
[-psadd ]
[-ito ]
[-nrec ]
[-gen ]
[-xml ]
[-pid -pps ]
[-uHash 0|1|2]
[-oHash 0|1]
[-hash [sha1|sha256|sha384]]
[-redir ]
[-s4p ]
[-hostname ]
[-domname ]
[-vlan <0|1-VlanTag>]
[-passPolicyFlag <0|1|2>]
[-ipv6 ]
[-sdFqdn 0|1]
[-dDnsUpdate 0|1]
[-kvm 0|1]
[-userConsentOption 0|1|255]
[-userConsentPolicy 0|1]
[-prov 0|1]
[-conf 0|1]
[-scIden ]
[-scDesc ]
[-sano ]
[-enrPass ]
[-servType 1|2|4]
[-spIden ]
To view the valid records of a USB file:
USBfile -view
To view a summary of a USB file:
USBfile -summary
-v 1|2|2.1|3|4: the setup file version, 4 by default
-v1file : creates a version 1 setup file
-amt: this will set the manageability selection value to AMT
-rpsk: this will generate a random psk pair
-dns : sets the PKI dns suffix name (up to length 255)
-fqdn : string up to length 255
-consume 0|1: generate inconsumable record or consumable record(s),
0 (inconsumable) by default
-ztc 0|1: disable/enable PKI Configuration
-dhcp 0|1: disable/enable DHCP
-sfwu 0|1: disable/enable secure firmware update
(Supported in versions 2.1 - 3)
-fwu 0|1|2: disable/enable/enable password protected Firmware local
update (Password protected mode is supported starting from version 4)
-pm 0|1: Enterprise/SMB provisining mode, 0 (Enterprise) by default
Note: this option is deprecated in version 3(+) file format
-fwuq 0|1|2: Always|Never|Restricted Firmware Update Qualifier
(Supported in versions 2.1 - 3)
-pp : set the power packege ,GUID should be in network order
-pspo provision server port number
-psadd :ip address for provision server
ipv4 example: 123.222.222.121
ipv6 example: fe80:ffff:0012::212
Note: ipv6 address supported only in version 3(+) file format
-ito : idle time out (valid values: 1-65535)
-nrec : number of records to create
-gen : number of records with a random psk pair to create
Note: this option is deprecated, use -nrec and -rpsk
options to generate multiple records with random psk pair
-xml : configuration xml file
-pid -pps : a psk pair
-oHash 0|1: disable/enable all preinstalled certs
-uHash 0|1|2: disable/enable all user defined certs/delete all
-hash [sha1|sha256|sha384]: to
compute and add the hash of the given root certificate file according
to the given hash algorithm. Up to three certificates hashes may be
specified.
Notes: 1. The hash algorithm is optional, if no hash algorithm
is given, the tool uses as default sha1
2. The sha256 and sha384 hash algorithms supported only in
version 3(+) file format
3. In order to compute sha256 and sha384 hash algorithms the
tool uses the OpenSSL dll file: libeay32.dll
-redir :
This is an integer that is calculated as follows:
bit 0 : 1 (Enable) or 0 (Disable) - SOL feature
bit 1 : 1 (Enable) or 0 (Disable) - IDER feature
bit 2 : 1 (Enable) or 0 (Disable) - Username/password
authentication type of the SOL/IDER in the ME FW
-s4p
:e.g 10.0.0.1:255.255.255.0:10.0.0.2:10.0.0.3:10.0.0.4
Notes: This option is not valid when generating an inconsumable record,
DHCP flag must be disabled
-hostname :ASCII reprasentation of host name max length 63
Note: This option is not valid when generating an inconsumable record
-domname : max length of domain name is 255
-vlan : VlanStatus disable/enable e.g. 0-4011
Note: for a non supporting VLAN platforms,the MEBx ignores this setting
-passPolicyFlag <0|1|2>: Default/block in post/always open
-ipv6 : an XML file which holds the IPv6
configuration data
-sdFqdn 0|1: dedicated (0)/shared (1) FQDN
Note: This option is valid only if configuring the hostname as well
-dDnsUpdate 0|1: disable/enable dynamic DNS update
-kvm 0|1: disable/enable KVM
-userConsentOption 0|1|255: user consent disabled/enabled for kvm
only/enabled for all features ('255'-enabled for all features
option is supported starting from version 4)
-userConsentPolicy 0|1: user consent policy configurable remotely
-scramble : specify this flag in order to scramble the setup file
records.
-prov 0|1: stop/start configuration
Notes:
1. Sending the ME provisioning Halt/Activate value of 0, stop,
configuration will cause a global reset after all the USB key
settings have been applied.
2. To guaranty success of this command it is recommended to configure
either -dns or -fqdn, otherwise the success depends on the DHCP
state of the FW.
-conf 0|1: automated/manual configuration
Automatic configuration will provision the system through
communication with the setup and configuration servers.
Manual configuration will provision the system immediately
to the POST provision state after all other settings have
been applied.
-scIden : support channel identifier
(valid values: 1-65535)
-scDesc : friendly name used to describe
the party representedby the support channel identifier.
60 character max.
-sano : unique string identifier given to the
end user by the service provider. 32 character max
-enrPass : unique string that allows access to the
service to complete enrolment. 32 character max.
-servType 1|2|4: reactive/proactive/one time session
-spIden : set the service provider identifier
GUID should be 32 hexadecimal chars in network order without spaces
For example: -spIden 0102030405060708090a0b0c0d0e0f00
represents the GUID: 04030201-0605-0807-090a-0b0c0d0e0f00
-scramble: specify this flag in order to scramble the setup file records
Examples:
USBfile -create setup.bin admin Admin22@ -rpsk -v 1 -nrec 10
-xml setup.xml -consume 1
USBfile -create setup.bin admin Admin22@ -pid AAAA-AAAN
-pps AAAF-AAAF-AAAF-AAAF-AAAF-AAAF-AAAF-AAAF
USBfile -view setup.bin
Notes:
1. The BIOS requires a binary file with the name "setup.bin".
2. If a certificate hash is added, all default hashes will be disabled
and all existing user defined hashes will be deleted.
3. If -pid option was selected the -pps option must come with it and vice versa.
4. If -rpsk or -gen option was selected along with -pid and -pps options,
the psk pair that will be used is the one supplied using -pid and -pps.
5. If -pspo option was selected the -psadd option must come with it and vice
versa.
Из длинного списка возможностей нас на данном этапе интересует скромный набор ключиков, а если конкретно, то это следующая строчка:
- USBfile -create setup.bin admin vPro.by1 -pid 0000-00EX -pps 0000-0000-0000-0000-0000-0000-0000-0369 -v 1
-create setup.bin — главный ключик, который задаёт имя выходного файла. "Setup.bin" (большие-маленькие буквы называния - не важно, чтобы не было проблем - лучше маленькие ) - стандартное название, которое и будет по умолчанию искать на USB-флешке MEBx в попытке найти настройки для "автопровизионинга".
admin vPro.by1 - далее идут текущий MEBx пароль (обычно admin - если AMT-система не трогалась или тот, на который вы изменили, если уже заходили в MEBx) и новый пароль MEBx (который вы хотите поставить). Пароль должен быть удовлетворять "строгим правилам безопасности" (ранее рассмотренным в части про пароли AMT).
Внимание! Новый MEBx-пароль применится сразу же (даже если "автопровизионинг" не закончится), а содержимое файла setup.bin будет очищено (по соображениям безопасности) самим MEBx. Потому если вы не сохранили и не запомнили данный пароль (надеясь, что он у вас "останется на флешке") - можете пострадать.
-pid 0000-00EX -pps 0000-0000-0000-0000-0000-0000-0000-0369 — эти вполне понятные два ключика (-pid и -pps – должны присутствовать оба сразу) задают PID и PPS ключи, которые прописываются в MEBx.
-v 1 — очень важный ключик, который задаёт версию файла setup.bin. В нашем случае это 1, которая поддерживается всеми версиями AMT, начиная с первой. Другие версии setup.bin это:
Если поставить версию выше той, которую поддерживает MEBx - setup.bin будет молча проигнорирован (отдельные реализации правда могут про это ругнуться на экран, но часто это пролетает и всё равно не заметить). Потому лучше "перебдить" и использовать минимальную.
С другой стороны, если вас интересуют какие-то дополнительные параметры, то древние версии могут их не поддерживать и даже их задав в USBFile - они просто не попадут в setup.bin.
OneTouch Configuration
Итак, попробуем повторить рассмотренный в предыдущей части процесс, но с использованием USB-flash. Отформатировав флешку в FAT, а точней - сделав на флешке раздел FAT16 любого объёма до 2ГБ (т.е. хоть 50МБ - можно сделать различными утитами) - копируем туда полученный в результате работы утилиты USBfile файл setup.bin. Объём setup.bin обычно 1024 байта, однако если копировать много ключей (что также возможно - чтобы, например, делать разные для большого кол-ва систем), то объём может быть большим.
По документации на USB-флешке должен быть лишь только файл setup.bin, но на практике нет проблем, если вы после пользуетесь такой флешкой и там занято место и куча других файлов. Главное, чтобы setup.bin был в корневой директории.
Перед применением лучше открыть-просмотреть файл, в котором легко определить сделанные настройки:
Главное, что нужно запомнить - текущий MEBx-пароль admin (это значит, что в MEBx ещё не входили). Тут, забегая вперёд, нужно отметить неприятную характеристику конкретной рассматриваемой системы HP dc7700, которая при попытке использовать "изменённый пароль MEBx" - будет ругаться:
Поэтому, раз в прошлый раз мы пароль изменили, придётся его "сбросить в дефолтный". Эта процедура реализуется на разных системах по-разному, а в случае нашей HP dc7700 для этого нужно сделать Clear CMOS (только используйте для этого специальную кнопку ClearCMOS на плате - "народное" вынимание батарейки на время для сброса AMT может не помочь).
Так у нас получился случай, когда пароль "admin" и AMT-система, которую как бы ещё никто "не трогал" (в MEBx не входили и не начинали конфигурировать). Теперь вставляем флешку в любой USB-разъём (но не через USB-хаб) и включаем/перезагружаем AMT-компьютер. Если всё сделано правильно, то после отработки POST (перед загрузкой ОС) получим картинку:
При нажатии клавиши "Y" настройки из "setup.bin" попадают в MEBx.
Именно это действие - одно нажатие клавиши "Y" - и есть смысл названия подобного типа инициализации "OneTouch Configuration".
Спустя некоторое время получаем:
Такой незамысловатый способ "автоматизации" - посылкой Hello-packet после включения - был улучшен в следующих версиях. Однако об этом - в следующих частях.
Phoenix AwardBIOS
Другая популярная версия, которую часто можно встретить на современных ноутбуках. Не имеет главной страницы, как AMI, но снабжен удобными тематическими закладками вверху. Перемещаться между разделами можно с помощью стрелок «влево»-«вправо», а между пунктами — с помощью «вверх» и «вниз».
Перейдите в раздел «Advanced» с помощью стрелки «Вправо». В ней найдите категорию «USB configuration». Все пункты этого раздела необходимо перевести в положение «Enabled». В некоторых версиях категория «USB configuration» может находиться во вкладке «Peripherals» а не в «Advanced».
Для завершения работы в меню нажмите F10 и подтвердите выход.
AMI BIOS
Очень распространенный вариант, который можно встретить на многих современных компьютерах. Главное меню разделено на 2 части: список категорий и различные действия, вроде выхода или сохранения. Вы будете работать с левой частью.
Вам необходимо перейти в раздел, который называется «Integrated Peripherals». Русскоязычной версии интерфейса нет, поэтому все команды только на английском. С помощью стрелки «Вниз» выделите данный пункт и нажмите Enter .
Здесь нужно включить (Enabled) 4 опции:
- USB EHCI controller – основной контроллер. Если на материнской плате есть порты версии 3.0, этот пункт будет разделен на 2 части: «Controller» и «Controller 2.0»;
- USB Keyboard Support – поддержка клавиатур;
- USB Mouse Support – поддержка мышек;
- Legacy USB storage detect – работа с внешними хранилищами данных: флешками, дисковыми накопителями, дисками смартфонов и цифровых фотоаппаратов.
В некоторых старых версиях присутствует всего 2 пункта «USB controller» и «Legacy USB storage support».
Когда закончите с настройками, нажмите клавишу F10 , чтобы сохранить внесенные изменения и перезагрузить компьютер.
Как работает инициализация AMT через интернет
Результатом "запуска инициализации AMT" становится специальный так называемый Hello -пакет, который AMT-компьютер отсылает на " Provision Server ". Адрес "инициализационного сервера" он "высчитывает" как "provisionserver" + " Parent Domain ", т.е. в нашем случае это provisionserver.vpro.by. Данный сервер имеет специальный сертификат, предназначенный для инициализации vPro-систем, выданный авторизированным Intel для этих целей регистратором, root-хэш которого присутствует в хранилище сертификатов АМТ-компьютера.
Проверив все эти параметры (сертификаты для АМТ3+, PID/PSK -ключи для АМТ2) на валидность, AMT-компьютер "соглашается" на свою инициализацию и принимает конфигурационные данные с сервера, расположенного в интернете (в частности, это облачный сервис от Amazon). Т.к. такое соединение для роутера входящее (на 16993-й порт для инициализации и 16992 для конфигурирования) - требуется пробросить данные порты на АМТ-компьютер в вашей подсети.
При выполнении всех этих условий - АМТ-компьютер благополучно проинициализируется где-то в течении минуты (зависит от соединения). Если попытка проинициализироваться по какой-то причине не получится - Hello -пакет будет слаться с некоторой периодичностью в течении некоторого времени (варьируется, обычно это 6 часов, но у некоторых ОЕМ-вариантов от 255 часов до бесконечности). При чём это время обычно исчисляется от подачи питания (почему один из способов "запустить" - просто выключить-включить компьютер).
Что делать, если не получилось (проинициализировать AMT)?
Следите за обновлениями, продолжение следует. Также можно задавать вопросы в комментариях.
Если на вашем ПК не работают порты USB, а настройки Windows и обновление драйверов не помогают, возможно, контроллер был отключен в БИОСе. В этом случае вам потребуется зайти в меню конфигураций и включить все назад.
Существует множество различных версий BIOS со своими интерфейсами и тонкостями работы. Также на вашем компьютере может работать более современный комплекс — UEFI, который поддерживает полноценный графический интерфейс. В данной статье рассмотрены дистрибутивы, которые чаще всего устанавливаются на материнские платы.
Чтобы приступить к изменению конфигурации, нужно попасть в соответствующее меню. Его можно открыть во время включения персонального компьютера — до того, как началась загрузка Windows с жесткого диска.
Включите ПК. В случае, если он уже работает: перезагрузите. Дождитесь звукового сигнала спикера: короткий одиночный гудок свидетельствует о том, что все внутренние компоненты, необходимые для работы компьютера, обнаружены.
Теперь необходимо нажать горячую клавишу для вызова конфигурации. Это нужно сделать до смены экрана. Если вы не успели, и началась загрузка Windows — перезагружайтесь. Клавиши зависят от модели установленной материнской платы и версии прошивки BIOS. Узнать ее можно в руководстве пользователя, которое прилагается к материнке, на официальном сайте производителя или посмотреть на экране вашего ПК при его загрузке:
Если вы не знаете модель платы — ничего страшного. Просто попробуйте нажимать следующие клавиши: Tab , Delete , Esc , F1 , F2 , F8 , F10 , F11 , F12 . Одна из них наверняка подойдет.
Необязательно пробовать только 1 вариант за раз. Вы без проблем можете быстро нажать все кнопки из списка. Одна из них подойдет и запустит настройки БИОСа, а остальные будут проигнорированы.
Многие современные компьютеры загружаются так быстро, что попасть методом нажатия клавиш при включении не получится. Также это актуально для ноутбуков. Поэтому последние версии ОС Windows обзавелись новой особенность запуска. Покажем на примере ОС Windows 8.1.
- Проведите мышью сверху-вниз или снизу-вверх по правому краю экрана и в появившемся окне нажмите «Параметры».
- Кликните на надпись «Изменение параметров компьютера»
- Нажмите «Обновление и восстановление».
- Далее: «Восстановление».
- В разделе «Особые варианты загрузки» нажмите кнопку Перезагрузить сейчас .
Ваш компьютер или ноутбук перезагрузится в режиме настройки. После перезагрузки ПК вы также сможете выбрать вариант запуска с USB-накопителя или DVD-диска.
Инициализация Intel AMT через интернет
- Пробрасываем порты (достаточно лишь протокол TCP): 16992-16993
- Прописываем Parent Domain (в настройках DHCP): vpro.by
Всё. Серьёзно, в некоторых случаях, лишь сделав эти два шага (конечно, у вас должна быть возможность их сделать + знания, как это сделать) просто перезагрузив роутер (обычно требуется для активации этих шагов), уже через минуту ваш AMT-компьютер будет проинициализирован и вы сможете получить к нему доступ по адресу http://ваш_IP:16992 (это может быть как и локальный IP, так и "интернетный" вариант), пароль - vPro.by1
В большинстве других случаев нужно запустить процесс инициализации AMT. Далее варианты в порядке "простоты осуществления".
Компьютерам с поддержкой AMT 3+ (для AMT 2 не прокатит) для запуска инициализации AMT может хватить просто:
- Выключить компьютер (совсем, и розетки) и включить. В случае ноутбука - придётся вынимать на время батарею.
- Для некоторых компьютеров (обычно "брендовые" десктопы HP, Dell и т.п.) - может сработать Clear CMOS.
- Возможно ваш AMT-компьютер уже был когда-то/кем-то/как-то проинициализирован. Потому можно попробовать его "отинициализировать" (расконфигурировать). Для этого выключите поддержку AMT в BIOS и, перезагрузившись, снова зайдите в BIOS и включите AMT.
- В случае отсутствия выключения AMT в BIOS - придётся зайти MEBx и запустить процесс Unconfigure AMT ("Full") .
Для старичков Intel AMT 2 не доступна bare metal инициализация (появившаяся в АМТ 3), однако это не помешает им проинизиализироваться через интернет, лишь потребует дополнительных действий (для реализации не TLS-PKI инициализации как выше, а старенькой TLS-PSK версии):
- Заходим в MEBx и вводим PID-PPS :
PID : 0000-00EX
PPS : 0000-0000-0000-0000-0000-0000-0000-0369
Всё, нажав ввод по окончании, таким образом в них запускается процесс инициализации AMT (только через PSK , а не с помощью сертификатов, как выше). Примерно через минуту AMT-компьютер будет проинициализирован, пароль будет тот же - vPro.by1 , после рекомендуется провести аналогичные вышеописанным мероприятия (сменить/закрыть порты, поменять пароль).
update: Сделал (и проверил) специальный файлик (для АМТ2), который нужно записать на флешку, отформатированную в FAT (не путать с FAT32 - в винде так просто можно сделать лишь со старыми, т.е. до 2Гб, подробности в будущей статье) и тогда вышеприведённый набор буквоцифр заменится просто на нажатие Y при запросе на автоконфигурирование.
"One-Touch" или по-простому
"One-Touch" или по-простому "через флешку" - был и остаётся важным вариантом "полуавтоматизации" инициализации для всех версий AMT. В том числе для самой последней (на момент написания комментария - Intel AMT 9.x). Мало того, в статье упомянуто, что формат 4-й версии файла setup.bin - поддерживается лишь с AMT 7 и новей. А данная статья ориентирована на "старенькие" версии AMT и демонстрировала работу с setup.bin первой версии. Далее будут освещены все другие, но уже с использованием не "пионерского" PID/PPS, а с сертификатами.
В "двух-трёх абзацах" не получится, слишком всё завязано, слишком много тонкостей и толстостей. Не только вас - всех (даже себя) - "запутал Интел". Именно потому последовательно пишу, чтобы раз и навсегда распутать.
Статья "Первая беспроводная версия (для ноутбуков) - AMT 2.5 (на примере HP 8510p)" из серии "Учебник по Intel AMT", часть четвёртая.
- Часть первая: "Источники информации по Intel AMT".
- Часть вторая: "Основные пароли AMT".
- Часть третья: "PID/PPS инициализация AMT".
- Часть четвёртая: "Автоматизация процесса инициализации AMT - OneTouch Configuration".
Начав с версий AMT 2.0/2.1/2.2, чисто “десктопных”, перейдём к разбору AMT 2.5/2.6 - “чисто ноутбучных”. Напомню, что с поправкой на мобильность и наличие WiFi, аналогия по функционалу следующая AMT2.1=AMT 2.5, AMT2.2=AMT 2.6. Поэтому рассматривать всё смысла особого нет, остановлюсь лишь на важных отличиях.
Чтобы не теоретизировать, опять же, рассмотрим на конкретном примере, в данном случае это будет HP 8510p с Intel AMT 2.5 на борту.
BIOS версии F15 (2008г.), а не самый последний (2010-й), чтобы получить получить картинки именно для AMT2.5-систем, т.к. не все из них получили апгрейд до AMT 2.6.
При заходе в уже известную менюшку BIOS относительно настроек AMT:
Обнаружим следующие опции:
Это важные настройки, т.к. по умолчанию « Firmware Verbosity » и, соответственно, « AMT Setup Prompt (Ctrl-P) » выключены и попасть в MEBx не получится.
Кроме этого имеем « USB Key Provisioning Support » - поддержка автоконфигурирования (см. предыдущую статью по автоматизации инициализации AMT).
В ранних версиях AMT (а также в некоторых и более современных), к сожалению, всё подобное обычно выключено по дефолту, что не очень ассоциируется с “удобностью” и “автоматизацией” процесса “включения-настройки” AMT. Именно потому важно знать про такое, чтобы не потратить кучу времени на борьбу с очередной vPro системой, где важный функционал изначально выключен.
Для сброса AMT в “заводские настройки” (получения пароля “admin”) присутствуюет пунктик “ Unconfigure AMT on next boot ”, после активации которого при перезагрузке получим:
Нажав « Y » через некоторое время AMT перейдёт в “девственное” состояние.
Итак, “включив” CTRL-P в опциях, получим при загрузке:
И уже знакомый MEBx, версии 2.5.18 в данном случае:
Стандартно сменив начальный пароль “admin” попадём в почти полностью аналогичные AMT 2.1 настройки. Важные отличия есть лишь подразделе управления питанием “ Intel ME Configuration - Intel ME Power Control ”:
При заходе в неё обнаружим настройки управления работой AMT в различных состояниях компьютера. Изначально включена работа AMT лишь в состоянии S0:
Это значит, что функционал AMT будет доступен лишь когда компьютер включен (S0). Сделано это, понятно, с целью энергосбережения, однако вряд ли это выглядит удобным (включить удалённо его уже не получится, т.к. выключен - это не S0), потому жмём и изменяем на “ S0, S3/AC, S4-S5/AC ”:
Теперь, когда компьютер присоединён к блоку питания (AC) - мы сможем им удалённо управлять точно также, как и для desktop-версии. Однако по-прежнему, при питании от аккумулятора (не от сети), он перестаёт быть доступным через AMT.
Кстати, обращу внимание на то, что при заходе в настройки Intel AMT чётко успевают отобразиться этапы получения данных AMT. Сначала показывается момент соединения MEBx и AMT модуля в составе ME:
После чего, собственно, получаются сами данные:
Это как раз подчёркивает то, что MEBx и непосредственно модуль AMT в составе ME - “общаются” друг с другом, а не представляют собой “одно целое”. А тот факт, что это видно, указывает на другое - частота работы процессора ME в мобильной версии низкая (на время своего появления - для лучшей энергоэффективности), потому и видны все подобные “промежуточные” процессы.
Чтобы визуально взглянуть на это в целом, рассмотрим схему данного ноутбука с пометками частей, касающихся ME/AMT:
Как можно заметить, взаимодействие интерфейсов идёт через ME-подсистему, расположенную в южном мосте, который соединяется с северным (где расположен ME-процессор) посредством специальной шины Controller Link:
Как нетрудно догадаться из названия, она предназначена для соединения контроллеров - ME и ME-subsystem. Важно отметить, что для этого используется линия CLK0/DATA0, а вторая линия CLK1/DATA1 используется для соединения с беспроводным интерфейсом (который присоединяется через стандартный разъём - это он указан на схеме):
Для того, чтобы AMT работала при беспроводном подключении, требуется именно “vPro-supported WLAN-adapter” (иначе функционал через беспроводную связь он будет не доступен). В “переводе на железо” это обозначает, что в беспроводной карточке тоже должна быть встроена ME-подсистема (для которой и предназначены CLK1/DATA1), соответственно, понятно, это может быть лишь Intel-адаптер.
Итого, если подвести итоги вышеприведённого схемоблудия, ME-процессор соединяется с WiFi через “два контроллера” - ME-subsystem в южном мосте и через ещё одну подсистему в беспроводном адаптере:
ME ⇔ ME-sub SB ⇔ ME-sub WLAN ⇔ WiFi
В переводе на понятный, то для поддержки AMT по WiFi, конструкторы в Intel не сильно мудрствовали и “впендюрили костылик”, не меняю общую схему работы. Т.е. схема осталась “Ethernent-центричной” - вся работа идёт через ME-sub SB (южного моста). С учётом того, что ME-sub SB по сути обозначает поддержку Ethernet-адаптера, то конечная схема будет выглядеть следующим образом:
ME ⇔ ME-sub Ethernet ⇔ ME-sub WLAN ⇔ WiFi
Что как раз и отражает то, почему я назвал такой вариант “костыликом”. В частности, это подтверждается ещё и тем, что хоть через WLAN и работает AMT, однако процесс инициализации AMT проходит лишь через проводной интерфейс, т.е. для инициалиазации первых беспроводных версий AMT - всё равно требуется проводное соединение (и никак обойти такое нельзя). Исправили подобную “болезнь” лишь в версии AMT4.2, но это уже другая история.
п.с. Забегая далеко вперёд - к AMT 9.5 - подумайте, а что случится, если система вообще не будет иметь составляющей «ME-sub Ethernet»? ;)
На дворе 2014 год, а для связи микроконтроллеров с ПК самым популярным средством является обычный последовательный порт. С ним легко начать работать, он до примитивности прост в понимании — просто поток байт.
Однако все современные стандарты исключили COM порт из состава ПК и приходится использовать USB-UART переходники, чтобы получить доступ к своему проекту на МК. Не всегда он есть под рукой. Не всегда такой переходник работает стабильно из-за проблем с драйверами. Есть и другие недостатки.
Но каждый раз, когда заходит разговор о том, применять USB или последовательный порт, находится множество поклонников логической простоты UART. И у них есть на то основания. Однако, хорошо ведь иметь альтернативу?
Меня давно просили рассказать как организовать пакетный обмен данными между ПК и МК на примере STM32F103. Я дам готовый рабочий проект и расскажу как его адаптировать для своих нужд. А уж вы сами решите — нужно оно вам или нет.
Выбор профиля HID
USB-HID — довольно обширный класс устройств, поэтому прежде всего придется выбрать какое именно устройство мы будем создавать.
Мы можем создать эмуляцию клавиатуры, мыши, джойстика и других устройств ввода, а можем создать свое устройство, чтобы не зависеть от довольно жестких рамок стандарта и свободно обмениваться данными с ПК.
Я расскажу как cделать Custom HID device. Это дает максимальную свободу. Чтобы не затягивать статью, постараюсь рассказать максимально кратко — описаний стандарта в сети и без меня много, но лично мне они слабо помогли, когда понадобилось решить конкретную задачу.
Структура проекта
- Папка USB-FS с библиотекой «STM32F10x, STM32L1xx and STM32F3xx USB-FS-Device Driver» версии 4.0.0.
- В папках Inc и Src файлы:
platform_config.h — здесь собраны определения, касающиеся конкретной платы и семейства МК
stm32_it.h, stm32_it.c — здесь определены обработчики прерываний
usb_conf.h, usb_endp.c — здесь определяются конечные точки (Endpoint), размеры и адреса их буферов, функции-обработчики
usb_desc.h, usb_desc.c — здесь собрана информаци о самом устройстве — как оно будет определяться при подключении к ПК и определены размеры и формат пакетов данных
hw_config.c — здесь собрана вся работа с отправкой данных на ПК
hw_config.h, usb_istr.h, usb_prop.h, usb_pwr.h
usb_istr.c, usb_prop.c, usb_pwr.c — нужны для работы USB-FS библиотеки, но лезть в них необязательно
Инициализация USB
Для корректной работы USB модуля важна частота работы МК. Далеко не все частоты позволяют правильно задать тактирование USB. В нашем случае используется кварцевый генератор на 8МГц и МК работает на частоте 72МГц, а USB модуль на 48МГц.
В main.c достаточно включить всего несколько строк кода
В функции Set_System() производится настройка пина подтяжки линии D+ к питанию для программного подключения/отключения устройства от ПК (в нашей плате не используется), настраивается прерывание и инициализируются светодиоды и кнопки для демонстрационного проекта.
В USB_Interrupts_Config() настраиваются прерывания в зависимости от семейства МК (поддерживаются F10x, F37x, L1x).
Функция USB_Init() запускает работу USB модуля. Если временно нужно отключить для отладки работу с USB, просто закомментируйте эту строку.
Далее в бесконечном цикле проверяется, удалось ли сконфигурировать USB модуль при подключении к ПК. Если все сработало верно и устройство успешно подключилось, ПК включен и не находится в режиме энергосбережения, то состояние будет CONFIGURED.
Далее проверяется, была ли закончена предыдущая передача данных в ПК и если да, то готовится к отправке новый пакет в функции RHIDCheckState()
Размер пакета и частота передачи
USB-HID девайс не может сам инициировать передачу, т.к. координацией шины занимается host устройство — ПК. Поэтому при подготовке USB дескриптора нашего устройства, мы пишем, как часто нужно опрашивать наше устройство. По спецификации максимальная частота опроса — 1кГц и максимальный размер передаваемого за раз пакета — 64 байта. Если этого недостаточно — придется использовать другие режимы работы — вроде USB bulk, но там уже без драйверов не обойтись.
За настройку взаимодействия с ПК отвечают 3 дескриптора:
В комментариях все довольно прозрачно. Обратите внимание на DEVICE_VER_L, DEVICE_VER_H — это константы из usb_desc.h, которые вы можете изменить для идентификации версии своего устройства.
Здесь стоит обратить внимание на константу wMaxPacketSize — она определяет максимальный размер пакета, которым мы будем обмениваться с ПК. Проект так настроен, чтобы при ее изменении менялись и размеры буферов. Но не забывайте, что больше 0x40 по стандарту указывать не стоит. С этой константой будьте осторожны — если передаваемый пакет будет отличаться по размеру — будут проблемы!
Следующая за ним константа с комментарием bInterval — это период опроса устройства в миллисекундах. Для нашего устройства задано 32мс.
Это самый важный дескриптор — он описывает протокол обмена и функционал устройства. Его формирование — не самая простая задача. Если допустить ошибку при формировании дескриптора — устройство перестанет работать. Формат дескриптора очень жесткий. Есть даже специальная утилита HID Descriptor tool. А в корне проекта лежит файл «RHID.hid» с описанным выше дескриптором для редактирования в этой утилите. Но если вы не понимаете, что делаете, лучше не лезть.
Для простоты я сделал две константы:
RPT3_COUNT — размер OUTPUT буфера в байтах для передачи пакета в МК (в примере — 1 байт)
RPT4_COUNT — размер INPUT буфера в байтах для передачи пакета в ПК (в примере — 4 байта)
Размер любого из этих буферов не должен превышать wMaxPacketSize. Меньше — можно.
Кстати, превратить Custom HID в другой HID девайс, например, клавиатуру или джойстик можно фактически только переписав ReportDescriptor и изменив класс и подкласс устройства в дескрипторе конфигурации.
Что такое Report
- REPORT_ID = 1 и 2 — команда МК включить/выключить LED1/LED2. Содержит поле размером 1 бит с желаемым состоянием светодиода и поддерживает отправку как методом SET_REPORT так и методом SET_FEATURE (об этом чуть позже).
- REPORT_ID = 3 — передает один байт в МК. Просто, чтобы показать, как передать данные МК. Мы будем передавать положение ползунка.
- REPORT_ID = 4 — это репорт для передачи данных ПК. Возвращает информацию о текущем состоянии светодиодов, кнопок (если они есть) и возвращает переданный в репорте с байт, чтобы показать, что данные приняты.
Цикл обмена
Массив uint8_t Buffer[RPT4_COUNT+1] определен как размер полезных данных входящего (рассматривается всегда с точки зрения хоста) пакета + байт ID. Это важно — если размер буфера будет отличаться — будут проблемы. Поэтому для изменения размеров буфера редактируйте значение константы в usb_desc.h.
В функции мы собираем данные в пакет, устанавливаем флаг PrevXferComplete = 0, говорящий о том, что данные отправляются и вызываем функциии библиотеки USB_SIL_Write и SetEPTxValid для отправки данных хосту.
Все, на этом передача данных хосту закончена.
С приемом данных немного сложнее — есть два способа послать данные девайсу — один из них заключается в использовании описанных в дескрипторе репорта возможностей устройства (Features), с соответствующими параметрами посредством функции SET_FEAUTRE. Это некоторая абстракция, для красивого управления устройством с кучей функций, чтобы можно было вызывать осмысленные функции, а не просто слать поток байт.
Второй способ — это работа с устройством как с файлом — просто записываем в него пакет как в файл. Этот метод называется SET_REPORT. На деле работает чуть-чуть медленнее.
Наше устройство поддерживает оба метода, о чем мы и сказали хосту в дескрипторе репортов.
Обработка SET_FEATURE
Данные, отправленные методом SET_FEAUTRE обрабатываются в usb_prop.c
Здесь мы проверяем первый байт в репорте и в соответствии с ним обрабатываем остаток пакета — управляем светодиодами или просто берем байт, отправленный нам хостом и кладем в пакет для последующей отправки обратно в функции RHIDCheckState.
Под Report_Buf зарезервировано wMaxPacketSize байт, чтобы влез любой пакет, который нам отправит хост.
Данные, отправленные методом SET_REPORT обрабатываются в usb_endp.c
Здесь почти то же самое, только нужно самостоятельно забрать данные вызовом USB_SIL_Read(EP1_OUT, Receive_Buffer) и в конце сообщить, что мы закончили вызовом SetEPRxStatus(ENDP1, EP_RX_VALID);
Настраивать устройство, передавать и принимать данные в пакетах нужного размера с нужной нам периодичностью мы научились.
Собираем проект и прошиваем в устройство.
Работать, это будет примерно так:
Также я написал маленькую демо-софтинку, которая автоматически определяет подключение к компу и отключение нашего девайса по его VID и PID, отображает статус — подключено/отключено индикатором рядом с чекбоксом Auto Connect
Радиокнока Send using позволяет выбрать метод отправки данных девайсу.
Report: отображает полученный от девайса пакет побайтно, начиная с ReportID.
Щелкая по светодиодам ниже — управляем светодиодами девайса. Их состояние отображает текущее состояние девайса. Считывается из репорта от девайса.
Перемещая ползунок, мы отправляем Report с и значением, соответствующим позиции ползунка. Девайс вернет это значение в 4 байте репорта.
В выпадающем комбобоксе отображаются HID девайсы, найденные в системе и если найден наш девайс, то отображается его название.
Если остались вопросы — пишите в комментариях. Постараюсь ответить. Я постарался не утопить суть в куче мелочей, чтобы сложилось общее понимание. Остальное уже можно понять, изучая проект. Но если вам нужно быстро сделать свое устройство, а лезть в дебри некогда — все, что вам нужно, я описал.
P.S. По умолчанию при уходе хоста в режим энергосбережения, девайс засыпает вместе с ним, а если подключить девайс к спящему ПК, то он тоже уйдет в слип. Поэтому если мы просто воткнем в девайс блок питания или запитаем от батареи, то работать он не будет, считая, что подключен к спящему ПК (пакетов конфигурации то от БП не придет точно). Я изменил библиотеку так, чтобы устройство работало и при подключении просто БП. Поэтому девайс будет работать как при подключениии к ПК так и автономно. (У меня ушло немало времени, чтобы разобраться с этим.)
Автоматизация процесса инициализации AMT
Кто внимательно читал предыдущую часть, сразу мог для себя отметить много неудобных вещей для админа, который потенциально может обслуживать тысячи компьютеров - это и первый заход в MEBx, и задание пароля, который после должен попасть на сервер, и задание PID/PPS, тоже нужных серверу для инициализации.
Понятно, что это не дюже удобно, даже для самих разработчиков. Потому ещё и в первой версии AMT для облегчения жизни админа AMT привлекли вполне очевидный вариант с использованием USB-флешки, на которую удобно закинуть из ОС нужные настройки и которые после бы "подхватил" MEBx и ME/AMT.
Реализация
Так появилась утилита USBFile, которая позволяет сформировать файл "setup.bin", который будучи закинутым в корень USB-накопителя, отформатированного в FAT16 - автоматически обнаруживается MEBx при загрузке непроинициализированного AMT-компьютера и позволяет автоматически запустить процесс инициализации/конфигурации плюс задать некоторые важные настройки.
Подробней остановимся на каждом моменте вышесказанного, т.к. каждая часть имеет особенности, тонкости, проблемы и подводные камни.
FAT (FAT16)
Первое и самое важное: файловая система USB-флешки, для того, чтобы она могла использоваться для "автопровизионинга" - должна быть отформатирована только в FAT. При чём именно "старая досовская" FAT16, а не "новая виндовая" FAT32. Почему? Всё просто: FAT16 - "открытая" (свободная к использованию), а FAT32 - "закрытая" (проприетарная - микрософтовская). Плюс разработчики в 2004-м году особо не учитывали тот факт, что когда-то найти USB-флешку объёмом меньше 8GB, будет проблематично. Потому "там внутри" (MEBx) любой другой формат не будет идентифицирован и потому даже правильно сформированный файл настроек "setup.bin" - будет проигнорирован, т.к. просто не прочитается.
Как же быть, если нет такой маленькой флешки? Ничего страшного - просто форматируем в FAT ("просто" - не FAT32), что приведёт к сокращению объёма (до 2GB).
Несмотря на то, что при FAT-форматировании с 64КБ-сектором можно получить и 4ГБ, такой вариант не подойдёт, т.к. 64КБ-сектор не является стандартным и такую USB-флешку MEBx не распознает для автоконфигурирования. Потому лучше принудительно выбрать 32КБ в пункте "Размер кластера".
Навигация в меню
Практически все версии БИОС лишены графического интерфейса. Это значит, что вам придется работать только с помощью клавиатуры, как, например, в консоли Windows. Навигация осуществляется с помощью стрелок «вверх-вниз» и «вправо»-«влево». Чтобы открыть какой-либо раздел, используйте клавишу Enter , чтобы вернуться назад – «Escape». Небольшая памятка по используемым клавишам всегда показывается на экране.
Комплекс микропрограмм UEFI устанавливается на самых дорогих и мощных материнских платах. Он поддерживает большее количество драйверов и умеет работать с мышью. Его интерфейс будет привычен пользователям Windows и других современных операционных систем.
Каждая версия обладает собственным интерфейсом и наборами опций. Даже названия одних и тех же параметров могут различаться. Далее в статье описано несколько популярных релизов БИОС.
Комментарии
Читайте также: