Warning. machine is not in committed state

Да, именно с таким сообщением при старте мне достался ноутбук HP.
Впринципе, ничего страшного, даже с этим сообщением ноутбук работал, но я перфикционист и решил добить это дело до конца и избавить себя от этого страшного сообщения при старте ноутбука.
Первым делом полез в Google и как мне показалось вот оно решение — NbDmiFit. Нужно всего ничего, запуститься и проверить все серийные номера, парт номера и указать feature byte. И как Вы думаете? Нет. Эта штука так и незаработала у меня.
Чтож, дело за малым. Нужно шить BIOS .
Перед тем как начинать что-то вытворять необходимо получить полный дамп BIOS. Штатными средствами увы, этого не сделать, но можно прикупить программатор для этога дела. Самы распространненый и недорогой это CH341A, его стоимость около 2$ в китайском интернет магазине. Заказ сдела и получен, приступаем.
Разбираю ноутбук, а тут сюрприз чип то WSON

Но вокруг есть контакты для soic8, было решено подпаиваться именно к этим контактам для чтения BIOS. В качетве проводов для подпайки пытался использовать провода для ардуино, в итоге дамп был усешно слит, но вот с записью не получалось. Скорее всего имели место наводки от элементов на системной плате.
Делать нечего, следующим шагом было приобретение паяльного фена. На начало текущего года c доставкой из России было до 2000 рублей. Я доволен покупкой.

После чего выпаяв чип BIOS из системной платы и впаяв его в переходник — началась эпопея с заливкой модифицированной прошивки в этот чип. Почему-то я получал ошибку что мой модифицированный файл в итоге не совпадал с тем что в итоге заливалось на Flash BIOS. В итоге удалось это победить неоднократной перепайкой флешки в переходник.
В итоге когда зашивка была успешной — чип благополучно был запаян на место и ноут у меня стартовал уже без этой гадкой надписи Warning. machine is not in committed state.
HP Laptop/Desktop motherboard programing (after replacement)
If you recently replaced a HP motherboard, whilst the new motherboard worked correctly, every time the machine was started an error would appear during POST, and it could not be removed by clearing the CMOS or updating the BIOS. The error stated:
System Board OOA Product Information Not Valid
Product Name
Configuration
Serial number
Product Number
For help go to HP.com/go/techcenter/startup
To resolve the issue, do the folowing:
PART 1: Create a bootable USB memory stick.
1.Download Rufus 2.3 from http://rufus.akeo.ie/.
2.Insert a USB memory stick (make sure it does not contain required data as it will be cleared) and run Rufus.
3.Make sure the correct memory stick is selected under the Device heading
4.Make sure Quick Format and Create a bootable disk using: are ticked and select MS-DOS from the drop down menu to the right.
5.Click on Start, acknowledge the warning and click on OK.
6.Close Rufus by clicking the cross in the top right corner of the window.

PART 2: Download and extract the utility for reprogramming the system information in HP laptops.
2.Extract the file using 7zip. If this software is not yet installed it can be downloaded from http://www.7-zip.org/. To extract the file, right click on NbDmiFit_207.7z and then click on Extract to \NbDmiFit_207
3.Double click on the NbDmiFit_207 folder and if necessary double click on it again. A list of files and folders should appear.
PART 3: Copy the files to the memory stick
1.Use the CTRL + A key combination to highlight all the files in the NbDmiFit-2.07 folder.
2.Right click on any of the files, point to Send To and click on the icon for the memory stick (in my case this was drive G).
3.Remove the memory stick and shut down the HP laptop if it is currently running.
PART 4: Update the information on the laptop and clear the error.
1.Remove the battery from the laptop and record all the information to be found. This includes all product names, numbers and other codes. These will be required when updating the information using the utility on the memory stick.
2.Reinsert the battery and insert the memory stick into the laptop before switching it on.
3.A black DOS screen should appear. If Windows starts the load as normal, the boot order needs to be changed to allow the laptop to start from the memory stick. At startup , press F9, and select USB device as boot
4.Once at the DOS prompt, type in nbdmifit.bat and press enter.
5.Fill in all the information as prompted.
Basic Menu
Serial Number = Obviosly your S/N on the back of your laptop
Notebook Model= Mine was Compaq Presario Cq61 NoteBook PC…….Don’t think this really matters
Guid Number= random
UUID Number= Select 1 to generate UUID
SKU Number= It’s the Product Number on the bottom Mine was WA985UA#ABA
CTO Localization Code = ABA
MAC Address = Again Random….you can judge or use and get past hitting Enter everytime!
PCID = Ok under the battery cover there is a Sticker….it might also be on the Motherboard.
System Board CT # = it’s a sticker on the motherboard if you want to fill it in.
After saving and rebooting, the error should now be cleared.
Extra notes:
If you are programing a 2012 or later model, you should use wndmifit utility (from the flash drive that you created)
If you are getting MDM (manufacture programing mode) locked, the do the folowing:
1. Shut down notebook
2. Press WIN+UP+DOWN and the power button, HOLDING IT FOR at least 2 seconds
3. When the laptop starts, you should see a message with red color , that you are in programin g mode.
4. Use wndmifit utility from your operating system (Windows) to program the motherboard
Feature byte hp что это

