Summary of Argyll CMS Changes since last release
For a complete
and more detailed list of changes, please see the log.txt file.
[V1.9.2 -> V2.0.0] 17th November 2017
- Added support for "pm" viewing condition (Print evaluation
with partial Mid-tone adaptation), and associated m: viewing
condition parameter. This is intended to address certain
situations involving the use of papers containing FWA/OBE
brighteners when viewed in an environment that has a very
noticeably warmer white point than the paper itself under the
- Added support for the X-Rite i1Studio instrument. Note that
you may have to un-install and re-install the system drivers on
MSWindows, or update the udev 55-Argyll.rules file on Linux.
- Slight improvement to i1d3 accuracy, by rounding the frequency
mode measurements up by 0.5.
- Returned input profile forced Absolute Colorimetric option
with -ua flag, after the -u option was changed in V1.5.0.
- Try and fix problem in triggering calibration when
ARGYLL_NOT_INTERACTIVE is set.
- Improve compatibility of txt2ti3, and added -D option to mark
output as Display but not Normalized to white.
- Modified collink to disable Video encoded in/out sync level
- Added support for custom Observer by using a .cmf file as an
argument to all tools taking an observer parameter.
- Added support for proposed CIE 2012 2 degree & 10 degree
observers, based on the CIE (2006) 2-deg LMS cone fundamentals.
- Fix problem with dispwin -E option not being shown in usage,
and only being applied when a calibration file is used.
- Added spotread -u option to display XYZ amd CIE 1976 Yuv
- Added XRGA conversion support to spec2cie, as well as better
support in chartread and txt2ti3 for tracking XRGA standard and
polarization filter use.
- Fix bug in spec2cie processing emissive .sp files.
- Fix problem with i1d3 running direct USB (i.e. Not via HID) on
- Fixed bug in render/timage -p.
- Changed spotread ambient readings (CCT, CRI, TLCI) to show CCT
delta E in 1960 Duv units and others in Delta E 2000.
- Added ARGYLL_UNTWIST_GAMUT_SURFACE environment variable, that
enables extra gamut clip surface processing that may improve the
smoothness of device links and B2A tables for poorly behaved
- Fixed bug introduced in new colorimetric nearest clipping code
in rspl/rev.c in V1.9.0 that caused colprof using some ink limit
settings (such as -L0) to crash.
- Fixed bug introduced in new colorimetric nearest clipping code
in rspl/rev.c in V1.9.0 that caused some (mainly XYZ clut)
profiles to clip badly, causing banding.
- Improved dispcal -R VideoLUT depth measurement algorithm
- Worked around latest OS X super slow opening serial port
problem (1.5 seconds to open a port!)
- Added ColorCheckerHalfPassport.cht file.
- Fixed bug in ChromeCast mDNS parsing that caused problems with
some devices with long names being detected.
- Now ignoring Chromecast-Audio and (.ca flags & 1) == 0
devices, and showing the friendly chromecast name if available.
- Wait longer to find more Chromecasts, even if we've found one.
- Fixed colprof bug when handling Display L*a*b* .ti3 data.
- Added Wacom i1d3 support.
- Changed dispwin to by default ignore Gnome colord, and use its
native ucmm for storage of display profiles, since colord
support for ArgyllCMS has proven unreliable. This can be
re-enabled by setting the ARGYLL_USE_COLORD environment variable
(i.e. to "true").
- Change X11 root window _ICC_PROFILE_xxx atom setting for
Xrandr case to now match the Xinerama order, so that
ICC_PROFILE_xxx atoms match, irrespective of which extension
applications are using. This improves conformance to "ICC
Profiles in X Specification 0.2".
- Improved ucmm install/load/delete to better respect
systemlocal/user scopes, as well as eliminating need for profile
name on delete when ucmm is used.
- Improve fast serial port scan to better detect Lumagen
Radiance without upsetting it.
- Added ARGYLL_EXCLUDE_SERIAL_SCAN environment variable, to
allow suppression of fast serial port scan of sensitive devices.
[V1.9.1 -> V1.9.2] 17th October 2016
- Added CMYKOGB and CMYKRGB 7 channel ink preset, and made
targen more flexible in matching pre-conditioning profiles to
targen ink selection.
- Fix oeminst for OS X save location.
- Fix oeminst for OS X Spyder 4 CD calibration file location.
[V1.8.3 -> V1.9.1] 28th September 2016
- Improved robustness of ChromeCast discovery, and added some
- Improved robustness of targen ofps patch generation when using
less well behaved pre-conditioning profiles.
- Fixed oeminst so that it locates cdrom's in Linuxes latest
mount point of /run/media/$USER/.
- Fixed bug in i1pro2 driver, in which strip calibration would
fail if instrument had been first calibrated with
ARGYLL_DISABLE_I1PRO2_DRIVER set, and then calibrated with
- Added option to icclib to write Output profiles using 'chad'
tag if the ARGYLL_CREATE_DISPLAY_PROFILE_WITH_CHAD
environment variable is set. This is not recommended for normal
use, but may assist compatibility with other systems.
- Added JETI spectraval support, including Bluetooth access.
- Added support for the Klein K10 connecting via a serial port.
- Fixed bug in Colormunki Smile driver that causes crash on
Ubuntu 16.04.1 LTS.
- Modified "lp" intent to greatly reduce eliminate
Helmholtz-Kohlrausch appearance modelling.
- Fixed problem with targen -g, in that the corresponding XYZ
values had double the power applied, rather than none. This was
causing problems with printtarg spacer colors.
- Extensive re-write of colorimetric nearest clipping code in
rspl/rev.c to restore precision that was lost in the speedups
made in V1.0.0. The nnrev setup now takes a lot longer with
high resolution CMYK profiles though. This corrects a
"green becoming too yellow" problem for mapping from ProPhoto
space with some RGB devices.
- Change dispwin to properly set X11 DirectColor and take
account of TrueColor Colormap. This fixes problem with
NVidia linux driver 364.12 exposing a VideoLUT depth that is
different from the frame buffer depth.
- Change icclib to automatically repair icmTextDescription
strings that have an allocation that is longer than their size.
- Added i1Pro Lamp Drift test and fix functions to spotread (-Y
- Change colprof so that -s -S will accept general compression
percentage as an alternative to a source colorspace/image gamut.
- Added optional conversion from native Gretag-MacBeth &
X-Rite reflective calibration standards to/from XRGA.
- Changed OS X GUI support code so as not to switch to "interact
with the Dock" mode until actual GUI element is to be displayed.
This prevents batch commands with optional GUI elements from
blocking normal GUI interactions.
- Re-jigged OS X UI code to use the main thread to avoid window
creation timing issues and a warning backtrace on OS X 10.11.
- Added CMP_Digital_Target-7.cht
- Fix spec2cie to cope with .ti3 files that are missing device
values, so that it can process a wider range of input CIE
- Changed implementation of ARGYLL_NOT_INTERACTIVE on MSWin to
make it more reliable when operated progromatically.
- Fixed chartread so that if you are reading patch by patch, the
location strings can be arbitrary (i.e. they don't have to
conform to an alpha/num strip/patch pattern.)
- Added support for Sencore ColorPro V, IV & III
colorimeters (based on Sequel Chroma colorimeter.).
[V1.8.2 -> V1.8.3] 26th October 2015
- Added SpyderCheckr24 scaning .cht and .cie files.
- Fixed USB problem with i1pro (Rev B & D ?), where
communications would occasionally break down on fast systems.
- Added another fixed display intergration time to i1pro
non-adaptive emission mode to cope with higher brightness
- Added workaround for i1d3 Rev. B status code 0x83 on very low
- Fixed minor bug in i1d3.c that truncated serial number string.
(Thanks to Mikael Sterner).
- Fixed bug in Klein K10 driver - adaptive measurement wasn't
properly using all the extra measurements.
- Improved Klein K10 driver to be more robust when lights off
command returns bogus error codes, or causes a cascade of bogus
- Added workaround for OS X 10.9+ "App Nap" problem.
- Added maximum sensor frequency check for Spyder & i1d3
drivers, so that erronious readings due to excessive brightness
can't be missed.
- Changed chartread so that it doesn't warn of a possible wrong
strip being read, nor allows bi-directional strip reading, if
"printtarg -r" was used. A warning will be issued if "printtarg
-r" was used, and "chartread -B" wasn't used.
- Fixed collink for eeColor Full range RGB to use output curve
("second" 1D curves) to compensate for cLUT being wired for 1.0
output from 1.0 input.
- Added "lp" gamut mapping intent :- Luminance Preserving
Perceptual, for Photographers concerned with maintaining tonal
- Fixed bugs in image specific gamut mapping that were degrading
the accuracy of the result.
- Re-wrote gamut smoothing code, and re-tuned it to behave
similarly to the V1.8.2 release.
- Changed default viewing condition glare to 5%, to smooth out
shadow tone curve.
- Reduced the level of Helmholtz-Kohlrausch effect in CIECAM02
implementation in the light of visual experiments.
[V1.8.1 -> V1.8.2] 7th September 2015
- Fixed endless loop bug in alternate calibration selectors
[V1.8.0 -> V1.8.1] 4th September 2015
- Fixed bug in "spec2cie -n" wrong field indexes were being
- Fixed colorimeter calibration selectors to add in alternate
selectors if the letters are free.
[V1.7.0 -> V1.8.0] 20th August 2015
- Added support for the Image Engineering EX1 spectroradiometer.
- Added support for the SwatchMate Cube reflective colorimeter,
with improved accuracy.
- Added Added Television Lighting Consistency Index (EBU
TLCI-2012 Qa) to spotread and specplot output.
- Added R9 value to CRI value in spotread and specplot output.
- Added workaround for JETI specbos having been calibrated by a
3rd party, and its calibrated range being out of sync with its
- Added support for "EMISINPUT" type .ti3 file.
- Build using OpenSSL rather than axTLS if it is built on Linux.
- Fixed stack space problem in OS X UI programs by expanding
main thread proxy to have 8MB instead of the default 512K.
- Updated built in libtiff to V4.0.4beta.
- Changed CGATS format to not emit unknown keyword declaration
("KEYWORD") by default.
- Added inst_calc_cond_mask to inst.h to allow for flags in
calibration conditions. A consequence of this is that calc needs
to be masked with this when comparing against a specific
condition, and the inst_calc_optional_flag should be cleared if
it is set, before callint inst->calibrate() if the user wants
to proceed with a particular calibration.
- Fixed bug with dispcal -e N
- Fixed bug in xicclu -fg and -kp
- Added dispcal -x x option to allow reading a chart and
manually entering the XYZ values.
- Fix spyder4 & 5 bug where some display types were set as
refresh when they shouldn't be.
- Fix collink "Warning :- RGB black hack trigger more than
once!" when -b is used with input video encoding (-e).
- Changed colprof so that the default ICC description is the
base filename rather than the whole file path.
- Fix technology type and display type selector
"uniqueification" bug that shows up in "ccxxmake -??".
- Add OEM field to ccmx and ccss files to mark files that have
been installed from OEM disk, so that custom ccmx & ccss
files can be given suggested selector letter priority (+
- Tweak CGATS write format to avoid scientific notation until
the numbers are bigger and smaller (i.e until e6 and e-6 are
[V1.6.3 -> V1.7.0] 1st May 2015
- Improved gamut mapping to reduce unnecessary changes to less
saturated colors such as skin tones.
- Add support for DataColor Spyder 5.
- Add support for ColorHug2 colorimeter.
- Add support for Klein K10-A colorimeter.
- Added Google ChromeCast as a test patch generator for Video
- Added ls2ti3 tool to convert LightSpace .bcs files to .ti3.
- Added IRIDAS .cube 3DLut format support to collink.
- Add X3D and X3DOM support as an alternative to VRML, and make
X3DOM the default.
- Add better cross compatibility with non-Argyll ICC profiles
using ArgyllCMS 'arts' tag to mark 'wtpt' Absolute Colorimetric
chromaticity transform, as well as implement proper absolute
colorimetric intent for Display profiles use the 'chad' tag.
Note that the standard ICC profiles provided by ArgyllCMS in the
ref directory (such as sRGB etc.) now include an 'arts' tag.
- Ignore any patches that have zero values for creating Display
profiles, unless they are for device zero.
- Fix various instrument communications problems for JETI
specbos, DTP20, DTP92 & DTP94.
- Fix gestaltSystemVersion warning on OS X 10.10.
- Fix very major bug in illumread. It wasn't actually working at
all since V1.4.0.
- Added collink -I[gG][:p.p]:x.x options that allows an output
offset gamma curve be targetted instead of BT1886.
- Added dispcal and collink -b black point hack. This forces the
input zero to map to the output zero for well behaved displays,
reducing dependence on the instrument accuracy for a very dark
- Added preset list of display techologies to select from in
- Added a -P prune option to profcheck, that creates a .ti3 file
pruned of any patches that have a delta E fit error greater than
a threshold. This may be of use in eliminating bad reading
values from a measurement set.
- Added histogram plot option -h to both profcheck and verify.
- Added a dispread & fakeread -Z option to set the number of
bits to quantize the test values to.
- Fixed bug in targen - the -V dark emphasis wasn't being
applied to OFPS generated points.
- Make sure that if an instrument display reading is interrupted
by a forced calibration, that the user is asked to place it back
on the display before resuming the measurements.
[V1.6.2 -> V1.6.3] 26th January 2014
- Added ProPhoto.icm and ProPhotoLin.icm to ref profiles.
- Fix bug in xicclu -py conversion.
- Added code to minimize ICC rounding error on matrix profile
white point accuracy. Re-generated all reference profiles with
- Changed i1d3 driver to completely ignore any EEPROM checksum
errors for non "A-01" rev. instruments.
- Made transplot handle RGB->RGB device link.
- Removed colprof -y option. Use "profcheck -v2" instead, as it
is more developed.
- Fixed bug in dispcal - it was not using the final measurement
pass to update the calibration curves.
- Fixed bug in spotread, dispcal & dispread for CCSS capable
instruments where refresh display types was being ignored if a
custom observer was used, and/or the custom observer as being
ignored, and/or a CCMX was being ignored. Changed instlib
semantics for inst_opt_set_ccss_obs :- this is now set
immediately, and applied also to any subsequent set_disptype()
- Renamed verify to colverify to avoid clash with MSWin program
of the same name. Made it print the patch location for -v2 if it
is present in the file.
- Changed targen to ensure that -V and -p options effects are
reflected in the resulting expected CIE values of the .ti1 file.
- Changed targen so that -V parameter also affects single
channel, grey wedge, grid & body centered grid point
- Changed colprof to deal with variable grid distribution in a
more neuanced way, to reduce overshoot artifacts when the -V
parameter is used.
- Changed colprof to used a power_like function for the grid
distribution shape from the -V parameter, so as to avoid issues
with a power curve infinte slope near zero.
- Changed colprof to used a scaled down value of the targen -V
parameter as the default for its -V parameter. Documentation now
recommends more moderate values for -V.
- Added a special case to collink for RGB video input encoding
to (attempt) to fine tune the black point to compensate for it
(probably) not falling on a cLUT grid point. & out encoding
- Tweaked dispcal to try and improve accuracy of black point
- Switch dispread to use NoClamp readings, so that average black
point value is not biased.
- Fixed bug introduced into 1.6.2 oeminst that prevents .ccss
files being installed.
[V1.6.1 -> V1.6.2] 18th November 2013
- Added "dark region emphasis" -V parameter to targen and
colprof, in an attempt to improve the accuracy of display
profiles intended for use with video. This should improve the
subsequent black point accuracy of the profile.
- Fixed bug and tweaked dispcal black point optimization to err
on the black side. Added -v3 for even more debugging
- Changed i1d3 driver to be more forgiving of EEProm checksum
calculation, so that it works with the latest release "A-02"
rev. i1 display pro & colormunki display instruments,
as well as improving its robustness in the face of errors.
- Fixed race condition bug in OS X HID driver. This fixes
occassional problem with i1d3, and also solves problem with the
ColorHug on OS X.
- Fixed problem with TV encoded output and dispread -E -k/-K.
- Fixed minor bug in DE94 in icclib.
- Fixed major bug in illumread - result was being corrupted.
- Fixed "edges don't match" bug in printarg when -iCM -h -s/-S
- Fix bug in -H flag in ccxxmake, chartread, dispcal, dispread,
illumread & spotread so that it works once again.
[V1.6.0 -> V1.6.1] 30th September 2013
- Fix bug in "average -m"
- Fix oeminst to work with a wider range of i1d3 install files.
- Fix ColorMunki reflective measurement accuracy, particularly
for reflective readings. This has been poor since V1.5
- Fix bug in using DTP94 on Apple OS X introduced in V1.5
- Fix MadVR connect code to look for appropriate 32 bit or 64
- Improve MSWin system driver installation by creating valid
ArgyllCMS.cat file to match ArgyllCMS.inf. This eliminates the
need to "Disable Driver Signature Enforcement", as well as
allowing installation on MSWin 8.1.
[V1.5.1 -> V1.6.0] 16th August 2013
- Added support for JETI specbos 1211 and 1201 (Thanks
to JETI for their support!)
- Added Video profiling & 3dLut creation support for eeColor
and MadVR. See video section in tutorial for pointers to
relevant changes to tools. This includes support for MadTPG +
various Video standard ICC profiles + verification workflow.
- Linux profile installation will use colord if
libcolordcompat.so is present on system.
- Fix ColorHug driver so that it is backwards compatible
with FW 1.1.8
- Made sure that MSWin test colors are not color managed. This
may affect Vista, Win7 and Win8.
- Changed spectro/dispwin.c so that null transform color
matching is used for displaying test patches on OS X >= 10.6.
This should fix calibrating/profiling secondary displays on >
OS X 10.6. Note that the 32 bit 10.4 binary will still have
problems on > OS X 10.6.
- Changed instlib API ambient XYZ and spectral units to
Lux. In previous versions of instlib they were Lux/pi.
- For those instruments that support it, made ambient readings
honor refresh mode measurements, to improve repeatability when
measuring regularly flickering light sources. (specbos, i1d3,
- Changed spotread -ew mode to be Bradford chromatic transform
rather than XYZ scaling, to better match Argyll ICC abs. vs.
- Added support to xicclu to lookup colors though CAL files,
both forward and backwards. Will also plot CAL file contents
- Added -Y R:rate option to spotread, dispcal, dispread &
ccxxmake to allow setting a chosen display refresh rate. This
can be used with the Colormunki display, as well as situations
in which refresh rate measurement is not reliable.
- By default printtarg will create PS and EPS files with a CUPS
job ticket to disable color management. Use the -U flag to
- Added display update delay calibration support to i1pro and
ColorMunki (just like i1disp3), to improve measurement times.
- Changed dispcal & dispread so that they wait up to 0.5
seconds when reading dark patches after light ones to allow for
display fall time. Added patch order optimization for
display patch sets in targen to minimize the extra time.
- Changed dispwin daemon loader mode option from -E to -X. Added
-E option to encode test patch colors in Video 16-235 range.
- Changed dispcal verify option from -E to -z. Added -E option
to encode test patch colors in Video 16-235 range.
- Added -E option to to dispread to encode test patch colors in
Video 16-235 range.
- Changed CIECAM02 Flare model to distinguish between Flare from
the image itself, and Glare from ambient light. This allows
scaling Glare with ambient automatically. Changed enumerated
viewing conditions for new Flare/Glare settings, changed all to
Flareless to improve dark image behavior, while retaining Glare
modelling. Tweaked brightness and ambient values.
- Improved i1pro hi-res mode to improve accuracy.
- Added Body Centered Cubic grid option to targen.
- Added -Yn flag to dispcal and dispread, which skips asking the
user to place the instrument on the measuring spot.
- Improve robustness of i1d3 display update measurement code.
- Added support for applying calibration curves in collink.
- Changed spotread so that it won't fall back to emissive spot
mode if an ambient reading is requested.
- Turned off B2A table clip map smoothing, as it seems to
introduce reversals for some data sets, and provides little
- Fixed crash in ucmm/ucmm.c when loading certain profiles using
dispwin (thanks to Torok Edwin).
- Fixed gamut mapping intent "rl" to really use relative L*a*b*
- Fix bug in cicam02 in V1.5.0 that causes some mapping problems
in the red for collink -ir or -ila.
- Changed cctiff so that it does lossless JPEG copy when there
is no color transformation. This makes it more useful for
embedding a profile.
- Fix xicclu so that it works with device links.
- Fixed bug in shaper/matrix profile curves that caused random
bumpy black behaviour (shaper curve optimization local minimum
- Don't add colorant tag to .tiff files in cctiff unless it is a
non-standard space, as Photoshop will barf on such files.
- Fix bug with Spyder not being able to break out of dispcal
- Fix bug in xicc/xicclu, -K flag not being recognised.
- Fix bug in xicc/xmatrix.c introduced in V1.5 that prevents
matrix only profiles from being created.
- libusb 1.0 is now deprecated in favor of native USB drivers.
[V1.5.0 -> V1.5.1] 8th March 2013
- Fix spectro/instlib.ksh and standalone instlib build.
- Turned off debug plot on using FWA.
- Changed link $(LINKFLAGS) location in link command line
Jambase to get latest gcc working.
- Fixed new bug in matrix display profile creation that causes
an inaccurate relative white point. This causes Photoshop to
barf on the profiles.
- Added -m option to printcal.
- Fix bug in webwin that causes crash.
[V1.4.0 -> V1.5.0] 1st March 2013
- Increased ease of selecting ISO 13655:2009 M0, M1 and M2
measurements using FWA comensation using any spectrometer that
can take non-UV filtered measurements. M0, M1 or M2 can now be
selected directly using the -f flag. [ArgyllCMS has been
supporting ISO 13655 M0, M1 & M2 well before the standard
was created, thanks to its FWA compensation feature.]
- Increased stability of i1d3 refresh display measurements by
increasing integration time, and tweaking crossover from
frequency to period measurement.
- Added i1pro Rev E (i1pro2) feature support. Uses RevE
measurement mode, and does wavelength calibration. Uses RevE
(internal) stray light reduction, and black level temperature
compensation. The only Rev E feature not currently supported is
U.V. measurement, which would improve the accuracy of FWA
compensation. Rev E driver can be disabled and the legacy driver
mode used by setting the ARGYLL_DISABLE_I1PRO2_DRIVER
- Changed i1pro adaptive mode to avoid high gain mode, so as to
give more consistent and longer integration times for low light
- Changed ColorMunki adaptive mode to avoid high gain mode, so
as to give more consistent and longer integration times for low
levels. Added black level temperature compensation.
- Added spotread interactive function 'f' to read out the
calibrate display refresh rate for instruments that have a
refresh display mode, as well as an 'F' function that measures
the refresh rate for instruments that support a refresh rate
measurement function (colorimeters & spectrometers).
- The Display Type selection option -y in dispcal, dispread,
chartread, spotread & ccxxmake now lists installed CCSS and
CCMX files as a selection, rather than using the -X parameter.
CCMX and CCSS files now have extra fields to indicate the
refresh mode, an optional list of default UI selection
characters, and (for CCMX files) the base display type they
apply over (CB-n).
- Tweaked CIECAM02 to improve behavior for extreme blue colors,
so that the hue doesn't swing too far towards the cyan. This
helps in the clipping behavior from colorspaces such as
- Made the input profile cLUT extra neutral axis extrapolation
points the default for colprof -u and non -u profiles. Changed
-u algorithm to work similarly to -U scale :- it sets the scale
automatically. Relative colorimetric is therefore hue matched to
the white reference patch, Removed colprof -un, as it seems
unnecessary. Added colprof -uc, which clips cLUT colors over Y =
1 to white.
- The spyd2en, spyd4en and i1d3ccss tools have been combined
into, and replaced by a single oeminst tool.
- Fix problem with dispwin/dispcal/dispread -dweb and the latest
- Changed to a single ArgyllCMS.inf file for MSWin USB driver
installation. This eases installation of more than a single type
of instrument. Tested on MS Windows 8 and updated installation
- Dropped libusb for USB access, using native USB access
instead. MSWin uses the libusb-win32 kernel driver. Moved the
usb setup files from libusb1 to a new directory, usb.
- Added scanin support for ColorCheckerPassort.
- Updated OS X code to compile on 10.6 and 10.7 and (presumably)
10.8 (64 bit compatible API used when compiling on those
platforms, including Cocoa for the test patch window).
- Changed udev file usb/55-Argyll.rules to eliminate the test
for /lib/udev/udev-acl as a condition of using ACL_MANAGE, since
I'm informed that it is deprecated in recent distribution
releases (but who can tell, given the churn in the udev API).
- Deprecated -V flag (adaptive mode) in dispcal, dispread and
ccxxmake, since this is now the default. Flag will be ignored
with a warning. Added -ZA flag instead, to select non-adaptive
integration time mode.
- spotread -d flag is deprecated, and is now a synonym for the
-e flag, since it defaults to adaptive mode. Added -ZA flag
instead, to select non-adaptive integration time mode. Also
added -Zr and -ZR flags to allow testing of the refresh mode
- Migrated ArgyllCMS specific application runtime files (such as
instrument blobs, calibration state & calibration files) to
an "ArgyllCMS" sub-directory rather than the generic "color"
directory. On OS X also moved data files to below the
"Application Support" sub directory. The old locations will be
used as a fallback.
- Added support for Quato Silver Haze 3 OEM i1d3
- Added support for X-Rite ColorMunki Smile colorimeter.
- Enable the ColorHug by default, although it isn't advertised
as supported, since it doesn't yet work reliably on OS X.
Updated ColorHug PCI VID & PID
- For Spyder, emit a warning rather than error if the feature
bits are missing for calibration tables.
- Added automatic adjustment of patch reading delay for i1d3, so
that a more conservative (longer) default value (200 msec) can
be used without impacting i1d3 speed. Also added environment
variable ARGYLL_MIN_DISPLAY_UPDATE_DELAY_MS that can set a
different minimum update delay.
- Fixed a bug introduced in V1.3.6 that stops the dtp41 from
being initialized properly.
- Improved black level readings derived from spectral values by
allowing them to be -ve.
- The instlib API has been modified quite extensively to make it
more self contained and flexible, although the basic
architecture remains the same.
[V1.3.7 -> V1.4.0] 20th April 2012
- Modified spectro/ccxxmake so that a colorimeter can be used as
a reference to make ccmx files if two .ti3 files are used. Added
ref/ccxx.ti1 as convenient way of creating ccmx .ti3 files.
- Added dither/screening support for 8 bit output of render, and
then made it available in target/printtarg.
- Added JPEG file support to imdi/cctiff, xicc/tiffgamut and
xicc/extracticc. ICC profiles embedded in JPEG files can now be
used anywhere a TIFF file with embedded ICC profile can be used
as a source of an ICC profile.
- Fixed memory leaks in usbio.c, xdg_bds.c & conv.c
- Fixed double memory free bug in icc/icc.c when iccdump'ing a
profile that has a duplicate tag.
- Changed license of xicc/ccmx.[ch] to GPL2+.
- Made display calibration and profile making deal with displays
without hardware calibration support (VideoLUT support) more
graceful. Added tutorial section covering this.
- Added option to dispwin/dispcal/dispread/ccxxmake to redirect
the test patches to a web browser via a local web server. This
augments Argyll's existing local and remote display capability.
- Fixed bug in spectro/i1d3.c which results in NAN if a low
level readings drops to zero at a particular time. Improved
refresh rate calibration accuracy. Fixed bugs in adaptive
measurement logic that caused a channel to be pre-measured when
it shouldn't. This seems to noticeably improve repeatability on
- Fixed bug in ucmm/jcnf where it was failing to locate the
correct profile for a display.
- Fix bugs in ColorMunki Transmissive measurement mode
[V1.3.6 -> V1.3.7] 26th March 2012
- Fix regression in Spyder support - ccmx files were not being
handled (bug introduced in 1.3.6).
- Fix packaging problem - Spyder4 MSWin .inf file was missing.
- Change dispwin so that it will install a profile when there is
no access to the display VideoLUT if the profile has no vcgt.
[V1.3.5 -> V1.3.6] 19th March 2012
- Added Spyder4 support. Note the need for spyd4en for access to
a full range of Manufacturers calibrations. The Spyder4 can use
.ccss calibration files too. Speeded up all Spyder instrument
readings on brighter colors.
- Experimental ColorHug support is compiled in, but is disabled
unless the environment variable "ENABLE_COLORHUG" is set. The
ColorHug currently doesn't seem to work reliably across all
platforms ArgyllCMS supports.
- Changed and expanded display selection (-y flag) to be
instrument specific. This is to support the Spyder4 and
ColorHug, and adds a refresh display selection to the i1d3.
- Tweaked i1d3 integration times and added accurate refresh
period calibration to the refresh display mode. Refresh display
measurement times are double non-refresh displays. Improved i1d3
period measurement logic to improve measurement speed and
accuracy for dark colors.
- Changed i1disp measurement logic to try and make it more
robust against light to dark changes during a reading. This may
make it slightly less precise for LCD displays on bright colors
(equivalent now to Refresh display precision).
- Added a -V option to spotread to allow tracking reading
- Changed ccxxmake to create default .ccss with just RGBW,
and not to weight W. This may give better matching. Made
corresponding change to CCMX, giving the white patch 1/4
weighting of sum of all other patches.
- Fixed applycal so that it applies calibration to both A2B and
B2A tables, to preserve softproofing.
- Fixed timeout in SpectroScanT reference transmission
measurement. (Someone kindly donated me a SpectroScanT to test
- Made DTP94 driver ignore with a warning any
NEEDS_OFFSET_DRIFT_CAL_ERR after a full reset. It seems that
occasionally a few instruments do this, and X-Rite don't appear
to be prepared to treat this as an instrument fault.
- Added support for Datacolor SpyderCheckr (Thanks to Jos
- Improved the ability of spyd2en to cope with slightly
different setup.exe formats.
- Add support for NEC SpectraSensor Pro version of the i1d3.
[V1.3.4 -> V1.3.5] 24th October 2011
- Fix bug (crash) that affects ColorMunki design/photo display
measurement. This also stops it restoring a calibration (-N
- Add support for the OEM version of the i1d3.
- Fix bug that stopped ccxxmake being able to make ccmx's.
- Tweak gamut mapping to improve dark area mapping,
non-monotonic profile inversion, and contrast preservation to
- Kill i1ProfileTray.exe process if unable to open i1d3 on
- Fix DTP20 chart printing - TID was sometimes incomplete. This
shows up on a 4x6 chart.
[V1.3.3 -> V1.3.4] 31st August 2011
- Added support for the X-Rite i1 Display Pro and ColorMunki
Display colorimeters. As part of this, added support for CCSS
calibration files for the instruments and added CCSS support to
ccxxmake (renamed from ccmxmake). Provide new tool i1d3ccss to
translating and installing CCSS files as well as the
manufacturers calibration files for these instruments. Added
non-default observer support for these instruments too.
- Fix gamut code to ignore setting primary/secondary cusps that
are unlikely to be true. This avoids buggy gamut mapping
behavior for gamuts that are very small and odd shaped.
- Changed Linux USB code to avoid doing a
set_configuration if possible, since the USB driver does
this by default. This then avoids triggering a bug in the
Spyder2, which allows it to work on Linux version without the
reset_ep fix, and may also allow the Spyder to work better with
- Change printtarg for DTP20 to allow for variable patch size.
- Changed dummy display matrix table to have channels rotated
rather than R & G swapped, to make it more obvious.
- Added option to colprof to allow setting the default profile
- Enhanced spectro/fakeread so that it will process a .ti3 file
that has been renamed to .ti1.
- Fix bug in matrix input profile white point selection, + add
in slight neutral bias code used in clut profiles.
- New profcheck -I wasn't working - fix option parsing.
[V1.3.2 -> V1.3.3] 13th May 2011
- Fixed compiler dependant bug in Eye-One pro and (possibly)
Munki high res. spectral wavelength calculation.
- Add support for install variables DESTDIR and PREFIX in
Jamtop. These can be set on the command line using "jam -s"
- Added targen -N parameter to allow adjustment of neutral axis
patch density emphasis, as well as increasing the default. This
should improve the result without needing to add explicit grey
- Added spectro/instlib.ksh script to assemble all the files
needed for a standalone instrument library. Changed licence to
GPLv2 for the files included in the instlib.zip file that is
thus created. See spectro/instlib.txt for more details.
- Fix Jambase so that recent MingW compilers don't need extra
- Change Linux serial code to test ports using O_NONBLOCK
- Modify xspect & illumread to improve realism of UV
- Fixed profile/txt2ti3 so that a sample name that looks like an
integer is treated as text. (Fixes problem with latest
- Added LCh option to spotread.
- Fixed numerical issue in scanin/scanrd.c, where large input
rasters would cause fitting to fail.
- Modified colprof input chart white patch detection to slightly
favour patches that are close to D50 neutral.
- Increase the default XYZ PCS A2B profile default smoothness.
- Improved cLUT input -u black & white point
- Improved black point determination for devices that have
extremely narrow gamuts doe to the use of custom inks.
- Added -Z option to colprof, to allow setting ICC attribute
- Fix CIECAM02 to better match forward and backwards, to fix
perceptual table white point.
- Add code to override X-Rite's new OS X drivers for ColorMunki
and EyeOne. Note new installation instructions
- Added -R flag to colprof, which restricts the range of the
white, black for better compatibility with other programs.
- Fixed typo bug that prevented flash measurement mode from
- Replaced spectro/average with a new version that is more
- Fixed bug in printcal not working with spectral only files.
- Added extra verbose output to printcal in which it computes an
ideal power-like value to apply to the test chart values in
- Modify the way that XYZ cLUT B2A tables are indexed, so that
the white point is at the top corner of the grid.This should
solve Photoshop CS4/CS5 complaining that XYZ LUT profiles are
- Added option in xicc/xicclu to plot an arbitrary slice.
- Expand the number of i1 Display OEM devices that can be used.
- Made some changes to help compile on FreeBSD.
- Added another intent, "pa", Perceptual Appearance, which is
the same as perceptual except that the grey axes are not forced
into alignment, allowing the appearance parameters to have full
affect, including altering the chromatic mapping.
- Fixed bug in txt2ti3 - it wasn't creating an iRGB colorspace
file for output device RGB files, causing warnings warnings and
failures when mixed with other iRGB tool sequences.
- Added pathological case fix for target/ofps where the ink
limit == di-2.
- targen was failing to proceed when fixed points happened to be
numerically just over the total ink limit.
- Added more navigation options for chartread patch by patch
- Fixed bug in "chartread -r -H" that caused resume of
i1Pro high res to fail with "The resumed spectral type seems to
- Modified profcheck so that it prints patch location if it is
present in the .ti3 file.
- Changed dispcal and dispread -K option to -J. Added -K option
to dispcal as an alternate way of profiling a calibrated
display, and also added a -K option to dispcal.
- Increased ColorMunki emissive auto scaling target "over"
margin from 5% to 10% to allow more room for instrument drift
- Fix bug in winusb + i1Display, where dark CRT
[V1.3.1 -> V1.3.2] 4th November 2010
- Turn off debugging that was accidentally left on in FWA code.
Add gcc 3.3 PPC optimizer bug workaround to FWA code in
- Change shaper/matrix profile back to using power curve as 0th
order shape. Improve it with input & output offsets and
straight segment at zero. Make cLUT input -u black & white
point extrapolation use pure shaper curves with special tweaks.
- Increase dispcal native white target weighting from 10 to 50
to encourage white to be device 1.0,1.0,1.0 more strongly.
[V1.3.0 -> V1.3.1] 26th October 2010
- Fixed MSWIN Vista/Win7 problem where having Task Manager
running would stop display test window updating. Also fixed plot
library to avoid the same problem.
- Swapped dispwin -E and -D flags, to make -D debug consistent
- Changed the ARGYLL_NOT_INTERACTIVE mode so that all return and
line feed characters are ignored, so that they can be used
freely to flush stdin without triggering anything.
- Fixed endless loop problem with chartread -r -p on fully read
- Added -S option to chartread, that suppresses wrong strip and
unexpected value warnings.
- Fix dispcal and spotread so that color temperature takes into
account any non-standard observer (ie. the color temperature is
the closest point on the spectrum locus as determined by the
chosen observers interpretation of the Plancian or daylight
- Fix bug in libusb1 triggered on systems that support bulk
- Added 1964_10c observer to spectro/dispcal, to better allow
comparison to the default numbers.
- Added recognition for Huey built into Lenovo W series Laptops.
- Fixed chartread/dispsup/spotread etc. so that -N isn't fatal
if the instrument doesn't support it.
- Fixed dispcal to disable black & white drift tracking
during interactive adjustment.
- Added -s option to ccmxmake to allow the number of test
patches to be set.
[V1.2.0 -> V1.3.0] 8th September 2010
- Added option to dispcal
and dispread that attempts to counteract instrument black drift
and display white drift (-I option). This may help with
instruments that haven't properly acclimatised to the
measurement location, and LCD displays that also take some time
to stabilise. The is a short discussion here.
- Added option to dispcal
to allow specifying a non 1931 2 degree observer if a
spectrometer is being used.
- Added new utility spectro/ccmxmake,
which makes Colorimeter Correction Matrices for a particular
Colorimeter + Display combination, using a Spectrometer as a
reference. The resulting .ccmx
file can then be used with spotread/dispcal/dispread
(-X option) to improve the accuracy of the colorimeter on
that particular display. See a discussion here and here.
- Fixed bug in spotread's handling of emissive measurements. If
the XYZ was computed from spectral, it was using a D50 white
instead of no white reference.
- Fixed bug in i1pro normal resolution wavelength calibration,
introduced in V1.2.0.
- Changed libusb V1.0 name to libusb-1.0A, so as not to clash
with any official but different libusb V1.0 installation. [This
may necessitate re-installing device drivers on MSWin.]
- Added support for HP DreamColor version of the i1 display.
- Fix problem with ARGYLL_NOT_INTERACTIVE - reading from
instruments was not actually possible, because polling for input
- Adjust ColorMunki dark threshold to reduce misread reports.
Add inconsistent data to debug output. Fix bug in adaptive mode
- the integration time was sometimes too short. Set
adaptive emissive target at 95% to allow a little more margin to
- Fix problem with ColorMunki reporting erroneous inconsistent
measurement errors. This shows up on display calibration.
- Fix some minor compiler warnings.
- Added direction indicators to xy values in dispcal
interactive monitor adjustments.
- Fix bug in CIECAM02 viewing condition settings :- the
enumerated conditions after "mt" are displaced by 1. (ie. "mt"
is really "pc", "mb" is "mt", "md" is "mb" etc.) Added option
-c:sn for auto surround from the Lv parameter (-c:l).
- Add option to illumread to average several readings. Fixed bug
in the way illumread displays available instruments.
[V1.1.1 -> V1.2.0] 30 July 2010
- Re-worked gamut mapping to improve perceptual intent
saturation levels, as well as improve highlight and shadow
contrast. Added fine tuning to improve both smoothness and the
precision with which the source is mapped to the destination.
- Added illumread, which allows measuring an illuminant and
estimating its UV content, for better accuracy with FWA
- Use a modified/forked version of libusb V1.0, that supports
Win2K (libusb0.sys) back end by default. Supports 64 but MSWin
using a combination of WinUSB.sys and ptlibusb0.sys. [ The HCFR
does not work on Win 64 bit though, due to its buggy USB
implementation. ] NOTE that the included version of Libusb V1
has been carefully tested with all supported instruments on all
supported platforms, and includes many bug fixes needed
for correct functioning. While bug fixes have been fed upstream,
not all have been adopted. In particular there is a nasty race
condition that has not, and may never be fixed upstream, as well
as missing critical functionality (clearep()).
- Modified colprof -p to allow different abstract profiles to be
applied for each intent.
- Added -I option (imitation) to printcal, so that an existing
devices response can be set as a target.
- Increase target/ofps.c vertex intersection retries from 10 to
40 to give it a better chance of working with difficult
- Fixed bug in plot that shows up on XP+, where the window isn't
dismissed by the first keystroke, but only after it has been
moved or resized.
- Changed CMYK black point to be natural, rather than the
darkest point in the same direction and K only. This may wreck K
only to black point matching, but it will stop printers with
funny colored K ink from messing up the black point.
- Make Lacie Blue Eye colorimeter appear as an i1display.
- Improved i1pro matching to Original Manufacturers Driver (see
- Improved i1pro/ColorMunki patch recognition for better
- Fixed bug in ColorMunki driver scan mode calibration when
instrument is more sensitive than usual.
- Added EV calculation to spotread -a
[V1.1.0 -> V1.1.1] 21 February 2010
- Renamed the following tools:
kodak2cgats -> kodak2ti3
logo2cgats -> txt2ti3
- Modified black curve to make sure that smoothed curve meets
target level at boundaries.
- Added -M option to printtarg, for the case where the TIFF file
is to include the margin.
- Fixed several build bugs in imdi code related to 64 bits.
- Fixed profile/colprof -u so that it is applied to matrix
- Changed tiffgamut to use one pass gamut hull finding and
modified the smoothing so as to end up with a more closely
- Fixed bug in input matrix profiles introduced by the XYZ cLUT
display matrix profile change, where the correct white and black
point weren't being written.
- Added matrix only/linear algorithm option to profile/colprof,
for raw camera profiling.
- Modified libusb/55-Argyll.rules for better compatibility with
systems that have ACL installed but no ConsoleKit. Also set
ID_VENDOR and ID_MODEL using. usb-db.
- Modified target/targen to cope better with case where adding
nodes fails to determine vertex positions a lot of the time,
causing extreme slowdown.
- Fixed colprof so that the per channel input curves for XYZ PCS
B2A tables are actually scaled correctly.
- Changed link/collink to apply Y to L* curve if the input or
output space is XYZ. Fixed the Y to L* scaling to make sure it
only apples to XYZ space, and that the L* non-linearisation
still applies to Y like device spaces.
- Modified scanin so that it ignores any alpha channels in the
input .tiff file.
- Changed printcal so that it will create .AMP file with more
than 4 channels. Also fixed up plotting to plot up to 10
- Changed dispcal and dispread so that a request for projector
mode falls back to display mode if the instrument doesn't
support a projector mode.
- Updated ref/CMP_Digital_Target-3.cht as it seems that the
reference chart has columns labelled "2A - 2D" rather than the
"AA - AD" that is actually printed on the chart...
- Altered xpsect FWA code to reduce overshoot artefacts due to
[V1.0.4 -> V1.1.0] 17th January 2010
- Spyder3 and ColorMunki Design, Photo and Create instrument
- Added a complete printer calibration system. This can work
either with a print system that supports per channel print
calibration curves, or purely using ICC profiling mechanisms.
- Default targen (OFPS) test point distribution has been
re-written to generate test points on the gamut surface, refine
the point locations when using a guide profile, and use a better
error estimate model to determine the test point locations.
- Changed chartread strip reading mode to allow navigating about
the strips, saving a partially read chart, and resuming a
partially read chart.
- Improved and re-tuned gamut mapping. This is noticeably
smoother and better retains source image detail.
- Re-tuned the cLUT profile creation smoothness vs. accuracy.
- Fixed viewgam so that the number of gamuts that can be viewed
is unlimited. Also added error when computing intersecting
volume if the two gamuts are incompatible.
- Improved CMYK black generation control and smoothness near the
- Improved collink special black and colorant handling so that
the gamut mapping is consistent with the special black and
- Changed profile/colprof to generate matrix tags for Display
XYZ PCS cLUT profiles, to improve compatibility with other CMMs.
By default (-ax) the matrix tags will be a dummy transform that
swaps red and green, while using -aX will create real matrix
- Added -V option to dispcal and dispread to allow use of i1pro
adaptive mode to give better low level consistency.
- Changed dispcal to default to -f 1.0 (assume black is all
output offset) to make it work in more sympathy to a typical
display response. Also changed default gamma to 2.4 for OS X
- Improved X11 XRandR CRTC detection.
- Added spotread option to save spectral reading of an
illuminant to a .sp file.
- Added Color Rendering Index (Ra) to spotread measurement
- Added i1pro & ColorMunki flash measurement
- Improve reliability of detecting backwards read i1pro/Munki
- Fixed bug in i1pro driver that subtly affected accuracy.
- Modified xicc/cam02 to clip the blue to avoid crazy behavior
outside the spectrum locus.
- Simplified the Linux installation instructions, particularly
with regard to USB and serial permissions.
- Added working MSWindows 64 bit libusb drivers, which will work
on Vista 64 and MSWindows 7 64 bit. Because of Microsoft's
driver signing requirements though, they won't be usable unless
a driver code signing workaround is used.
- Changed printtarg so that the TIFF output has the paper margin
subtracted from it. This is so that the resulting TIFF can be
placed on that sized paper without clipping or scaling. Set the
margin to zero to get a TIFF that exactly fits into the
specified paper size
[V1.0.3 -> V1.0.4] 30th June 2009
- Modify icc/icclib to protect against integer overflow
exploits, and fixes to minor bugs. Bump icclib version to 2.11
to reflect this.
- Fix bug in spectro/hidio.c that can cause a crash (bus error)
on OS X for any program that accesses the instruments.
- Fix bug in xicc/xfit.c where too little memory was being
[V1.0.2 -> V1.0.3] 3rd September 2008
- Added multi-TIFF and popularity filtering to tiffgamut.
- Modified gamut mapping in colprof
and collink to be
consistent, and have higher perceptual intent saturation.
- Fixed timeout problem with the Eye-One Display colorimeter.
- Fix segmentation fault in dispread.
- Fix out of memory error in colprof
for systems with > 3Gig Ram.
- Add support for the Eye-One Monitor spectrometer.
- Added -L option to printtarg
to suppress the i1pro target holder clip margin.
- Fixed bug in dispcal
when using -a with -t
[V1.0.1 -> V1.0.2] 19th August 2008
Various bug fixes, the main ones being:
- Fixed some colprof performance
and memory usage issues.
- Fixed issues with Eye-One Pro Rev B timeouts.
- Added new option to collink -fk, that forces 000K input to K
- Added device target value quantization option to printtarg, as well as making
it default for TIFF output files.put files.
- Fixed leak that was affecting printtarg.
[V0.70 Beta 8 -> V1.0.0] 1st July 2008
Apart from numerous bug fixes and many minor feature additions and
improvements, the main changes to this version compared to the
previous one are:
As usual, a more detailed description of all changes is in the log.txt
file that accompanies the source code.
- Speedup in profile and device link generation (inversion
code), and better memory usage.
- Support for embedded profiles in TIFF files.
- Support for installing and uninstalling and loading of display
profiles for all operating systems, and a micro CMM system for
- Improved display calibration and profiling, including ambient
- X11 XRandR 1.2 support added.
- Raster test charts now supported, as well as PS and EPS.
- Guidance for installing on a wider range of systems.
- Fixed luminance and ambient calibration issues with various
- Renamed "profile" to "colprof", and "icclink" to "collink" to
avoid clashes that have arisen with other executable names.
- Streamlined source code build system, for much easier
- Installation archives now include a top directory, and
gzip/tar format for OS X and Linux.
- Added B2A table to input device LUT profiles by default.
[V0.60 -> V0.70 Beta 8]15th January 2008
- Added quick display ICC profile creation as part of
- Added support for the Huey, Spyder 2, DTP20, Eye-One Pro,
DTP22/Digital Swatchbook, Eye-One Display 1 and 2 instruments.
- Changed to GPL Version 3 license.
- Countless other bug fixes and feature enhancements.