Create and add an OEM ACPI SLIC table module to a congatec BIOS (AN21)

From conga-wiki
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

Create and add an OEM ACPI SLIC table module to a congatec BIOS (Ergänzung).png
  • Open the "Congatec System Utility"
  • Select "BIOS FIle" as operating target
  • Push the button "Select Input BIOS File"
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (002).png
  • Browse for your designated BIOS BIN file
  • Click "Select original/Create new BIOS file"
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (Ergänzung1).png
  • 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.
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (Ergänzung2).png
  • Click on the "BIOS Module Modification" button.
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (Ergänzung3).png
  • Click on the "Create Module" button.
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (006).png
  • Browse for your binary OEM SLIC table file created previously the section OEM SLIC Table (in this example oemslic.bin).
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (Ergänzung4).png
  • 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.
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (008).png
  • Chose your designated module file name (in this example oemslic.mod).
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (Ergänzung5).png
  • Click on "Add Module" button.
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (010).png
  • Browse for the module that was created earlier (oemslic.mod).
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (Ergänzung6).png
  • 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.

Create and add an OEM ACPI SLIC table module to a congatec BIOS (012).png

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.

Create and add an OEM ACPI SLIC table module to a congatec BIOS (Ergänzung7).png
  • Open the "congatec System Utility"
  • Select "BIOS File" as operating target.
  • Push the button "Select Input BIOS File"
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (013).png
  • Browse for your designated BIOS BIN file
  • Click "Select original/Create new BIOS file"
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (014).png
  • 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.
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (Ergänzung8).png
  • Click on the "BIOS Module Modification" button
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (Ergänzung10).png
  • Click on the "Create Module" button.
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (016).png
  • 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
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (018).png
  • Choose your designated module file name (in this example oa30msdm.mod).i
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (Ergänzung12).png
  • Click on "Add Module" button.
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (020).png
  • Browse for the module created earlier (oa.30msdm.mod).
    Create and add an OEM ACPI SLIC table module to a congatec BIOS (Ergänzung14).png
  • 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/