Provide the instructions on the OEM name customization on ChromeOS devices.
For an overview of the Telemetry Extension platform, please visit our main documentation.
We have proposed a hybrid approach “cros_config first, fallback to VPD” for OEM name customization. This approach first tries to search for the OEM name in cros_config and checks a VPD field if the name is not present. Right now (October, 2022) only the cros_config part is implemented; the VPD part is in progress. In general the OEM name field is used to differentiate between different OEMs on a ChromeOS device. The field is currently used by the Telemetry Extension and is a requirement to use the Extension. This guide explains how to set the OEM name in cros_config.
Please note that the changes made here follow the Chrome Release Cycle (actual timeline can be found in Chromium Dashboard), which means it will take at least 6 weeks to rollout your changes to the public.
This section provides the instructions on how to check OEM name config, and set /verify the OEM name for models with or without Boxster.
NOTE: It is your responsibility to make sure the OEM name you fill in is correct. Neither cros-config nor Boxster validate that value.
config.star
device_brand.create
(See Troubleshooting if you cannot find it). Usually named _DEVICE_BRAND
._FAKE_OEM
in our example) that is passed to oem_id
and make sure the value inside it is correct. In case you need to modify the existing OEM name, you could follow the sample CL crrev.com/c/3627425.export_oem_info = True
.generated/config.jsonproto
and sw_build_config/platform/chromeos-config/generated/project-config.json
by running: ./config/bin/gen_config config.star
.The configuration in config.star
would look like this:
// config.star _FAKE_OEM = partner.create("FAKE_OEM") # Make sure it’s correct ... _DEVICE_BRAND = device_brand.create( brand_name = "Fake ChromeOS Device Brandname", design_id = _DESIGN_ID, oem_id = _FAKE_OEM.id, # This argument is required brand_code = "AAAA", export_oem_info = True, # Add this line )
model.yaml
base-config
there’s another dictionary named branding
containing an entry with key oem-name
and value {{$oem-name}}
. Optionally, you can add another entry $oem-name
with value ""
(an empty string) which will be used as default value.$oem-name
whose value is the OEM name you would like to set in chromeos.devices[].products[]
.An example model.yaml
could look somewhat like this:
base-config: &base_config ... branding: $oem-name: "" oem-name: "{{$oem-name}}" ... devices: ... - $device-name: "foo" $has-smart-battery-info: true products: - $brand-code: "FOO" $marketing-name: "TBD" $oem-name: "OEM_A" # This is what you set. skus: - $sku-id-val: 42 config: *foo_config
You can verify the OEM name configuration by running the following command:
cros-health-tool telem --category=system
Check if os_info.oem_name
is present and correct. A sample output would look somewhat like that:
$ cros-health-tool telem --category=system { "dmi_info": { ... }, "os_info": { "boot_mode": "cros_secure", "code_name": "foo", "marketing_name": "TBD", "oem_name": "OEM_A", # check this line ... }, "vpd_info": { ... }
In some projects, you might see _DEVICE_BRAND
is initialized with program.brand
. In this case, you need to:
program/program.star
(note that this file is in a different repo chromeos/program/${BOARD}
as program/
is a soft link) and modify the _brand
function:config.star
and add the parameter export_oem_info = True
to the program.brand
function.Sample program/program.star
:
def _brand(design_id, oem_id = None, brand_code = _DEFAULT_BRAND_CODE, brand_name = None, export_oem_info = False): return device_brand.create( brand_name = brand_name, design_id = design_id, oem_id = oem_id, brand_code = brand_code, export_oem_info = export_oem_info, )
Sample config.star
:
_DEVICE_BRAND = program.brand(_FOO_DESIGN_ID, ..., export_oem_info = True)