Cricut Direct PC Control Working!

After a bit of work and help from fellow Hackerspace members, we managed to figure out how to talk to the Cricut.  Check out the Cricut Wiki I started for more details on the protocol and check out the libcutter project on GitHub if you want to start writing your own control software.  Libcutter's goal is to be a nice cross platform library for controlling the Cricut and potentially other similar devices.  Right now all our experimentation has been with Cricut personals at firmware revision 1.34, but I'm hoping it'll work with other models as well.  I coded up a quick Python demo script that's a Logo interpreter for the Cricut that's included with libcutter.  Here's a quick video of it in action:

I've also got a quick Windows only Python module implementation that you can use to control the Cricut as well.  To get everything up and running, you'll need to get Python and PyUSB installed and grab this nice Python XXTEA implementation.  After that, just download the Cricut protocol module and the Logo demo script and you should be ready to draw (or cut) your favorite Hackerspace logo, or perhaps a hole bunch of circles:

You can of course write your own control programs to do other equally useless but still fun things:

Tags:

14 Responses to “Cricut Direct PC Control Working!”

  1. Hagbard Celine says:

    The PCGF files used by Cricut Design Studio are also XXTEA encrypted, but they use different keys than those used to control the Cricut. That is to say, the PCGF files do not contain the 0×40 commands. This makes sense because the 0×40 commands are in absolute coordinates, and they would need to be transformed as the shapes were moved, rotated, etc.

  2. swiftfall says:

    Do you know if the libcutter developers have a channel on an IRC server? I am interested in the project but can’t seem to get much info.

  3. Craig says:

    I don’t think so, and unfortunately I haven’t played around with the source much. I’ll forward your RFI to them though.

  4. jdneidig says:

    Is the cutter logo interpreter program available on the libcutter github website?

    Thanks

  5. Craig says:

    Yes, a slightly updated version that uses libcutter is in the git repo. You’ll have to grab the keys from the wiki and compile libcutter to use it though. The python implementation I posted does not use libcutter and doesn’t require you to compile anything.

  6. jdneidig says:

    I’m not familiar with python. I downloaded python and installed it. Also downloaded PyUSB, the XXTEA implementation, the Cricut protocol module, and the logo demo script. But I must be missing something because I don’t see the same GUI as you show in the screen shot above? Please excuse my ignorance regarding python.

    Thanks,

  7. jdneidig says:

    Per my previous post, is there an install file for the Cutter Logo Interpreter for Python? I must be doing something wrong?

    Thank you,

  8. airclimber says:

    Thanks for hacking the Cricut!

    Do you have any examples using the 0×40 curve keys?

    For anyone trying to use cutter-logo.py on OSX:
    1.) Install FTDI’s D2XX drivers: http://www.ftdichip.com/Drivers/D2XX.htm
    2.) Install the ftd2xx module: http://pypi.python.org/pypi/ftd2xx/bzr14
    3.) Change cdevice.py to import ftd2xx as d2xx.
    4.) Run ‘kextstat -grep FTDI’ in a terminal and if a FTDI driver is already loaded then unload it: sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext

    The last step is necessary because on OSX FTDI’s virtual COM port (VCP) drivers can’t run simultaneously as their D2XX drivers.

  9. airclimber says:

    Oops — Typo:
    Use:
    kextstat | grep FTDI
    not
    kexstat -grep FTDI

  10. Craig says:

    Check out this wiki page:
    http://www.built-to-spec.com/cricutwiki/index.php?title=Command_0x40_Protocol

    I’ve got to get around to fixing up the logo script so it doesn’t keep lifting the pen. I’ll throw up a wiki page for it and post some more info soon.

  11. Kyle Marsh says:

    Hey Craig,
    I just got a Cricut Personal and I’d love to contribute to your libcutter/licut projects. Could you give me some pointers on how to get started hacking on these?

    I’ve cloned your libcutter github repo onto my Ubuntu workstation but when I try to run cutter-logo.py it can’t find the “cutter” library. I’ve run the bcpp.sh file, but I don’t think that’s actually compiling the library and I’m not too familiar with cmake. If you could point me in the right direction I’d be grateful.

    Also, how does libcutter (github) relate to licut (sourceforge)? Is one an earlier version of the other, or are they entirely separate projects?

    Finally, I see several tests in the util directory; do I go about compiling and running those?

    Thanks!

  12. Kyle Marsh says:

    Update, okay, so bcpp is a code beautifier, not a compiler. My bad. Looks like you’re using cmake to build the libraries, and also like you’re only working on Windows with this? Maybe the Linux code I’ve seen is only the licut guys.

    On Windows I’ve got MinGW installed but it doesn’t have cmake as far as I can tell; Ho do I get cmake for MinGW?

  13. Kyle Marsh says:

    Okay, kids, protip: don’t be dumb like me and forget that your ubuntu VM doesn’t have any dev tools installed yet. It’s difficult to compile C++ without gcc.

    Next question: I get a compile error when trying to compile util/draw_svg.cpp. That file tries to include but I apparently don’t have that library anywhere. I tried installing the libwxsvg-dev package for ubuntu, but no dice. Anyone able to point me in the right direction?

    Is there a more appropriate place to be asking these questions? A forum, or some place on the wiki? Thanks!

  14. Craig says:

    I’m really sorry for not getting back to you! As you’ve already found out, the best place to ask questions about libcutter is through the github project. I’ve only build libcutter on Windows, so I’m not much help in this case. Thank you very much for updating the Wiki as well!

Leave a Reply