Для упрощения процесса поиска и устранения неисправностей на каждом компьютере имеются
номер продукта, серийный номер и идентификационный номер.
Каждой рабочей станции присваивается уникальный серийный номер и номер продукта.
Держите эти номера в поле зрения при обращении в службу технической поддержки.
Сертификат подлинности (COA) используется только в системах с предустановленной ОС
Windows 7.
Наклейка подлинного ПО Microsoft (GML) используется только в системах с
предустановленной ОС Windows 8.
На наклейке с кодом обслуживания содержатся строки Build ID и Feature Byte, которые
необходимы для замены системной платы.
Местоположение наклейки с кодом обслуживания «все в одном» показано на рис. 8-1
(выдвижная карта).
Местоположение наклейки с кодом обслуживания «все в одном»
Получение сведений о гарантийном обслуживании
Информацию о базовой гарантии можно найти на веб-узле
Информация о сервисах Care Pack находится на веб-узле
Для расширения стандартной гарантии на продукт посетите веб-узел
. Службы расширения стандартной гарантии HP Care Pack Services предлагают
обновленные уровни обслуживания для расширения стандартной гарантии на продукт.
Глава 8 Диагностика, поиск и устранение мелких неисправностей
Как известно, использование виртуальных машин, работа которых строится на программной интерпретации кода, позволяет создавать универсальные приложения, выполняемые на различных аппаратных платформах без рекомпиляции. Технология EFI Byte Code является типичным примером успешного применения данного подхода. Но при всех его преимуществах есть очевидный недостаток – программно реализованный процессор существенно медленнее аппаратного. В предлагаемой статье рассматривается метод, позволяющий нивелировать падение производительности EBC-программ на примере операций заполнения блока памяти константой и копирования содержимого блока памяти. Причем, об использовании «вставок» нативного кода центрального процессора речь не идет, поскольку это дискредитирует саму идею кроссплатформенности.
Постановка задачи
Итак, представим, что нашему приложению необходимо заполнять заданной константой, заданные области памяти, а также выполнять копирование блоков. Причем массивы достаточно большого размера и производительность данной операции критична для производительности приложения в целом. Использование EBC-инструкций для обработки блоков приведет к потере производительности, а «вставки» нативного кода означают потерю кроссплатформенности. Как быть?
Решение существует
Разработчики спецификации UEFI предусмотрели изящное решение для проблем такого типа. В наборе сервисных функций EFI Boot Services предусмотрены процедуры для заполнения блока памяти константой SetMem() и копирования блока памяти CopyMem(). Напомним, сервисные процедуры UEFI API делятся на EFI Boot Services и EFI Runtime Services. Первые доступны только на фазе загрузки ОС, вторые – в течение всего времени работы ОС.

Рис 1. Описание параметров функции SetMem() в документе UEFI Specification version 2.4 Errata A.
Buffer – базовый адрес блока;
Size – размер блока;
Value – данные для заполнения блока.
Функция заполняет байтовой константой Value блок памяти, адрес которого равен значению Buffer, размер в байтах равен значению Size.

