Colour profile

From ThinkWiki
Revision as of 13:12, 15 December 2009 by Tonko (Talk | contribs) (Unpacking the EXE)
Jump to: navigation, search

Linux distributions are starting to get support for Colour profiles with gnome-color-manager which is planned to be part of Fedora 13 [1].

IBM and Lenovo have been providing colour profile packages for years, unfortunately they are stuck away in Windows .exe files, with no easy to read mapping of ThinkPad model to ICM file. These instructions will tell you how to unpack the archive and locate the correct ICM file for your ThinkPad.

TODO
simplify the procedure for finding the right colour profile to load

Unpacking the EXE

Download the Windows EXE file for your model. There are three methods of unpacking it.

  1. Use a windows machine
  2. Use wine
  3. Use cabextract

The last one is by far the easiest, and will extract the files to your current directory.

cabextract on newer ThinkPads

The files will be saved in the current working directory, and unlike indicated will have lower-case filenames. No directories will be created.

$ cabextract 79oi18ww.exe 
79oi18ww.exe: library not compiled to support large files.
79oi18ww.exe: library not compiled to support large files.
Extracting cabinet: 79oi18ww.exe
  extracting TPFLX.ICM
  extracting TPLCD.CAT
  extracting TPLCD.ICM
  extracting TPLCD.INF
  extracting TPLCD60.ICM
  extracting TPMB60.ICM
  extracting TPMB72.ICM

cabextract on older ThinkPads

Filenames will be upper-case for the older archive and directories will be created in the current working directory. You can use the files in any of the directories created, they are all the same.

$ cabextract ../1yoi04ww.exe 
Extracting cabinet: ../1yoi04ww.exe
  extracting WIN98/IBMTPFLX.ICM
  extracting WIN98/IBMTPLCD.CAT
  extracting WIN98/IBMTPLCD.ICM
  extracting WIN98/IBMTPLCD.INF
  extracting WIN2000/IBMTPFLX.ICM
  extracting WIN2000/IBMTPLCD.CAT
  extracting WIN2000/IBMTPLCD.ICM
  extracting WIN2000/IBMTPLCD.INF
  extracting WINME/IBMTPFLX.ICM
  extracting WINME/IBMTPLCD.CAT
  extracting WINME/IBMTPLCD.ICM
  extracting WINME/IBMTPLCD.INF
  extracting WINXP/IBMTPFLX.ICM
  extracting WINXP/IBMTPLCD.CAT
  extracting WINXP/IBMTPLCD.ICM
  extracting WINXP/IBMTPLCD.INF

Using wine

If you use wine instead to unpack the "ThinkPad Monitor INF File" .exe file. The profiles for newer ThinkPads will be located in ~/.wine/drive_c/DRIVERS/WIN/MONITOR/.

For older ThinkPads a bunch of OS directories will be created in ~/.wine/drive_c/DRIVERS/WIN/MONITOR. It does not matter which OS directory you use, the ICM files are all the same.

Finding your colour profile

NOTE!
These instructions assume you used the cabextract method to obtain the files. If you used wine or a Windows machine all filesnames will be upper-case, and you will need to take that into account when executing the commands. e.g. tplcd.inf becomes TPLCD.INF

After unpacking the windows EXE you should find a bunch of ICM files and the tplcd.inf file (ibmtplcd.inf for older models) with a mapping of the LCD vendor to colour profile.

But first you need to know which LCD you have. Unfortunately xrandr does not provide the EISA vendor information, but monitor-edid from the monitor-edid RPM (on Fedora) does.

$ monitor-edid
EISA ID: LEN4022
Screen size: 28.6 cm x 21.4 cm (14.06 inches, aspect ratio 4/3 = 1.34)
Gamma: 2.2
Digital signal

	# Monitor preferred modeline (60.0 Hz vsync, 64.0 kHz hsync, ratio 4/3, 124 dpi)
	ModeLine "1400x1050" 108 1400 1448 1560 1688 1050 1051 1054 1066 -hsync -vsync

	# Monitor preferred modeline (50.0 Hz vsync, 53.3 kHz hsync, ratio 4/3, 124 dpi)
	ModeLine "1400x1050" 89.97 1400 1448 1560 1688 1050 1051 1054 1066 -hsync -vsync

As you can see from the above, I have a LEN4022. If I then look at the INF file

$ grep -i LEN4022 tplcd.inf
%TPSXGAP%   = TPLCDSXGAP.Install,    Monitor\LEN4022   ; 14"   SXGA+     TFT               1400x1050
%TPSXGAP%   = TPLCDSXGAP.Install.NTx86,    Monitor\LEN4022   ; 14"   SXGA+     TFT               1400x1050
%TPSXGAP%   = TPLCDSXGAP.Install,    Monitor\LEN4022   ; 14"   SXGA+     TFT               1400x1050

You will see this maps to TPLCDSXGAP

We now need to find what colour profile that maps to.

$ grep -A 2 \\[TPLCDSXGAP.Install] tplcd.inf
[TPLCDSXGAP.Install]                   ; SXGA+ 1400x1050
DelReg=DEL_CURRENT_REG
AddReg=1400, DPMS, ICM

As you can see on the last line, it refers to a ICM colour profile. Now to finally find out which file we need to use

$ grep  -A 1 \\[ICM] tplcd.inf
[ICM]
HKR,,ICMProfile,0,"TPLCD.icm"

As you can see above the ICM colour profile, maps to the TPLCD.icm file (the actually filename is tplcd.icm), so that is the file I need to load in gnome-color-manager for my ThinkPad LCD.

Recent ThinkPads

Download "ThinkPad Monitor INF File"

Supported ThinkPads

Older ThinkPads

Download "ThinkPad Monitor File"

Supported ThinkPads

Footnotes

  1. There are actually four paths extracted from the "ThinkPad Monitor INF File" for older ThinkPad models: ./WIN98, ./WINME, ./WIN2000, ./WINXP, but the IBMTPLCD.INF file in each is essentially identical--any of them will work for the purposes of this article.