Skip to content
This repository was archived by the owner on Jul 24, 2025. It is now read-only.
This repository was archived by the owner on Jul 24, 2025. It is now read-only.

Color calibration profiles download feature (X-Rite replacement) #1480

Description

@Rast1234

Version

2.24.1

OS

Windows 10 22H2

Device

Legion Pro 7 16ARX8H

Is your feature request related to a problem?

My laptop comes with a color-calibrated LCD panel. Lenovo offers X-Rite Color Assistant app which should download and install profiles for a given panel, but the app is finicky and doesn't work for everyone.

Calibration profiles are zipped, X-Rite tries to download them but

  • zip file contents for my panel have different modification dates and this fails installation (dates should all be the same)
  • app reports an obscure cryptographic error most likely related to HTTPS

For more details and other user reports you can check this thread: https://forums.lenovo.com/t5/ThinkPad-P-and-W-Series-Mobile-Workstations/X-Rite-Color-Assistant-fails-to-restore-color-profiles/m-p/5159754

I guess Lenovo does not provide these zips with *.icm files on download page for each laptop model, because they are unique for each panel, so you need a serial number, not just machine type.

People found out what X-Rite does:

  • constructs an url with model + serial
  • calls API to generate temporary link
  • downloads zip with *.icm profiles
  • installs them to %WINDIR%\System32\spool\drivers\color

So it's feasible to implement in LLT as it's a perfect Vantage/SystemUpdate replacement :)

Here's a Powershell implementation of zip retrieval:

$model = $(Get-WmiObject Win32_ComputerSystem).Model
$serial = $(Get-WmiObject Win32_Bios).SerialNumber
$url = "https://supportapi.lenovo.com/ColorCalibration/GetFileBySn?sn=1S$model$serial"
$jsonResponse = Invoke-RestMethod -Uri $url
echo "Temporary link to download calibration zip: $jsonResponse"
$response = Invoke-WebRequest $jsonResponse -verbose
$fileName = $response.BaseResponse.ResponseUri.AbsolutePath.Split('/')[-1]
[IO.File]::WriteAllBytes($fileName, $response.Content)
echo "Saved to $fileName"
echo "Now copy ICM files to C:\Windows\System32\spool\drivers\color"

I didn't look for a way to actually bind profiles to a monitor though, that turned out to be pretty straightforward to do manually in native Color management tool.

How would you like the problem to be solved?

Add a feature to LLT to download and install color calibration profiles for laptop's LCD panel

What alternatives have you considered?

X-Rite Color Assistant app offered by Lenovo support page doesn't work for everyone and is really not needed as people figured out how it works

Additional information

If you don't have hardware which comes with color profiles and X-Rite, i can help with testing and/or share my serial to debug URL construction logic

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions