As my previous email, I mentioned that I am able to find the protocol since the LocateProtocol returns 0 (EFI_SUCCESS) (using the exact code you wrote) . But when I want to open it either with OpenProtocol or HandleProtocol I get a RETURN_UNSUPPORTED. Are you implying that by calling LocateProtocol() the protocol would also be opened? or do I still need to open it? if I still need to open then I am still getting the UNSUPPORTED Status. But if I don't need to open it I still don't know why I am not able to use the GOP methods. one example of the many examples which I get this error is as below: Status = gBS->HandleProtocol (SystemTable->ConsoleOutHandle, &gEfiGraphicsOutputProtocolGuid, (VOID **)&GraphicsOutput); if (EFI_ERROR (Status)) { Status = gBS->LocateProtocol (&gEfiGraphicsOutputProtocolGuid, NULL, (VOID **)&GraphicsOutput); if (EFI_ERROR (Status)) { Print (L"Error: Could not find a GOP instance!\n"); Status = EFI_NOT_FOUND; goto Done; } } Blt = NULL; ImageWidth = 0; ImageHeight = 0; Status = TranslateBmpToGopBlt ( BmpFileData, BmpFileSize, &Blt, &BltSize, &ImageHeight, &ImageWidth ); It is worth mentioning that the BmpFIleData and BmpFileSize are valid variables with the proper data stored. Anyways, the status code for the TranslateBmpToGopBlt returns a RETURN_UNSUPPORTED. This is the same with other GOP methods On Wed, Feb 8, 2023 at 12:36 PM Michael Brown wrote: > On 08/02/2023 08:03, Alireza Banejad wrote: > > Below is how I use the HandleProtocol function: > > > > Status = gBS->HandleProtocol ( > > gST->ConsoleOutHandle, > > &gEfiGraphicsOutputProtocolGuid, > > (VOID **)&GraphicsOutput > > ); > > You are querying only the ConsoleOutHandle, which is not necessarily > where the GOP will be installed. > > Use LocateProtocol() to find the protocol instance instead: > > > Status = gBS->LocateProtocol(&gEfiGraphicsOutputProtocolGuid, NULL, > (VOID **)&GraphicsOutput); > > HTH, > > Michael > >