graphtecprint
graphtecprint is a driver / cutting application for the desktop plotter / cutter Graphtec CC200-20 or any of the OEM models based on it, such as the QuicKutz Silhouette (and reputedly Xyron Wishblade). It may work on other Graphtec devices as well, but it’s so far only tested on the CC200-20. It was developed on Linux, but in theory it should work on other Unix-like operating systems, too, and perhaps even Windows (not tested!). The rest of this page will assume that you’re using a Linux distribution.
Update Jul 9th, 2008: Wow, that took a while, but I have just released v1.0.1 which incorporates the Wishblade changes as well as fixes a bug with missing text with recent versions of pstoedit. Speaking of recent versions, Inkscape has had a printing redesign, and seems to be missing the “print to pipe” option from earlier, which means you have to print to a file and pipe it to graphtecprint manually for now.
Update Feb 2nd, 2008: Rick Stuart has helpfully provided me with the changes necessary to make graphtecprint work with his (first generation?) Wishblade! I will release a version 1.0.1 shortly, which will support this device properly.
Requirements
First of all, and unsurprisingly, you need a compatible Graphtec cutter.
To see if you have a compatible device, run “lsusb”. You should see a line looking something like this, the important bit in bold:
$ lsusb
. . .
Bus 001 Device 003: ID 0b4d:110a
. . .
If the numbers differ you likely have another model, but it might still work.
You can also use the “usb_printerid” utility that comes with “foo2zjs” package you may or may not already have installed:
$ sudo usb_printerid /dev/usb/lp1
GET_DEVICE_ID string:
MANUFACTURER:Graphtec;MODEL:CC200-20;CLASS:PRINTER;DESCRIPTION:Graphtec CC200-20;
graphtecprint requires the following packages to be installed:
- python (tested with 2.5, other versions may work)
- python-gtk2
- python-glade2
- python-cairo
- pstoedit (tested with version 3.44, others may work)
- ghostscript
If you are using Debian or a Debian based distribution, such as Ubuntu, running “sudo apt-get install
Installing
There are two ways of “installing” graphtecprint. The first way is to install it alongside other installed programs:
tar xvzf graphtecprint-1.0.tar.gz
cd graphtecprint-1.0
sudo cp graphtecprint /usr/local/bin/
sudo mkdir /usr/local/share/graphtecprint
sudo cp *.png *.glade /usr/local/share/graphtecprint
Alternatively, the program and data files can be installed in their own separate directory, e.g. /opt/graphtecprint:
tar xvzf graphtecprint-1.0.tar.gz
cp -a graphtecprint-1.0 /opt/graphtecprint
Usage
The program was primarily tested to work with Inkscape, but in theory, all applications capable of printing PostScript to a file or a pipe should work. If you come across a program whose output does not work, feel free to inform the author. (Note that raster graphics from programs such as the GIMP can’t possibly work. Only vector graphics elements will be parsed by this program.)
To cut using Inkscape, open or edit your file of choice, then go to the File menu and select Print. In the Print dialog, select “Print using PostScript operators”. Under “Print destination”, type “| graphtecprint” (the first symbol is a pipe symbol). If you have installed graphtecprint under a directory that’s not in your path you must enter the full path instead, e.g. “| /opt/graphtecprint/graphtecprint”
If you’re using another application, see if it can print to a pipe directly. If so, the procedure should be very similar to the one above.
If the application can not print to a pipe, chose “Print to file” (most applications should offer this) and select an appropriate file name. Then, in a terminal window, run “graphtecprint < somefile.ps", substituting "somefile.ps" for the name of the file you just printed to.
If everything goes according to plan, you should now get the main dialog window. If not, check your program's terminal for error messages that may explain what went wrong.
Screenshot
Notes
Everything should be more or less self-explanatory, but there are some things to note:
- You need write access to the USB device file! (The “Device” pulldown menu should list the detected cutter and its character device. To give yourself (everyone, actually, so beware) write permissions, open a terminal window and run the command “sudo chmod a+rw /dev/usb/lpX”, where X is the number of the device shown in the pulldown menu.)
- Paper size should match the page size from your application. This information doesn’t make it through the format conversions, unfortunately.
- Orientation is hardcoded to portrait so far, as the overlying application would normally do the work of rotating it if it is a landscape drawing.
- The fine tuning buttons will not work with the usblp driver. For these to work you will need a separate driver for the cutter, or possibly a patched usblp driver. None of these options are implemented yet, but they might be in the future.
Download
The latest version is 1.0.1 and can be downloader here:
graphtecprint-1.0.1.tar.gz

