Years bumbling around this subject Finally I came to the solution of how to change uefi splash screen on my machine.
Somehow, Lenovo bios updating software can not do it for me. I did everything BIOS_LOGO.txt said, and then run Winuptp.exe and get nothing or a black screen with no logo at best. Worst of all, this piece of black magic do not have any settings and will not tell you if something is good or what it doing and can not flash same version of BIOS twice if something goes wrong.
So..
We need to find where container of my precious splash images is, unpack it and replace images. There are is two of it btw. Phoenix tool can easily repack my dump that i get from fptw tool. Other utils fine too, but that one do what I need (4 MB rom vs 12 MB that Universal BIOS Toolkit do) and can flash it under Win7x64.
Now .. The problem with phoenix tool - EVSA entries of my BIOS. Can't deal with it. But i need to, cause splash images stores there. UEFITool_Ne can unpack my dump too, including EVSA entries, but can not mod and repack.
First, we need to get some usefull information, lets find and extract SplashLogoPackage with UEFITool_Ne, then open with a Hex editor. We get lucky
There are 2 blocks of 30KB each with 18 00 78 00 00 pre header for both images. By default my bios using GIF format, but you can use also JPEG or BMP format with all the limitations described in BIOS_Logo.txt of garbage program Winuptp that LENOVO using for BIOS update. You might wanna check if it is your uefi logo. Just copy all data from GIF header or what format you get to end of data block and save with .gif/.jpeg or what.
UEFITool_Ne tells us that SplashLogoPackage stored somewhere in the second volume. In last Evsa entry before PADDING of that volume. Phoenix tool can not see such entries, but I can extract whole PADDING of second volume and be sure my images here. Be carefull, cause images not only thing PADDING has insyde
Now we need to use the information that we received in the previous step.
We know pre header sequence and image specific header sequence so we can find it in padding and replace with what we want and use our new PADDING as a replacement in Phoenix tool then save changes when asked.
My solution is a kind of overcomplicated, sure somewhere is simple way exist but that one works fine for me.
I have only one . Can I move the pre-header of the second image to increase the available space for the first image? As I understand UEFI looking EVSA SplashLogoPackage for a sequence of bytes 18 00 78 00 00 then the image header and decode it. If necessary, a second image (appears when you use manufacturer's preferred settings.) Simply search for the second appearing of pre-header, and then read afterwards.
I'm not sure the moving of the second pre-header around will help tho, cause when i push image size to limit of non-overlapping with the second pre header often I get a black screen or a digital distorted logo in the end. Coincidence maybe.
Dunno
Somehow, Lenovo bios updating software can not do it for me. I did everything BIOS_LOGO.txt said, and then run Winuptp.exe and get nothing or a black screen with no logo at best. Worst of all, this piece of black magic do not have any settings and will not tell you if something is good or what it doing and can not flash same version of BIOS twice if something goes wrong.
So..
We need to find where container of my precious splash images is, unpack it and replace images. There are is two of it btw. Phoenix tool can easily repack my dump that i get from fptw tool. Other utils fine too, but that one do what I need (4 MB rom vs 12 MB that Universal BIOS Toolkit do) and can flash it under Win7x64.
Now .. The problem with phoenix tool - EVSA entries of my BIOS. Can't deal with it. But i need to, cause splash images stores there. UEFITool_Ne can unpack my dump too, including EVSA entries, but can not mod and repack.
First, we need to get some usefull information, lets find and extract SplashLogoPackage with UEFITool_Ne, then open with a Hex editor. We get lucky
There are 2 blocks of 30KB each with 18 00 78 00 00 pre header for both images. By default my bios using GIF format, but you can use also JPEG or BMP format with all the limitations described in BIOS_Logo.txt of garbage program Winuptp that LENOVO using for BIOS update. You might wanna check if it is your uefi logo. Just copy all data from GIF header or what format you get to end of data block and save with .gif/.jpeg or what.
UEFITool_Ne tells us that SplashLogoPackage stored somewhere in the second volume. In last Evsa entry before PADDING of that volume. Phoenix tool can not see such entries, but I can extract whole PADDING of second volume and be sure my images here. Be carefull, cause images not only thing PADDING has insyde
Now we need to use the information that we received in the previous step.
We know pre header sequence and image specific header sequence so we can find it in padding and replace with what we want and use our new PADDING as a replacement in Phoenix tool then save changes when asked.
My solution is a kind of overcomplicated, sure somewhere is simple way exist but that one works fine for me.
I have only one . Can I move the pre-header of the second image to increase the available space for the first image? As I understand UEFI looking EVSA SplashLogoPackage for a sequence of bytes 18 00 78 00 00 then the image header and decode it. If necessary, a second image (appears when you use manufacturer's preferred settings.) Simply search for the second appearing of pre-header, and then read afterwards.
I'm not sure the moving of the second pre-header around will help tho, cause when i push image size to limit of non-overlapping with the second pre header often I get a black screen or a digital distorted logo in the end. Coincidence maybe.
Dunno