208 lines
13 KiB
Plaintext
208 lines
13 KiB
Plaintext
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. |