Рис 2. Описание параметров функции CopyMem() в документе UEFI Specification version 2.4 Errata A
Destination – базовый адрес блока-получателя;
Source – базовый адрес блока-источника;
Length – длина для операции пересылки, в байтах.
Функция копирует блок-источник размером Length, расположенный по адресу Source, в блок-получатель, расположенный по адресу Destination.
Пример заполнения блока константой
На Рис.3 приведен листинг EBC-программы, заполняющей константой 11h блок, размером 32 байта. Рассмотрим ее выполнение. В регистр R7 записывается базовый адрес блока, R6 – длина блока, R5 – данные для записи. После этого создается стековый фрейм, используемый для передачи параметров вызываемой подпрограмме. Затем, из таблицы EFI System Table читается адрес дочерней таблицы EFI Boot Services Table, в которой, в свою очередь под номером 42 находится указатель для вызова функции SetMem(). Для шлюзования между EBC-программой и вызываемой процедурой UEFI firmware используется инструкция CALL32EXA. После того, как подпрограмма отработала, стековый фрейм ликвидируется.
В этом и следующем примерах, _Primary_Memory_Base и _EFI_Table это смещения, используемые для адресации переменных, хранящих соответственно базовый адрес блока памяти, используемого программой и базовый адрес корневой системной таблицы EFI System Table, передаваемый приложению при старте.
Вспомним одну особенность построения системных таблиц UEFI, существенную для обеспечения кроссплатформенности. 32-битные реализации UEFI используют указатели размером 4 байта, 64 битные – размером 8 байт. Поле заголовка таблицы всегда имеет размер 24 байта. Поэтому, инструкции, адресующие системные таблицы UEFI оперируют двумя слагаемыми при вычислении адреса: номер указателя (entry) и размер заголовка (header size). Это позволяет виртуальной машине EBC корректно вычислить адрес требуемого элемента, независимо от нативной разрядности процессора, определяющей размер элементов.

Рис 3. Пример процедуры заполнения блока константой с использованием функции SetMem(). Используются инструкции ассемблера EBC

Рис 4. Результат работы процедуры заполнения блока константой с использованием функции SetMem(). Для просмотра используется Intel EBC Debugger. В этом примере базовый адрес визуализируемого блока 6C40000h, длина 80h=128 байт. Константой 11h заполнен блок размером 32 байта
Пример копирования блока
На Рис.5 приведен листинг EBC-программы, выполняющей копирование блока размером 32 байта. Рассмотрим ее выполнение. В регистр R7 записывается базовый адрес блока-источника, R6 – базовый адрес блока-получателя, R5 – длина блоков. После этого создается стековый фрейм, используемый для передачи параметров вызываемой подпрограмме. Затем, из таблицы EFI System Table читается адрес дочерней таблицы EFI Boot Services Table, в которой, в свою очередь под номером 41 находится указатель для вызова функции CopyMem(). Для шлюзования между EBC-программой и вызываемой процедурой UEFI firmware используется инструкция CALL32EXA. После того, как подпрограмма отработала, стековый фрейм ликвидируется.

Рис 5. Пример процедуры копирования блока с использованием функции CopyMem(). Используются инструкции ассемблера EBC

Рис 6. Результат работы процедуры копирования блока с использованием функции CopyMem(). Для просмотра используется Intel EBC Debugger. В этом примере базовый адрес визуализируемого блока 6C40000h, длина 80h=128 байт. Блок-источник, расположенный по адресам 6C40000h-6C4001Fh, скопирован в блок-получатель по адресам 6C40030h-6C4004Fh
| Нажмите «Scan» кнопка | |
| Нажмите ‘Исправь все‘ и вы сделали! | |
| These utilities are the proprietary information of the Hewlett-Packard Company (HP) and its suppliers. Use of these utilities are subject to HP’s standard confidential disclosure agreement and should be treated as “HP Confidential’. |
——-
— Пал Андреич, Вы шпион?
— Видишь ли, Юра.
Сообщение оказалось полезным? Поблагодарите автора, нажав ссылку Полезное сообщение чуть ниже.