alder_lake_bios/Intel/AlderLake/AlderLakePlatSamplePkg/CapsuleUpdateConfig
xinb f2e5d6c59f init 2026-06-18 00:35:57 +08:00
..
CapsuleOutput init 2026-06-18 00:35:57 +08:00
BBR_CDR_A1_ICL_PORT_0_1_rev25_sign.bin init 2026-06-18 00:35:57 +08:00
BBR_CDR_A1_ICL_PORT_2_3_rev25_sign.bin init 2026-06-18 00:35:57 +08:00
BtgAcm.bin init 2026-06-18 00:35:57 +08:00
BtgAcmHeader.bin init 2026-06-18 00:35:57 +08:00
CapsuleApp.efi init 2026-06-18 00:35:57 +08:00
ClientBios.rom init 2026-06-18 00:35:57 +08:00
DTbtPayloadConfig.ini init 2026-06-18 00:35:57 +08:00
DTbtRetimerPayloadConfig.ini init 2026-06-18 00:35:57 +08:00
Descriptor.bin init 2026-06-18 00:35:57 +08:00
DisTbtPayloadConfig.ini init 2026-06-18 00:35:57 +08:00
Ec.bin init 2026-06-18 00:35:57 +08:00
GbE.bin init 2026-06-18 00:35:57 +08:00
ITbtRetimerPayloadConfig.ini init 2026-06-18 00:35:57 +08:00
Me.bin init 2026-06-18 00:35:57 +08:00
Pdt.bin init 2026-06-18 00:35:57 +08:00
ReadMe.txt init 2026-06-18 00:35:57 +08:00

ReadMe.txt

This file describe how to build system firmware Capsules with %PLATFORM_FULL_PACKAGE%\capsulebuild.bat

