Hi all, According to the instructions of edk2-platforms, I can build MinnowMax.cap and CapsuleApp.efi. Build command: build -a IA32 -a X64 -n 5 -t VS2019 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc reference: https://github.com/tianocore/edk2-platforms/tree/master/Platform/Intel/Vlv2TbltDevicePkg My system: MinnowMax board. I can update capsule data to MinnowMax SPI flash with the following command: Shell command: CapsuleApp MinnowMax.cap But when I try to write data to an external USB device, I get an error. My modifications are as follows: \edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg\Feature\Capsule\Library\PlatformFlashAccessLib\PlatformFlashAccessLib.c EFI_STATUS EFIAPI PerformFlashAccessLibConstructor ( VOID ) { EFI_STATUS Status; Status = gBS->LocateProtocol( &gEfiUsbIoProtocolGuid, NULL, (VOID**)&gUsbIOWDT ); if (EFI_ERROR(Status)) return Status; //unsupport return Status; } The error message is Status : EFI_NOT_FOUND. Among them, PerformFlashAccessLibConstructor is executed in the FmpDxe(Minnow) driver, and it refers to the following method of Vlv2TbltDevicePkg: Status = gBS->LocateProtocol ( &gEfiSpiProtocolGuid, NULL, (VOID **) &mSpiProtocol ); My questions are: * How to handle USBIO operation during FmpDxe update capsule flow? Is there any sample code? * In FmpDxe, you can pass the gEfiSpiProtocolGuid parameter in the LocateProtocol function to get the handle. Why does passing gEfiUsbIoProtocolGuid cause an error? How should it be modified? Any advice is greatly appreciated! Thanks!