

The "data checksum" is apparently always 0xAA, no matter the data. Copy the latter and paste it over the "Header checksum" field from step 5. It should say something like "Header checksum: _h, invalid, should be _h". If you did everything correctly, the structure should be like this:Ĭlick the logo node and check the information panel. Open the modified firmware file in UEFITool and navigate to the Logo node as in step 2. The volume containing the file should be large enough to contain the new one. This entire block should then be pasted over the logo file we found in step 2. With the compressed LZMA data we can now create a new "Logo" node to replace the one we found in step 2. The dictionary size can be specified with the flag -lzma1=dict=16777216, but I couldn't find a switch for the "uncompressed size" field.Ī) Run lzma -lzma1=dict=16777216 contents.bin, where contents.bin is the file created in step 3ī) Open the newly created file in a hex editor and replace the FFFFFFFFFFFFFFFF at offset 5 with the original size of contents.bin in little-endian byte order. The linux command line tool "xz", which includes the "lzma" command, doesn't fulfill either of these by default. The "uncompressed size" field must be set (not all 0xFF).The dictionary size must be exactly 0x1000000 bytes.It uses regular LZMA1 compression, but UEFITool only shows it as valid if these two conditions are fulfilled: Step 4 - Compressing the LZMA node contents Zero-terminated UTF16-LE string "Logo.bmp".0x16 0x00 0x00 (Size of the UI section).0x_ 0x_ 0x_ (Size of the Raw section, including the 4 header bytes).The final structure then looks like this: The content of the UI section is a zero-terminated UTF16-LE string. So the UI section doesn't necessarily start immediately after the Raw section, there could be up to 3 padding bytes in between. What tripped me up for a while is that apparently the secions have to be aligned to 4 byte boundaries. The type ids for the Raw and UI sections are 0x19 and 0x15 respectively. The values of the size fields include the 4 header bytes. The LzmaCustomDecompressGuid node in my original firmware contains two children: one Raw section containing the jpg file contents and one UI section with the string "Logo.bmp" (no idea why it's called bmp if there's a jpg file inside).Įach section starts with a 4 byte header consisting of a 3 byte size field and a single byte type field. We will have to manually recreate the subtree of the Logo node. In my case there were three matches, the correct one should have a single child with GUID EE4E5898-3914-4259-9D6E-DC7BD79403CF, aka. Open the firmware in UEFITool and use the search dialog to find the GUID 7BB28B99-61BB-11D5-9A5D-0090273FC14D, which refers to the Logo file. Step 2 - Finding the logo sectionĭownload UEFITool and the firmware for your BIOS. If your file uses the incorrect encoding, the command will fail claiming that it contains unsupported jpg data. You can check whether the jpg file is valid by attempting to insert it into a firmware image using ChangeLogoPro: ChangeLogoWin64.exe /i firmware.bin /o test.bin /m 1 /r image_file.jpg. jpg file can't contain any S0F2 markers, or the image will show as pure black at boot time). Make sure to select "Baseline (Standard)" in the Photoshop export window, because the "Progressive" encoding is not supported (the. png are also supported (haven't tested that though).ĬhangeLogoPro outputs a warning for images larger than 800圆00, but we won't use it anyway, so I'm not sure whether the size actually matters as long as it's smaller than the resolution used for the boot screen. For the purpose of this guide I will use jpg files because that's the format of the preinstalled logo, but I believe. Step 1 - Creating the image fileĬreate an image of your choice in any image editor.

UEFITool was still useful to check whether my edits are valid and to decipher the file format. I had to manually edit the firmware file. This guide is based on this, but for some reason the "Replace Body" options in UEFITool are grayed out for me, so I couldn't use them.
UEFITOOL VS HOW TO
Instructions on how to change the boot logo on a Gigabyte Z690 GAMING X mainboard
