ArgyllCMS is the preferred Color-Managment-System for Linux.
Short summary:
1) xset dpms 0 0 0 #disable energy-saving 2) dispcal -yl -qm -t6500 -G2.2 -F file #create calibration-file 3) dispwin file.cal #active calibration-file 4) dispread -yl -F -r #test calibration result (if bad, adjust step 2) --------------------------------------------------------------------------------------------- 5) targen -d3 -f1000 file #create RGB color test-values 6) dispread -k file.cal file #measure test-values 7) colprof -qm -as file #create profile 8) dispwin file.icc #activate profile in X
Attention: if you use more than one display, you have to choose the wanted one via the display-parameter “-d” (for help type: dispcal -h)
Terms:
*.cal | file, which includes the values to reach the calibration-state |
*.ti1 | file, which includes test-values |
*.ti3 | file, which includes test-values and the measured values |
*.icm, *.icc | file-extensions for profiles |
calibration | process to reach the desired calibration-state |
profiling | documentation, which colors are displayable and which calibration-data is needed for |
profile-types | matrix/shader-profile or LUT-based-profile (more accurate) |
Video-LUT | Video Lookup-Tables are software-filters located in the monitor-hardware, which contain correction values and which are processed before displaying the pixels |
Preparations:
1.) disable energy-saving functions (screensaver, standby and poweroff)
#permanent in configuration file (xorg.conf) Section "Monitor" Option "DPMS" "true" EndSection Section "ServerLayout" Option "StandbyTime" "0" Option "SuspendTime" "0" Option "OffTime" "0" EndSection
or
#interactivly via console
xset +dpms
xset dpms 0 0 0
#check the current configuration xset -q
2.) install argyllcms
apt-get install argyll
3.) install the required Spyder5-Pro firmware in argyllcms
#extract the firmware from the windows-setup-file oeminst -v Spyder-Setup-file.exe
4.) Warm up Monitor and Spyder5 (30 minutes)
Warm up the TFT monitor, because the brightness is temperature-dependent. Warm up the sensor lying on the monitor, because the dark-noise of the sensor is temperature-dependent. with cold TFT: Gamma=1.98, contrast=563:1, daylight-temperature=6608K with warm TFT: Gamma=2.20, contrast=637:1, daylight-temperature=6444K
Howto:
you can choose between 3 variants:
- Adjusting + Calibration
- Adjusting + Calibration + Profiling (can only create a matrix/shader-profile)
- only Profiling (can create matrix/shader- or LUT-based profiles, *.cal-file is recommended)
Working schema:
monitor | → | file.cal | → | file.ti1 | → | file.ti3 | → | file.icc | → | calibrated and profiled monitor |
(dispcal) | (targen) | (dispread) | (colprof) | (dispwin) |
A.) Adjusting + Calibration (duration: 2-3 hours for quality=medium)
it configures and calibrates your monitor to desired values:
- desired brightness (e.g. 200 cd/m²)
- desired white-point (e.g. 6500 K)
- desired response-curve (e.g. Gamma=2,2)
(Info: the default values are the actual monitor settings.)
#create the calibration file file.cal (v=verbose, yl=led-monitor, qm=quality medium, t6500=whitepoint, G2.2=Gamma-value, F=black background)
dispcal -v -yl -qm -t6500 -G2.2 -F file
(choose "checkall" --> "continue to calibration")
#activate the calibration file (=load it into the monitor LUT)
dispwin file.cal
Check the current monitor settings, run:
#with LUT (=enabled calibration) dispcal -v -F -r #without LUT (=disabled calibration) dispcal -v -F -R
It is important to check, because the resulting values are often not the desired one’s. So you have to return the calibration-step with adjusted desired values. For example:
desired “t=6500K and G=1.75” results in measured “t=6447K and G=2.20”
If your monitor drifts, you can update your calibration file: (Update-process is based of you old calibration file and takes less time than a new calibration)
dispcal -u file
B.) Adjusting + Calibration + Profiling
info: profiles contain the calibration file data in the vctg-flag (read argyllcms online documentation for details)
#create calibration file (file.cal) and matrix/shader-profile (file.icc) dispcal -v -yl -qm -o file #activate the profile (=loads the calibration data into the monitor LUT) dispwin file.icc
C.) only Profiling (duration: 1h for 1000 patches)
it is recommended, that you use a calibrated monitor to create your profile (=*.cal-file loaded into Video LUT)
#create test-values for your desired color-range (it creates the ti1-file, d3=video-rgb colorspace) targen -v -d3 -f1000 file #display the test-values and measure the monitor (it reads file.ti1-file, loads the file.cal and writes file.ti3-file) dispread -v -k file.cal file #create a matrix/shaper-profile (it reads file.ti3-file and writes file.icm) colprof -v -qm -as file #or create a LUT-based-profile (it reads file.ti3-file, swop.icm-file and writes file.icm) colprof -v -qm -S swop.icm -cpp -dmt file
Profile Installation:
#load calibration into LUT
dispwin file.cal
load the profile
dispwin file.icc
#(un)install profile as default profile
dispwin -I file.icm
dispwin -U file.icm
#load the calibration from installed default-profile
dispwin -L
#clear the Video-LUT (loads a linear LUT)
dispwin -c
#verify, if the loaded Video-LUT is the same as the specified cal-File
dispwin -V file.cal
#test, if Video-LUT is loadable
dispwin -r