There are several Capsule targets supported:
1. Monolithic Capsule      - A single Capsule to update multiple components on IFWI
   ESRT entry GUID: 7FEB1D5D-33F4-48D3-BD11-C4B36B6D0E57
   Involved payloads: ClientBios.rom (must be a valid BIOS ROM)
                      Me.bin         (could be dummy file started with $DUM. if it's dummy, ME FW update would be skipped)
                      Ec.bin         (could be dummy file started with $DUM. if it's dummy, EC FW update would be skipped)
                      Pdt.bin        (could be dummy file started with $DUM. if it's dummy, PDT update would be skipped)

2. Standalone BIOS Capsule    - A Capsule to update BIOS only.
   ESRT entry GUID: 6C8E136F-D3E6-4131-AC32-4687CB4ABD27
   Involved payloads: ClientBios.rom (must be a valid BIOS ROM)

3. Standalone EC Capsule      - A Capsule to update EC FW only.
   ESRT entry GUID: 3DD84775-EC79-4ECB-8404-74DE030C3F77
   Involved payloads: Ec.bin (must be a valid EC binary)

4. Standalone ME Capsule      - A Capsule to update ME FW only.
   ESRT entry GUID: 0EAB05C1-766A-4805-A039-3081DE0210C7
   Involved payloads: Me.bin (must be a valid ME binary)

5. Standalone ISH PDT Capsule - A Capsule to update ISH PDT only.
   ESRT entry GUID: 76CA0AD8-4A14-4389-B7E5-FD88791762AD
   Involved payloads: Pdt.bin (must be a valid PDT binary)
   P.S. Current PDT Version is awlays 5 which causes some difficulties of validation:
          1. User is hard to tell the difference between different PDT binaries.
          2. WOS would skip PDT Capsule upgrade with the same FW version.
        So we use a virtual version stored in UEFI variable to represent PDT version on current platform.
        It means user needs to assign a virtual PDT version when creating PDT FMP Capsule image.

6. Standalone RETIMER Capsule - A Capsule to update RETIMER only.
   ESRT entry GUID: 2FE2CBFC-B9AA-4A93-AB5B-40173B581C42

   a. Involved payloads: ITbtRetimerPayload.bin (ITbtRetimerPayload.bin is generated according to ITbtRetimerPayloadConfig.ini)
      To build Integrated Thunderbolt RETIMER Capsule, ITbtRetimerPayloadConfig.ini must be a valid config file

   b. Involved payloads: DTbtRetimerPayload.bin (DTbtRetimerPayload.bin is generated according to DTbtRetimerPayloadConfig.ini)
      To build Discrete Thunderbolt RETIMER Capsule, DTbtRetimerPayloadConfig.ini must be a valid config file

7. Standalone Discrete TBT Capsule - A Capsule to update TBT only.
   ESRT entry GUID: 86A885EE-D71E-2ED6-0FC1-9D6CCC9677EB
   Involved payloads: DTbtPayload.bin (DTbtPayload.bin is generated according to DTbtPayloadConfig.ini)
   To build Discrete Thunderbolt Capsule, DTbtPayloadConfig.ini must be a valid config file

8. Standalone Ucode Capsule - A Capsule to update Ucode only.
   ESRT enry GUID: 69585D92-B50A-4AD7-0xB2-652EB1AE066574
   Involved payloads: uCode FFS file (Modify Features\CapsuleUpdate\Tools\NewGenCap\MicrocodeFv\MicrocodeFv.fdf to assign the
   correct ucode FFS file). Different CPU type corresponds to different ucode FFS file. To build Ucode Capsule, uCode FFS file must be valid.

9. Standalone BtGACM Capsule - A Capsule to update BtGACM only.
   ESRT entry GUID: 4E88068B-41B2-4E05-893C-DB0B43F7D348
   Involved payloads: BtGAcm.bin (musht be a valid ACM binary, such as Intel\AlderLakeBoardPkg\Binaries\BootGuard\ACM\StartupAcm.bin)

By default capsulebuild.bat generates a Monolithic Capsule.
See [How to Use] below for further details.

[Pre-Requisites]
1. Windows operating system
2. Having Python3 installed
3. If you want to test Capsule update in Windows, having WDK/SDK installed to generate Windows update driver.
   The script to generate Windows update driver requires below files:
   a. signtool.exe under
      C:\Program Files (x86)\Windows Kits\10\bin\x64
      or
      C:\Program Files (x86)\Windows Kits\8.1\bin\x64
      or
      C:\Program Files (x86)\Windows Kits\10\bin\*\x64

   b. Inf2Cat.exe under
      C:\Program Files (x86)\Windows Kits\10\bin\x86
      or
      C:\Program Files (x86)\Windows Kits\10\bin\*\x86

[How to Use]
1. Replace relative payload images (e.g., ClientBios.rom, Ec.bin, and etc.) of your interests with the real ones in this directory.
2. Under %PLATFORM_FULL_PACKAGE%, open Command prompt, run:
     capsulebuild [target:all/bios/ec/me/pdt/itbtretimer/dtbtretimer/dtbt/ucode/btgacm][-biossvn <Bios Svn>][-mever <ME Build Version>]
     [-mesku <Me SKU>][-pdtver <PDT Version>][-mesku <Me SKU>][-pdtver <PDT Version>][-rtver <Retimer Version>][-dtbtver <TBT Version>]
     [-ucodem <ucode mode>][-ucodet <ucode build type>][-ucodeverstr <string version of ucode payload>]
     [-ucodever <32-bit version of ucode payload>][-ucodelsv <lowest supported version of the ucode payload>][help]

        target   Assign Capsule build targets: all/bios/me/ec/pdt/itbtretimer/dtbtretimer/dtbt/ucode/btgacm, default is building Monolithic Capsule

                 default: If target is NOT assigned, build Monolithic Capsule

                 all          : Build Monolithic Capsule + standalone bios, me, ec and pdt Capsules
                 bios         : Build Standalone BIOS Capsule
                 ec           : Build Standalone EC Capsule
                 me           : Build Standalone ME Capsule
                 pdt          : Build Standalone PDT Capsule
                 itbtretimer  : Build Integrated TBT Retimer Device FW Capsule
                 dtbtretimer  : Build Discrete TBT Retimer Device FW Capsule
                 dtbt         : Build Discrete TBT Device FW Capsule
                 ucode        : Build Standalone Ucode Capsule
                 btgacm       : Build Standalone ACM Capsule

        -biossvn To indicate the Bios SVN
                 It's optional when building Bios capsule, the default value is the major version of ClientBios.rom.
                 It's mandatory when building ACM and bgup and full mode ucode capsule.
                 It's unnecessary when building slot mode ucode capsule.
                 e.g., "capsulebuild.bat bios -biossvn 2849"
        -mever   To indicate ME Build version of CapsuleUpdateConfig\Me.bin.
                 It's mandatory if building capsules with [all] or [me] target
        -mesku   To indicate ME SKU of CapsuleUpdateConfig\Me.bin.
                 It's mandatory if building capsules with [all] or [me] target
                 It should be one of the following string: Lp_Cons/H_Cons/Lp_Corp/H_Corp/default
        -pdtver  To assign a virtual PDT version of CapsuleUpdateConfig\Pdt.bin.
                 It's mandatory if building capsules with [all] or [pdt] target
                 e.g., "capsulebuild.bat pdt -pdtver 2"
        -rtver   To assign a virtual Retimer version for Retimer Capsule
                 It's mandatory if building capsules with [itbtretimer] or [dtbtretimer] target
                 e.g., "capsulebuild.bat itbtretimer -rtver 110", "capsulebuild.bat dtbtretimer -rtver 119"
        -dtbtver To assign a virtual TBT version for Discrete TBT Capsule
                 It's mandatory if building capsules with [dtbt] target
                 e.g., "capsulebuild.bat dtbt -dtbtver 290"
        -ucodem  To indicate the ucode build mode
                 It's mandatory when building capsule with [ucode] target
                 Should be one of the following string: ucodefull/ucodebgup/ucodeslot
        -ucodet  To indicate the ucode build type
                 It's optional when building capsule with [ucode] target
                 Should be one of the following string: debug/release. The default type is debug.
        -ucodeverstr  The version string of the ucode binary payload (e.g. "Version 0.1.2.3").
        -ucodever     The 32-bit version of the ucode binary payload (e.g. 0x11223344 or 5678).
                      The argument -ucodever and -ucodeverstr doesn't overloap, user can assign both.
        -ucodelsv     The 32-bit lowest supported version of the ucode binary payload (e.g. 0x11223344 or 5678).
        Note*: As of now we dont have the knowledge to parse ME version from a given ME FW image.
               So ME version needs to be provided manually by the user.

3. If the build is success, XXXSystemFwxxxx.cap would be observed in CapsuleOutput directory.
4. Windows Update driver (if generated) would be found in CapsuleOutput\WindowsCapsule

Examples:
   *XXX  stands for the shor tname of the platform like ICL etc.
   *vvvv stands for the version of the firmware

   a. capsulebuild.bat
        => Default build. Build a Monolithic capsule. XXXSystemFwMono_vvvv.cap would be observed in CapsuleOutput directory.
           Windows update driver (if generated) would be found in CapsuleOutput\WindowsCapsule\Monolithic

   b. capsulebuild.bat ec
        => Build a standalone ec capsule. XXXSystemFwEc_vvvv.cap would be observed in CapsuleOutput directory.
           Windows update driver (if generated) would be found in CapsuleOutput\WindowsCapsule\Ec

   c. capsulebuild.bat bios me -mever 14.0.20.1033 -mesku H_Corp
        => Build both standalone ME capsule and BIOS capsule. 14.0.20.1033 indicates ME build verion of Me.bin
           XXXMe_14_0_20_1033_H_Corp.cap and XXXSystemFwBios_vvvv.cap would be observed in CapsuleOutput directory.
           Windows update driver (if generated) would be found in CapsuleOutput\WindowsCapsule\Me and CapsuleOutput\WindowsCapsule\Bios

   d. capsulebuild.bat all -mever 14.0.20.1033 -mesku H_Corp -pdtver 5
        => Build Monolithic Capsule and standalone BIOS/ME/EC Capsules. 1033 indicates ME build verion of Me.bin
           XXXSystemFwMono_vvv.cap, XXXSystemFwBios_vvv.cap, XXXMe_14_0_20_1033_H_Corp.cap, XXXSystemFwEc_vvvv.cap and
           XXXSystemFwIshPdt_5.cap would be observed in CapsuleOutput directory.
           Windows update drivers (if generated) would be found in CapsuleOutput\WindowsCapsule

   e. capsulebuild.bat itbtretimer -rtver 110
        => Build Retimer CapsuleCapsule. 110 indicates Retimer build version of Retimer payload
           Adl_ITbtRetimer_110.cap would be observed in CapsuleOutput directory.
           Windows update drivers (if generated) would be found in CapsuleOutput\WindowsCapsule

   f. capsulebuild.bat dtbtretimer -rtver 119
        => Build Retimer CapsuleCapsule. 119 indicates Retimer build version of Retimer payload
           Adl_DTbtRetimer_119.cap would be observed in CapsuleOutput directory.
           Windows update drivers (if generated) would be found in CapsuleOutput\WindowsCapsule

   g. capsulebuild.bat dtbt -dtbtver 290
        => Build Retimer CapsuleCapsule. 290 indicates TBT build version of Discreted TBT payload
           Adl_DTbt_290.cap would be observed in CapsuleOutput directory.
           Windows update drivers (if generated) would be found in CapsuleOutput\WindowsCapsule

   i. capsulebuild.bat ucode -ucodem ucodefull -biossvn 2999 -ucodet debug -ucodeverstr 0.1.2.3 -ucodever 5678 -ucodelsv 5678
        => Build ucode Capsule. Ucode mode is ucodefull, ucode build type is debug and biossvn is 2999
           uCodeFull.capp would be observed in directory AlderLakePlatSamplePkg\Features\CapsuleUpdate\Tools\NewGenCap\Output
           Windows update drivers would be found in AlderLakePlatSamplePkg\Features\CapsuleUpdate\Tools\NewGenCap\Outputt\WindowsCapsule

   j. capsulebuild.bat btgacm -biossvn 2999
        => Build BtGACM Capsule. The bios svn is 2999.
           %CAP_PLATFORM_PREFIX%SystemFwBtGAcm_NNMMnn.Cap would be observed in CapsuleOutput directory. NN is the version number,
           MM is the major number, and mm is minor version. These version info is got from BtGAcm.bin

[Apply Capsule in UEFI Shell]

1. Put Capsule file and CapsuleApp.efi in USB storage.
2. In EFI Shell, switch file system to the USB storage (e.g. Fs0:)
3. fs0:> CapsuleApp <Capsule file name (e.g. XXXSystemFwxxxx.Cap)>
4. System should restart
5. After reboot, a progress bar which indicates the update is in progress should be observed with Intel logo.

[Apply Capsule update package in Windows]

Pre-Requisites:
        1. Disable Secure Boot in BIOS setup question to allow firmware upgrade.
        2. Please check the system date and time if it is correct or not.
        3. Set "testsigning" on through bcdedit using below admin command prompt:
                "bcdedit /set testsigning on" and reboot the system.
        4. Confirm the changes by typing "bcdedit" in cmd prompt. Below status should be observed:
                  testsigning                       Yes

Installing the Firmware driver package:
        1. Copy XXXSystemFwxxxx directory to SUT
        2. Do the below things to install the certificate file.
                  a. Double click on the security catalog file (cat file) from package.
                  b. Click on View Signature.
                  c. Click on View Certificate followed by clicking on Install Certificate.
                  d. For Store Location, choose "Local Machine". Click next and Manually browse and select "Trusted Root Certification Authorities".
                  e. Click OK and next to install the certificate on the system for one time.
                  f. You should get the popup message "The Import was Successful"
        3. Enter to driver package created. Run "pnputil -i -a XXXSystemFwxxxx.inf" as Administrator. Then restart system.