Colour profile

From ThinkWiki
Revision as of 12:56, 15 December 2009 by Tonko (Talk | contribs) (need to make the grep case insensitive otherwise it might fail)
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 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
NOTE!
Unlike indicated, when using the cabextract method, the files will actually be saved with lower-case filenames

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

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.