Script for Printer Calibration on MacOS and Linux (free to use and modify)

knowing

Getting Fingers Dirty
Joined
Oct 24, 2025
Messages
58
Reaction score
9
Points
20
Printer Model
HP CLJ5550, Brother MFC-9460
Thank you for creating this script. I had an X-Rite i1 Studio (same device as the Colormunki) for a few years now and only ever used it for display calibration and profiling with DisplayCal as a GUI for Argyll.
I never got the printer calibration to work because the terminal commands for Argyll were a little bit too much for me to handle. But with your script I managed to create my first selfmade printer profile today.

For my first attempt I used menu option 1 and created a target from scratch. This worked perfectly fine.
My first issue was a bug in the ColorSync Utility. The option to print the image as a target is greyed out by default. A google search helped me to work around it. I had to go to the printers color settings and assign any color profile to the image. Then the ColorSync Utility allowed me to select the option to print it as a target. I printed the targets and let them dry. Then I tried to read the patches without any tool as a guide. This did not work very well. I got a lot of errors like "you probably read line AZ instead of A" or "too many patches recognized" or "not enough patches recognized" or "unexpectedly high deviation" (those weren't the exact words but it was somewhat similar). So this first attempt with 4 A4 sheets took me quite a long time and the result was not great.
But this was completely my fault because I wasn't used to handle the device properly.

For my second attempt I used the target you added in v 1.2.0 because you mentioned it in your release notes. I also remembered that a friend of mine 3D printed a guide for the i1 Studio for me. It is not the best quality but it made the reading process so much easier and faster and I got only a few error messages. The profile turned out pretty good.

The image on the top is printed with the default settings of my Epson ET8550, the middle one with the profile I got on my first try (better colors but posterization in the faces) and the one on the bottom is the final result. I am very happy with it. So thanks again!

Best regards

Awesome!

Thank you, itsab1989, for your feedback! You are the first to give some word about using the script. I really appreciate it!

Cheers,
K
 

knowing

Getting Fingers Dirty
Joined
Oct 24, 2025
Messages
58
Reaction score
9
Points
20
Printer Model
HP CLJ5550, Brother MFC-9460
Hi All,
I have again made major efforts to streamline the code and optimise usability in a new release of the Argyll_Printer_Profiler script (again, only Mac and Linux):

Overall: These changes significantly improve script reliability, user experience and maintainability.
  1. Improved User Experience: Better menus and clearer feedback
  2. Better Debugging: Daily logs with clear session separation
  3. Cleaner Operation: Proper process cleanup and exit
  4. Enhanced Reliability: Robust error handling and validation
  5. Quality: More polished and maintainable codebase
  6. Delta E Analysis Enhancement
    • Percentile Calculations: 99th, 98th, 95th, 90th percentile statistics
    • Patch Analysis: Count of patches below DE thresholds (1.0, 2.0, 3.0)
    • Range Statistics: Min/max values and range calculations
    • Outlier Identification: Enhanced delta E value processing
  7. Tips on how to increase accuracy of a profile
  8. ++
Hope there is less changes from now on, but feedback from one kind user (@itsab1989) gave some input to changes. Maybe someone could test on Linux? I do not have linux, so I "hope" everything works.

If anyone else would like to test, I would appreciate it. I have not found any comparable scripts for using ArgyllCMS like this one, so my hope is that many might appreciate it.

Cheers,
K
 
Last edited:

itsab1989

Newbie to Printing
Joined
Feb 11, 2026
Messages
3
Reaction score
2
Points
3
Printer Model
Epson ET 8550, Canon Pro 300
With the help of your tips I was able to further improve the profile. I'll add the sanity checks of the old and new one to this post. My test image from yesterday now shows some smoother gradients in some areas but I did not manage to take a photo that really shows that difference as it is subtle.
 

Attachments

  • ET8550-PlainPaper-i1Studio-Feb26-2_sanity_check.txt
    147.1 KB · Views: 9
  • first_profile_sanity_check.txt
    147.1 KB · Views: 11

knowing

Getting Fingers Dirty
Joined
Oct 24, 2025
Messages
58
Reaction score
9
Points
20
Printer Model
HP CLJ5550, Brother MFC-9460
With the help of your tips I was able to further improve the profile. I'll add the sanity checks of the old and new one to this post. My test image from yesterday now shows some smoother gradients in some areas but I did not manage to take a photo that really shows that difference as it is subtle.

Thanks for sharing :)
Really cool to see the script worked for you and your results, which I compare below. Great improvement.

Fist profile accuracyImproved accuracy
=== Delta E Range Analysis ===
Largest ΔE: 29.950411
Smallest ΔE: 0.019178

Percentile Values:
99th percentile: 2.967626
98th percentile: 2.461117
95th percentile: 1.609812
90th percentile: 1.216053

Patch Count Analysis:
Percent of patches with ΔE<1.0: 81,5%
Percent of patches with ΔE<2.0: 97,2%
Percent of patches with ΔE<3.0: 99,0%
================================

No of test patches = 1168
errors(CIEDE2000):
max. = 29.950411, avg. = 0.744856, RMS = 1.475006
=== Delta E Range Analysis ===
Largest ΔE: 2.612574
Smallest ΔE: 0.014280

Percentile Values:
99th percentile: 1.719744
98th percentile: 1.565304
95th percentile: 1.279826
90th percentile: 1.082401

Patch Count Analysis:
Percent of patches with ΔE<1.0: 87,2%
Percent of patches with ΔE<2.0: 99,7%
Percent of patches with ΔE<3.0: 100,0%
================================

