
This describes how to change the HWID string that's displayed using the
new-style BIOS bitmaps. For a more detailed explanation of what's going on,
refer to the README file.

The HWID is encoded in the GBB in two ways: An ASCII string that userspace
can read from /sys/devices/platform/chromeos_acpi/HWID, and as a rendered
bitmap that shows up on the BIOS screens.


Here's how to generate a new bitmap blob with a modified HWID

1. OUTSIDE the chroot, cd to
   src/platform/vboot_reference/scripts/newbitmaps/strings

2. Edit the file 'hwid.txt' to contain your new string.

3. Run "./text_to_bmp hwid.txt" to create "hwid.bmp" which contains ONLY the
   picture of the HWID string.

4. Copy the hwid.bmp image to the directory where the rest of the bitmap
   blob comes from (which might not be public yet). If you don't know where
   that is, just use the example directory:

     src/platform/vboot_reference/scripts/newbitmaps/images/1280x800

5. cd to the bitmap source directory, INSIDE the chroot.

6. Edit the .yaml file that describes the bitmap blob (if you're in the
   1280x800 directory, it's called "unknown.yaml"). Change the line that
   starts with "hwid:" to refer to your new hwid.bmp file (or replace the
   existing hwid bitmap file with your new one).

7. Run "bmpblk_utility -c unknown.yaml new_bitmaps.bin", to create the new
   bitmap blob.

8. Install the new_bitmaps.bin on your device (see below).




The gbb_utility is used to replace both the ASCII string and the bitmap blob
in a BIOS image. The typical proces is to do this as root on the target
system. This will only work if THE BIOS write-protect is disabled.


A. Read the existing BIOS from ROM (so you don't lose the VPD):

    cd /mnt/stateful_partition
    flashrom -r bios.bin

B. Modify the GBB in the BIOS image to contain the new bits:

    gbb_utility -s 'NEW HWID STRING 1234' -b new_bitmaps.bin bios.bin

C. Write the modified BIOS back to ROM:

    flashrom -w bios.bin
