19 Jun

Note: this is the fourth part of a multi-part post. Click here for the first post in this series.

We are now ready to read the charts created by targen, the final step before the actual generation of the printer profile! Here the process varies slightly based on the spectro being used. We use a Color Munki, so our examples will be specific to that, but the man page for chartread is pretty explanative.

On a Mac, due to the manner in which the X-Rite software drivers are installed, there are a couple of steps necessary for chartread to be able to connect to the Munki. The first step consists in turning off the ColorMunki daemon, so that it won’t grab the port to which the spectro is connected. This is easily achieved by opening the System Preferences dialog from the Apple menu and selecting the “X-Rite Devices” icon in the “Other” pane. You may get a message saying that System Preference needs to close and restart to access X-Rite Devices, go ahead and say OK. You will get a dialog like the one shown below (note: if your ColorMunki is connected it will show serial # and calibration status also).

X-Rite services dialog


The picture shows the daemon in the proper state for chartread. If yours is On, uncheck the box highlighted in blue, and that’s it. Go ahead and close this dialog. If you want to use the ColorMunki software again, make sure to visit this dialog and turn the Daemon on, or you’ll be unable to connect to the spectro.

The other catch in using the ColorMunki with chartread is the need to execute the chartread command as root, due to the permissions on the ColorMunki driver. This could be changed (a quick Google search will get you the instructions to do so), but I never bothered to. Instead, I use the sudo command to execute the chartread program with root privileges.


This is the syntax for launching chartread suing sudo:


sudo chartread -v -H -B -T0.4 printer_paper_target_name


When you issue the above command in the terminal window, the computer will ask for the administrator password, and will proceed to execute the command after ‘sudo’ with root privileges. Note that sudo retains the password for five minutes, so if you reissue another sudo command within five minutes you will not be asked for your administrator password again. Sudo is a powerful command, make sure to use it only when you know exactly what you are attempting to do!


Here are the options for chartread that I normally use:


Option Explanation
-v Verbose mode (I like to know what is going on)
-H High resolution mode
-B Disable auto bi-directional strip recognition. I like to read my charts in a consistent direction, and this switch minimizes the possibility for errors. When using this switch, always start the reading of a strip from the patch closest to the strip alpha ID (I.e.: A, B, C etc)
-T0.4 Sets the tolerance ratio used to accept or reject a strip reading. 0.4 is pretty tight, but it ensures that any strip reading with inconsistent data is promptly rejected by chartread (it could happen if you jar the spectro during a swipe, or if you have misalignment problems). A tight tolerance saves having to come back and re-read patches that end up with too large of an error during profile generation.
printer_paper_target_name This is the base name for the target being generated. Note that no extension is specified. Chartread will open the .ti2 file generated by printtarg and will create a .ti3 file for colprof


When using high density targets for the ColorMunki alignment is very important. I use a Logan Adapt-a-Rule (any sturdy ruler will do) to help me guide the spectro during each swipe.

The picture below shows the proper alignment of the ruler and the ColorMunki on one of my high density targets chart.



The ColorMunki width encompasses almost exactly 3 rows of patches. Here the Munki is positioned to read row F. The guide ruler is aligned with the bottom of the next row of patches (G in this case). Also, note that the mini USB connector is centered over the row being read. This guarantees that the sensor is centered on the target row, and ensures flawless capture each time.


At this point, after undergoing the usual ColorMunki calibration routine, chartread should be prompting you to read the first target row. Position the guide ruler as above, and the center of the Colormunki over the white space between the row label and the first patch. Depress the ColorMunki button and swipe the spectro over the row of patches in a smooth and even stroke. I normally take between two and three seconds to swipe each row. Make sure to apply a smooth pressure, using minimal down force. The ColorMunky has two tiny black rubber pads near the sensor opening, and those tend to catch (especially on glossy paper) and cause a jarring and uneven motion. Mine eventually fell off, and I have not replaced them, but if you want to keep them in place (they are useful when doing spot reads) be sure to be gentle in your swipes!


After each row chartread gives you the option to accept or re-read – If the swipe was successful accept it and move on to the next row. If an error is flagged simply re-read the stripe. After reading all of the charts, chartread will pause for a short time and then write a .ti3 file to your working directory.


Congratulations, you have completed the most tedious phase of profile generation, and you are now ready to create your first custom profile with ArgyllCMS!

5 thoughts on “Printer profiling for the fine art photographer – Part 4”

  1. Wonderfull step-by-step tutorial, I love that. Well explained and in my opinion easy to follow. Thanks for that! I am going to try it out.

    Are you intending to write and explain the very last step of creating the .ICC profile based on the created .ti3 file with ArgyllCMS?


  2. Hello Stefan,
    Thanks for the kind comments! I will post the last section soon (got busy with work and slacked up a bit…) Glad to hear that my articles were helpful to you, and I hope you’ll enjoy ArgyllCMS!


  3. Hello Stefano,

    apprechiate your quick answer!
    I followed the steps so far – everything just worked fine, though applied for an i1 Pro spectro! Just needed to modify the respective sommand switches for creating the right target ( -ii1 instead of -iCM ).

    Would you – for the impatient of us – just post the command sequence of the next step(s) to get the .ICC out of the scan data (.it3 file) Of course without explanation of the command switches. In the meanwhile anybody interested can check them in the online documentation of ArgyllCMS.

    Thank you and good luck for your work!


  4. Stefan,

    here is the command line I use for generating the .icc file: colprof -v -qh -i D50 -o 1931_2 -S AdobeRGB1998.icc -cmt -dpp -DPROFILE_NAME -C “COPYRIGHT_STRING” Printer_Paper_Target_name

    the -q option sets the fit quality of the profile to the data read in the previous step. there is a higher option, -qu and you can use that also, at the cost of some significantly longer processing time. The string after -D is the name of the profile, and the -C command is optional, if you want to set a copyright string for your profile. Make sure you have a copy of AdobeRGB1998.icc in your working directory – colprof uses it to create the rendering intent tables.

    Try it out and let me know how it works for you!


%d bloggers like this: