ChromeOS HWID-inator

Mode select

HWID type


HWID v3 and Exceptional only: segment count:

Enter HWID

Checked HWID:

What's in a HWID?

A ChromeOS Hardware ID (HWID) is composed of the device's board name as well as (usually) an encoded string of components installed in the device (A "Bill of Materials" or BOM). Hardware IDs are set during factory installation and are stored in the GBB (Google Binary Block) region of the flash chip. The GBB is in the read-only region, so firmware write-protect must be disabled before modifying it. The HWID is used by Google services such as for determining which ChromeOS update a device should receive.


What does this tool do?

This tool currently can only generate random or empty HWIDs, which do not reflect the components installed on the device. It may be useful if the original HWID was lost. Please note that setting a HWID generated by this tool may have unintended side effects such as not being able to receive automatic updates!


What do the different types mean?

HWID v2

This is the original HWID format (I don't know what happened to v1.) It is currently used as a placeholder HWID in firmware images from chromeos-firmwareupdate, as well as for some of the first few ChromeOS devices (mario, alex, zgb, snow (daisy), butterfly, link, lumpy, parrot, stout, stumpy).
Format typically looks like BOARD BOM VARIANT-VOLATILE CHECKSUM where BOARD is the board name, BOM is an additional code word, VARIANT and VOLATILE are at least one letter, and CHECKSUM is the last 4 decimal digits of the CRC32 of the preceding data (not including the space directly before it).
This format only requires some data and then a checksum after it.
Regex format: ^([\\s\\S]*) (\\d{4})$ A list of v2 HWIDs can be found here.

Exceptional HWIDs

FALCO A and SPRING [ABCD] used this format. Format looks like BOARD BOM where BOARD is the board name, and BOM is a base32-encoded string of data, where the last 2 are the 10 least significant bits of the CRC32 of the preceding data, separated every 4 letters by a dash.
Regex format: ^([A-Z0-9]+) ([A-Z2-7]{2,4}|(?:[A-Z2-7]{4}-)+[A-Z2-7]{1,4})$ Examples: FALCO APOM-3 FALCO AAAF-FYFI SPRING A7N3-BJKQ-E SPRING BABB-XY6 SPRING CIVY-F7ZL-U4 SPRING DADC-AI2D

HWID v3

This is the current HWID format used by all ChromeOS devices that don't use either of the above formats. Format looks like BOARD[-RLZ] [CONFIGLESS] BOM where BOARD is the board name, [-RLZ] is the additional 4-letter brand code present on post-2019 boards, [CONFIGLESS] is a string of hex characters separated by dashes (currently only known to be used by SARIEN and ARCADA), and BOM is data encoded in a string of triplets separated by dashes. The first and third character of each triplet is base32, and the middle character is base8 (for a total of 13 bits per triplet). The last 2 characters of the last triplet are the 8 least significant bits of the CRC32 of the preceding data (dashes removed from BOM for CRC).
Note: For best results, at least 3 segments should be present.
Regex format: ^[-A-Z0-9]+(?: (?:[0-9A-F]+-)+[0-9A-F]+)? (?:[A-Z2-7][2-9][A-Z2-7]-)*[A-Z2-7][2-9][A-Z2-7]$ Examples: FALCO D2B-D2Q-H7A-A25 SPRING G9D-D3C-A92 PHASER360 D5B-W94-J5N-I6F-54R-75T-U4H DELBIN-XHVI D9L-C4R-B95-H9Y-64Z SARIEN-MCOO 0-20-1DC-180 B2B-A6J-23P-43A-B2L-A7I

Alphabets

Base32: ABCDEFGHIJKLMNOPQRSTUVWXYZ234567
Base8: 23456789


How do I set my HWID?

You must first disable firmware write protection.

Note that the following commands must be run as root.
On modern versions of ChromeOS, you can use the futility tool to set the HWID, for example: futility gbb -s --flash --hwid="MY NEW HWID 9357" On older versions, you must manually read and write the GBB region: cd /tmp flashrom -r -i GBB:gbb.bin gbb_utility -s --hwid="MY NEW HWID 9357" gbb.bin flashrom -w -i GBB:gbb.bin
Your HWID can be seen at the bottom of the recovery screen and developer mode boot screens. Note that on newer devices, the HWID is truncated, and you must press TAB to see the whole thing.


Links

GitHub
GBB flag-inator

Website made by OlyB