No of test patches = 1168
errors(CIEDE2000):
max. = 2.612574, avg. = 0.588454, RMS = 0.692954

Cheers,
K
 

itsab1989

Newbie to Printing
Joined
Feb 11, 2026
Messages
3
Reaction score
2
Points
3
Printer Model
Epson ET 8550, Canon Pro 300
I don't know if this might be of any help for someone but I am going to attach a screen recording of a comparison between the 3d gamma plot of the old and the improved profile:

 

riclin

Getting Fingers Dirty
Joined
Oct 17, 2025
Messages
4
Reaction score
1
Points
28
Location
Melbourne, Australia
Printer Model
Canon Pro-10S, Canon iP8760
I have now updated the script to support Linux. That was doable, but I doubt I can support Windows without rewriting the whole script or porting to python, which I cannot do.

Updated the first post also.

Hope this allows more people to try it out. I have not teste on Linux, only verified quality, logic and syntax using AI.

https://soul-traveller.github.io/Argyll_Printer_Profiler/

Cheers,
K
Perhaps slightly off-topic, but if ever you do feel inclined to port this to Windows, try passing the whole palava to Anthropic Claude and ask him very nicely to do it for you. I used to use a homebrew bash script for profiling - not so different from yours - but recently had Claude convert it to python which it did remarkably well - albeit as ~1000 lines of code. I'd post a link to the (semi) final version here but it contains numerous hard-coded references to my filesystem which would probably confuse things - and is something that I should someday rectify. But if it ain't broke ... I can't help with a windows port since I don't use windows. Reach out 1:1 if you want further thoughts ...
R/
 
Last edited:

knowing

Getting Fingers Dirty
Joined
Oct 24, 2025
Messages
58
Reaction score
9
Points
20
Printer Model
HP CLJ5550, Brother MFC-9460
I don't know if this might be of any help for someone but I am going to attach a screen recording of a comparison between the 3d gamma plot of the old and the improved profile:


Yes, it can be hard to see changes in accuracy in the 3d plot, especially if the improved areas represent points inside the 3d volume. In this case the numbers speak louder of the quality improvement.

Thanks,
K
 

knowing

Getting Fingers Dirty
Joined
Oct 24, 2025
Messages
58
Reaction score
9
Points
20
Printer Model
HP CLJ5550, Brother MFC-9460
Perhaps slightly off-topic, but if ever you do feel inclined to port this to Windows, try passing the whole palava to Anthropic Claude and ask him very nicely to do it for you. I used to use a homebrew bash script for profiling - not so different from yours - but recently had Claude convert it to python which it did remarkably well - albeit as ~1000 lines of code. I'd post a link to the (semi) final version here but it contains numerous hard-coded references to my filesystem which would probably confuse things - and is something that I should someday rectify. But if it ain't broke ... I can't help with a windows port since I don't use windows. Reach out 1:1 if you want further thoughts ...
R/

Thanks for the tip. Anyone if free to help out with this. I am swamped with things and cannot really do that now. I have asked a couple of AI, including Claude. It still is lots of work for me to do it, and test every function. The script is currently 2800 lines, and has some complexities for making it compatible for all 3 platforms. If anyone here has experience, please feel free to do it. I can add any person as a contributeor on github.com...

I also do not have windows or linux currently, so a bit of trouble testing it.

Cheers,
K
 

knowing

Getting Fingers Dirty
Joined
Oct 24, 2025
Messages
58
Reaction score
9
Points
20
Printer Model
HP CLJ5550, Brother MFC-9460
Hi All,
I made an update, solely on the folder with Pre-made Targets. See Argyll_Printer_Profiler.

I organized it a bit better, and added some larger targets. Especially, I modified the Atkinson1728 with the grays from Atkinson4096, as it was missing good grays. These are the main larger Targets working for Colormunki:
  • - CM-Interm-A4-1168p-3pages-w13.0mm-20x20-Short-ReadPortrait_TC918+Spyderprint_grays-randomized
  • - CM-Interm-A4-1168p-5pages-w12.5mm-15x16-Norm-ReadLandscape_TC918+Spyderprint_grays-randomized
  • - CM-Interm-A4-2060p-5pages-w12.0mm-21x20-Short-ReadPortrait_Modified-Atkinson1728-randomized
  • - CM-Interm-A4-4410p-10pages-w12.0mm-21x21-Short-ReadPortrait_Atkinson4096-randomized
  • - CM-Interm-Letter-1168p-3pages-w12.5mm-19x21-Short-ReadPortrait_TC918+Spyderprint_grays-randomized
  • - CM-Interm-Letter-1168p-5pages-w12.0mm-15x16-Norm-ReadLandscape_TC918+Spyderprint_grays-randomized
  • - CM-Interm-Letter-2060p-5pages-w12.5mm-20x21-Short-ReadPortrait_Modified-Atkinson1728-randomized
Shor explanation:
  • w12.5, or similar, refer to the approximate width of the patches when printing, to understand which target is easier to scan with Colormunki. The easiest to read with a ruler (balance between density of patches, practical usability and number of pages) is in the range of 12mm to 14mm.
  • "Norm" is here normal size patches for normal 5-7 second passes. The "Short" are targets where patches are shorter in the reading direction, thus may require slower reading passes of the strips to get good readings. The advantage is that these are less pages. I think the 1168p and 2060p targets give excellent results. Anyone is free to use them, or make your own variant of them using printtarg. I have provided the printtarg command I used for each target.

Cheers,
K
 
Top