Create and add an OEM ACPI SLIC table module to a congatec BIOS (AN21)
| Affected Products | All congatec CPU modules and SBCs |
|---|
Preface
This Application Note provides information and an example about how to create and add an OEM ACPI SLIC table (OA2.1) module or an OEM OA 3.0 ACPI MSDM table module into the BIOS of a congatec CPU module.
Terminology
| Term | Description |
|---|---|
| ACPI | Advanced Configuration and Power Interface |
| SLIC | Software Licensing |
| OA | OEM Activation |
| COA | Certificate of Authenticity |
| WPA | Windows Product Activation |
| SLP | System-Locked Pre-installation |
| DPK | Digital Product Key |
| SDK | Software Development Kit |
| MSDM | Microsoft Data Management |
Introduction
OEM Activation technology allows system integrators to activate licensed copies of a Windows Operating System (OS). Therefore, end users of the embedded system do not have to activate the OS.
When OEM Activation 2.1 or OEM Activation 3.0 is properly installed and set up, activating the Windows OS (Windows Product Activation) is no longer necessary.
- OA3.0 is supported by Windows 8 and Windows 10.
- OA2.1 is supported by Windows Vista, Windows 7 and Windows Server 2008.
- OA1.0, also known as SLP, is available for Windows XP and Windows Server 2003.
This application note does not explain what OA2.1 and OA3.0 is and how they work. OEMs using this technology have access to Microsoft white papers covering this in detail.
This application note provides information about how to implement OEM Activation 2.1 and 3.0 on congatec embedded PC modules and SBCs using the CGUTIL utility and gives a step by step example of such a BIOS binary modification.
Note:
The congatec CGUIL utility can also be used by OEMs to add their SLP string for the Windows XP activation to the congatec embedded BIOS. The process is not described in this AN, contact congatec support for further information about integrating a SLP string to the BIOS.
Create an ACPI_SLIC table
The ACPI_SLIC table contains the key that is proprietary to and exclusively for the Windows OEM Activation 2.1 solution. The table must be added to the systems BIOS as a standard ACPI System Description Table. congatec has included a special BIOS feature into its embedded BIOS that allows customers to add this table by themselves using the congatec CGUTIL BIOS configuration utility.
Layout of the ACPI_SLIC table
| Field | Byte Length | Byte Offset | Description |
| Signature | 4 | 0 | "SLIC" |
| Length | 4 | 4 | Length of the table in bytes |
| Revision | 1 | 8 | 1 |
| Checksum | 1 | 9 | Checksum of the SLIC table, sum must be zero |
| OEMID | 6 | 10 | OEM supplied string that identifies the OEM |
| OEM Table ID | 8 | 16 | OEM supplied string to identify the table data |
| OEM Revision ID | 4 | 24 | OEM supplied revision number |
| Creator ID | 4 | 28 | Vendor ID of the utility that created the table |
| Creator Revision | 4 | 32 | Revision of the utility that created the table |
| SLIC public key structure | 156 | 36 | Public key binary data file (OA20PubKey.bin) that is created by OATool.exe |
| SLIC Windows marker structure | 182 | 192 | Windows marker binary data file (OA20Marker.bin) that is created by OATool.exe |
The first 36 bytes (colored) are the standard header of an ACPI system description table. All this information is automatically added by the congatec BIOS during APCI table initialization during boot-up so this part will not be further discussed here.
The two following structures are provided to the OEM by Microsoft or created by the OEM with a Microsoft tool named OATool.exe
These two binaries are very important when creating the ACPI_SLIC table for OA2.1
OEM Public Key (OA20PubKey.bin)
The 1024 bit RSA key (file name: OA20Pubkey.bin) is used to verify the signature of the Windows marker.
Windows Marker (OA20Marker.bin)
The Windows marker is a Microsoft proprietary digital certificate that contains OEM identifying information signed with an OEM's private key.
OEM SLIC Table
Use a hex editor of your choice to copy the two data structures into one binary file. The OEM public key binary (OA20PubKey.bin) must be the first one.
In DOS you can easily perform a binary copy of the two files using this command:
copy /b OA20PubKey.bin + OA20Marker.bin OEMSLICbin
OEMSLIC.bin is the input file for CGUTIL when adding an OEM SLIC table. See below.
Add an OEM SLIC table to BIOS Binary file
Creating an "OEM SLIC table module” and inserting it into a BIOS binary file can be done using the congatec System Utility.
The following tutorial describes the procedure step-by-step based on a Windows 10 Enterprise host system. All changes will be done to the BIOS binary file.
Following these steps will create a modified BIOS binary file that can be used to update congatec CPU modules and SBCs (in this example: OEM1R001.bin). The original BIOS binary file will not be modified by the congatec System Utility.
For more information about the BIOS update process, refer to the application note BIOS Update (AN01), which can be found at www.congatec.com
- Open the "Congatec System Utility"
- Select "BIOS FIle" as operating target
- Push the button "Select Input BIOS File"
- Browse for your designated BIOS BIN file
- Click "Select original/Create new BIOS file"
- Enter a file name (in this example
OEM1R001.bin) - Changes will be applied only to this file. The original BIOS binary file will remain unchanged.
- Click on the "BIOS Module Modification" button.
- Click on the "Create Module" button.
- Browse for your binary OEM SLIC table file created previously the section OEM SLIC Table (in this example
oemslic.bin).
- Choose "OEM SLIC Table” from the "Module Type” drop down list
- Leave the Module ID and Module Revision field unchanged.
- Once this is completed, click on "Create Module” button.
- Chose your designated module file name (in this example
oemslic.mod).
- Click on "Add Module" button.
- Browse for the module that was created earlier (
oemslic.mod).
- The designated OEM SLIC Table module must be visible in the list of modules
- Click on "Apply" to save the changes into the BIOS binary file.
- "Changes successfully applied" will be displayed in red letters in the text box above the "Apply" button.
Once these steps are completed, the “BIOS Module Modification” window can be closed by clicking on the “Close” button and proceed with closing the main window of the congatec System Utility by clicking on the “Close” button again.
Test
Download the SLIC ToolKit utility from the Internet and run it on the target system before and after flashing the new BIOS supporting OA2.1. The utility provides the status about the ACPI SLIC table implementation.
This test can be performed without having the target Windows operating system.
There are additional tests with the target Windows operating system described in the Microsoft Whitepaper "OEM Activation 2.1 for Windows Operating Systems".
Create an OA 3.0 ACPI_MSDM table
The OA 3.0 ACPI_MSDM table contains the key that is proprietary to and exclusively for the Windows OEM Activation 3.0 solution. The table must be added to the systems BIOS as a standard ACPI System Description Table. congatec has included a special BIOS feature in the embedded BIOS allowing customers to add this table by themselves with the congatec CGUTIL BIOS configuration utility.
The Microsoft Tool OA30TOOl.exe creates the OA 3.0 ACPI_MSDM with the Digital Product Key.
OEMs should contact their Microsoft support for further information about the OA 3.0 tools and activation process.
Add an OA 3.0 ACPI_MSDM table to BIOS Binary file
Use the congatec System Utility revision 1.5.6 or newer to insert the OA 3.0 ACPI_MSDM table module into the BIOS binary file.
The following tutorial describes the procedure step-by-step based on a Windows 10 Enterprise host system. All changes will be done to the BIOS binary file.
Following these steps will create a modified BIOS binary file that can be used to update congatec CPU modules (in this example: OEM1R001.bin). The original BIOS binary file will not be modified by the congatec System Utility.
For more information about the BIOS update process, refer to the application note BIOS Update (AN01), available at www.congatec.com
OA 3.0 is a new feature not supported by older congatec BIOS versions. Check with your congatec support whether your BIOS supports this method.
- Open the "congatec System Utility"
- Select "BIOS File" as operating target.
- Push the button "Select Input BIOS File"
- Browse for your designated BIOS BIN file
- Click "Select original/Create new BIOS file"
- Enter a file name (in this example
OEM1R001.bin) - Changes will be applied only to this file. The original BIOS BIN file will remain unchanged.
- Click on the "BIOS Module Modification" button
- Click on the "Create Module" button.
- Browse for your binary OEM MSDM table file created previously in the section Create an OA 3.0 ACPI_MSDM table (in this example
oa30msdm.bin).
- Choose "OA 3.0 Module" from the "Module Type" drop down list
- Leave the Module ID and Module Revision field unchanged
- Once this is completed, click on "Create Module" button
- Choose your designated module file name (in this example
oa30msdm.mod).i - Click on "Add Module" button.
- Browse for the module created earlier (
oa.30msdm.mod).
- The designated OA 3.0 module must be visible in the list of modules
- Click on "Apply" to save the changes into the BIOS BIN file
- "Changes successfully applied" will be displayed in red letters in the text box above the "Apply" button
Once these steps are completed, close the "BIOS Module Modification" window by clicking on the "Close" button and then close the main window of the congatec System Utility by clicking on the "Close" button.
CGUTLCMD Command Line Version
OEM Activation 3.0 removes the need for a COA product key by utilizing a unique DPK. It is used to verify the genuine license of each Windows system during activation. Each OA 3.0 DPK may be only distributed with a single OEM system. Using an OA 3.0 DPK on multiple systems is not allowed.
Due to this, the OA 3.0 ACPI_MDSM table and contents (including a unique DPK) must be added to each PC’s BIOS separately. The preferred way to do this is by using a type of script processing that utilizes CGUTLCMD, the command line version of congatec’s System Utility.
Here is an example of how the command line tool can be used in MS-DOS or the UEFI Shell:
It is assumed that all necessary files are added to the working directory or a reference to the absolute path.
Run the following commands to create and add an OA 3.0 module to the onboard BIOS flash.
To create a module run:
cgutlcmd module /ot:board /create /if: oa30msdm.bin /of: oa30msdm.mod /t:14
To add a module run:
cgutlcmd module /ot:board /add /if: oa30msdm.mod
On the next boot of the system the OA3.0 MSDM ACPI table will be applied
Additional Information
| Document | Source |
| Whitepaper: OEM Activation 2.1 for Windows Operating Systems | Microsoft |
| Whitepaper: OEM Activation 3 for Windows
Operating Systems |
Microsoft |
| OEM Activation 2.1 Tools Users Guide | Microsoft |
| OEM Activation 2.1 Frequently Asked Questions | Microsoft |
| ACPI Specification | https://uefi.org/specifications |
| congatec System Utility CGUTIL | www.congatec.com |
| congatec Application Notes | https://www.congatec.com/en/support/application-notes/ |