February 18th, 2008 at 22:09
Greeting! First of all, I love your choice of tools. Python, gtk, and glade are my favorites…
I almost have this working, hoping for some help.
I’m running ubuntu gutsy, and have a graphtec identifying itself as ID 0b4d:110a as above.
I get the GUI up, with the correct preview (tried directly out of inkscape and by redirecting the postscript from inkscape to graphtec print), but when I hit “print”, it does the “track enhancing” back and forth with the paper (even though that option is off) and it stops. No cutting.
Then I get the following error from the terminal screen:
=====================================
graphtecprint: Warning: Unexpected reply: ‘V2.30 \x03′
Traceback (most recent call last):
File “/usr/local/bin/graphtecprint”, line 418, in
res = doit(dialog.settings)
File “/usr/local/bin/graphtecprint”, line 268, in doit
f.write(”M%.3f,%.3f\x03″ % p)
TypeError: float argument required
=====================================
when I look at the python code (line 268), it appears that there’s modulus division by a “list” on the string going to the printer?
Feel free to contact me if I can help with troubleshooting… I would LOVE for this to work!!
–Brian
February 22nd, 2008 at 22:38
Fantastic work! The scrapbooking communities will really appreciate your work. You may also be interested in the work I started a while back at understanding the GSD file format.
http://code.google.com/p/cuft/
March 4th, 2008 at 01:32
Great, this exactly what I was looking for!!!
As Brian I had the same issue here, I’m using Ubuntu 7.10, so it may be something related to the Python version…
Anyway, I also had to make some adjustments in the code to make my Wishblade to be recognized.
This are the changes that I did:
I changed from:
for s in strokes:
p = s[0]
f.write(”M%.3f,%.3f\x03″ % p)
for p in s[1:]:
f.write(”D%.3f,%.3f\x03″ % p)
to:
for s in strokes:
p = s[0]
f.write(”M%.3f,%.3f\x03″ % (p[0], p[1]))
for p in s[1:]:
f.write(”D%.3f,%.3f\x03″ % (p[0], p[1]))
And changed from:
if not p.has_key(”CLASS”) or p[”CLASS”] != “PRINTER”:
continue
if not p.has_key(”MANUFACTURER”) or p[”MANUFACTURER”] != “Graphtec”:
continue
To:
if not p.has_key(”CLASS”) or p[”CLASS”] != “PRINTER”:
continue
if not p.has_key(”MANUFACTURER”) or ((p[”MANUFACTURER”] != “Graphtec”) and (p[”MANUFACTURER”] != “Wishblade Inc.”)):
continue
So now everything is working fine
I’m using Inkscape to cut on my Wishblade
Thanks,
Ulisses
March 7th, 2008 at 01:15
This is just what I need BUT……
to pay someone to adapt the driver. The camm’s are already installed but no direct drivers. I have to print via windows via vmware, way to much trouble, If I could print from inkscape I’d be a happy man. If you get a chance take a look at the windows driver for the camm2 series at rolanddg.com. I have spent the day trying to get scaling down right in pstoedit and hpgl-distiller. It draws the right shape with no hpgl errors but scaling make no logical sense.
I need the same interface but for hpgl output, actually to a roland camm1 vinyl cutter and camm2 engraver. Both use hpgl branded as camm-gl. In a month or so I may have some spare change
Thanks
March 26th, 2008 at 06:50
I have the Quickutz Silhouette craft cutter and running Ubuntu 7.10. I am getting the error “No Graphtec device found!” when attempting to print from Inkscape vector illustrator. It shows in Bus 002 Device 003: ID 0b4d:110a. I have installed all the packages listed in the forum. Any ideas on what I’m doing wrong?
March 26th, 2008 at 09:36
Jared: Hmm, permissions, perhaps? (See under “Notes” above.)
April 20th, 2008 at 21:01
Jared, if the permissions tip do not solve your problem, check also these two:
1) You may need to add the Shilhouette string in the program, for this include the “MANUFACTURER” string which appears on usb_printerid /usb/lpx if it is different from “Graphtec” (see my comments before on how to do this)
2) Everytime you turn on/turn off your cutter, Linux (at least my Ubuntu too) will lost the permissions on this device, so you will need to run the “sudo chmod a+rw /dev/usb/lpX” command again. What I did on my Ubuntu 7.10, I included my user on the “lp” group, so I don’t need to worry about, so I recommend you to do too.
Hope this helps,
Ulisses
April 30th, 2008 at 18:13
Super! Great work. I’am using graphtecprint with the adaptions of Ulisses. Plotting on a Quickutz Silhouette.
June 4th, 2008 at 18:56
I have been directed here after asking the Inkscape people for a plug-in that would allow cutting to a CraftRobo CC100-20.
I’m assuming the above isn’t for Windows XP?
If so what are the chances of having something for Windows and my CraftRobo? There would be so many happy crafters if you can do this.
June 10th, 2008 at 15:03
I got this working for my wife’s Xyron Wishblade (red) in Fedora 8.
I had to make the changes suggested by Ulisses, however, I needed
to remove the extra space in “WishbladeInc.” Also, three of the
“required” packages, python-gtk2, python-glade2 and python-cairo,
were not available on F8, nor are they needed there.
I had to cat the resulting postscript file through the script, which
is no big deal. Also, I found that lettering did not work until I
added “-dt” to the “pstoedit” command. I hope this helps someone.
June 24th, 2008 at 01:41
I would like to try to get graphtecprint running on a Windows XP machine. I have been doing some investigating of the ROBO Master software, without much luck, their level of compatibility with AutoCAD leaves a great deal to be desired.
So when I download the file graphtecprint-1.0.tar.gz, the file that I actually get on my machine is instead graphtecprint-1.0.tar.tar, and when I try to unzip it using Winzip I get an error message. Could you tell me where to find a file that could be unzipped using either Winzip or 7-zip?
Thanks for the help, and thanks for the work you have put into this.
Alvin Penner
June 24th, 2008 at 02:58
okay, sorry about that, I got it. I renamed it from graphtecprint-1.0.tar.tar to graphtecprint-1.0.tar.gz and then it unzipped properly.
Will check it out, thanks.
July 25th, 2008 at 15:46
It’s a really fantatic work !!
It work pefectly on my unbuntu Hardy, with a QuicKutz Silhouette.
I have a little suggestion, when the plotter has finished to cut, the blade dont go back to the original position, and then it’s harder cut with precision.
David B
November 6th, 2008 at 02:29
Hi. Thanks for this program. It works great.
Kept getting that message about “try sudo chmod…” because of permissions on lp0. (ubuntu hardy)
Fixed it by going into /etc/udev/rules.d/40-permissions.rules to the line that says
SUBSYSTEM==”usb”, KERNEL==”lp[0-9]*”, GROUP=”lp”
and adding changing it to
SUBSYSTEM==”usb”, KERNEL==”lp[0-9]*”, GROUP=”lp”, MODE=”0777″
Just thought I would post this in case anyone else had the same problem.
November 9th, 2008 at 09:36
Hi,
This looks pretty much exactly what I’m looking for (or really what my ‘other half’ is looking for) well done Vidar!
One question though, does anyone know if this’ll work with the new craft robo lite (she wants one for christmas) or just the ‘normal’ one??
Thanks!
December 27th, 2008 at 13:58
I just installed graphtecprint-1.0.1 on Windows XP.
When I run it, I get the message :
ImportError: No module named fcntl
Do you know if fcntl, or an equivalent, is available for Windows?
December 30th, 2008 at 15:56
is it a GNU or other open license program ?
Can you add it please on header of the script and on the tar.gz?
Because i would like to add some tips.
February 3rd, 2009 at 16:36
[…] vidar.gimp.org » graphtecprint - Linux support for the Graphtec CC2200-20. […]
February 10th, 2009 at 19:45
I just tested graphtecprint with the Graphtec CE5000-60 (on Ubuntu 8.10) - it didn’t work
The graphtecprint-dialog appears - but no matter what the settings are; when I choose ‘print’ the Status-LED on my plotter blinks one time & then the dialog window freezes.
The USB ID of the Graphtec CE5000-60 is 0b4d:1114. Please tell me if (& how) I can help you by testing graphtecprint with the Graphtec CE5000.
February 12th, 2009 at 05:25
Is there any way to manually setup registration marks in inkscape so that they will be read by the graphtec?
February 16th, 2009 at 02:21
[…] Others of note: 2D Animation: synfigstudio and synfig Mosaic generator: pixelize Graphtec Craft Robo drivers and installation instructions: Graphtec Cutter Robo […]
March 1st, 2009 at 05:46
I just got a Silhouette running on Fedora 8 with this driver. Thanks for the good work. I went with Ulysses’ suggestion of adding users to the ‘lp’ group to fix permissions. Everything works great. I did edit the graphtecprint script to move “Letter” to the default position rather than “A4″. Everything else was plug-and-play.
March 17th, 2009 at 16:35
I was hoping you or someone you know could adapt this great interface to use the installed cups devices instead of a usb device. That along with a few other changes to make it function as an inkscape extension would be a big plus for vinyl cutting/engraving via hpgl. I have lots of various hpgl devices to test it on. I know of three people willing to pay for the work !
thanks
April 14th, 2009 at 23:06
wow, so awesome! I got this to work for the first time with my new silouette quickutz cc200-20. Using Ubuntu Hardy. I just plugged it in, downloaded all the debs as you mentioned, and then untarred the graphtecprint. Inkscape doesn’t seem to have any postscript piping options so I print to file then command line it. Works great! Every time the machine goes on or off I have to redo the permissions of the /dev/usb/lp0 but that’s easy. And it actually works! i had to try it 3 times because I was trying to figure out what paper to use, what cut depth, how the infeed rollers work… but i think this software end of it was working right from the get-go it was me putting in the wrong paper then having to turn it off to reset it.
Wonderful, thanks so much I’m so excited about my new toy! This basically works straight out of the box!
Does anyone know about the head fine tune adjustment thing? Is it worth plugging into a windows machine just to do that?
The machine sure makes a crazy sound when it prints. Very sci-fi. Kinda sounds like this: http://www.compound-eye.org/radio/
Thank You!!!
April 20th, 2009 at 04:52
Nice job, Vidar! When I have started my Google search for Linux driver for the device I thought my search will be long and complicated and will probably not produce results! On my Ubuntu 8.10 rig I do have a virtual machine with Win XP x64 but it has all kinds of issues with USB and so results were not guaranteed for me even if I used the software that came with the cutter. So, again, thank you for the nice job you did, saved me bunch of time and aggravation
I have a question that’s maybe more about postscript than graphtecprint but hope you or some of your site visitors familiar with the issue can chime in here and point me to the right direction:
When you cut text, some letters have internal cuts to be made, most obvious being the letter “O” or “0″ of course. When I send a postscript file to the cutter, it cuts the outer shapes first, then tries to come back for the internal by which time the letter has already been separated from the sheet. Yes, I know the cutter comes with the sticky sheet but it appears to me that if you can control the sequence of cuts, you can eliminate the sticky backing which in my opinion is a very cumbersome device and may not even always work.
So, is there any idea out there on how to maybe re-process the postscript to send the internal cuts first. My lack of familiarity with PostScript language shows here. In fact I’m not even sure if that was a valid question to ask.
in any case, if some solution exists, I would greatly appreciate if someone can divulge.
Thanks!
July 1st, 2009 at 17:42
Hi! im interested on how to use / create registration marks on inkscape? the program works great! i made my first heat pressed tshirt
tnx!
October 25th, 2009 at 11:40
Hi , thanks for this great tool ! Works like a charm on my old CC100-20 , here is the id :
‘MANUFACTURER:Graphtec;MODEL:CC100-20;CLASS:PRINTER;DESCRIPTION:Graphtec CC1′
I have now to find a way to see craftrobo’s margins in inkscape.
January 5th, 2010 at 12:57
The CE5000 series (aka Pro) work without graphtecprint as they appear as usblp devices, at least the ones I’ve looked at.
Put it into HP-GL mode (see manual) and feed it HP-GL. The hpgl-distiller tools may also be useful depending on what app you are using to drive it. You can also do 3 way alignment marks on the pro using inkscape although its a bit of a fiddle getting it all the right way around (mirror Y on inkscape export, rotate enabled on the Graphtec. Click on the bottom left of your alignment marks to get the pixel offset to apply in the export dialogue. Then follow the manual on alignment marks.