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:

23 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 0x40 commands. This makes sense because the 0x40 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 0x40 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!

  15. Paul says:

    I tried both the wiki and airclimber’s instructions to get it working on a mac 10.6.8 with a gen 1 Cricut Expression running firmware V2.43, but it was a no go. Is there a chance I can still get this working? If so, is there a way to reach you guys to work through the errors? Thx.

  16. Craig says:

    Have you tried it on a PC and have you tried the Python LOGO implementation I have on the site? It appears that newer firmware/units are not compatible with the current keys. You can also try leaving a comment on libcutter on Github if your problem is Mac compatibility.

  17. Thanks for your post. Just tried communicating with my gen1 Expression from linux using the Python code on the wiki and am getting no response back… Any hints?

  18. Marc says:

    I was able to use the python code and the Logo demo to talk to my gen1 expression via OSX and the ftd2xx lib (and a few minor tweaks to the python code, I don’t think it reports its status the way the code expects but it still takes commands).

    I tried both the python and libcutter native methods with a linux VM, but neither could successfully communicate – maybe a problem with the way virtualbox passes the USB device to the VM? I took a quick pass at compiling libcutter on OSX, but am currently hitting compilation errors. I’m going to give it a shot on wheezy with a RasPi, FTDI has a RasPi version of libftd2xx.

    Interestingly my wife has no interest in this method, she is much happier using her Gypsy and the cartridges – she’s paying for the clipart and ease of layout. My current interest is to separate images sort of like the way one would prepare an image for lithography, then cutting the layers from SVG files.

  19. TPS says:

    My wife discarded her Cricut when it stopped working with SCAL under MAC OSX. This happened a few months ago, so I am guessing an Apple software update broke it… no worries… her loss my gain. I have been tinkering a bit in Linux to make this thing go with moderate results. I was eager to read the Cricut Wiki but found it not to be operational…

    http://www.built-to-spec.com/cricutwiki/index.php?title=Main_Page

    Is this on purpose???

    Thanks.

  20. Eric says:

    TPS, assuming you ever see this again, here’s how you can access the site…. Wayback Machine is your best friend…

    http://wayback.archive.org/web/20120107054040/http://www.built-to-spec.com/cricutwiki/index.php?title=Main_Page

  21. There is also an archived copy of the wiki at http://jimlund.org/build-to-spec/ and free firmware to reflash the cricut and get rid of all the DMCA nastiness at https://github.com/Arlet/Freecut

    Hope that’s useful to people.

    The wiki is still down, by the way.

  22. Craig says:

    Thanks! Like has been rather unkind to me over the last year+, unfortunately, so this project doesn’t even register on my priorities list any more. My hosting has deleted the database for the wiki because it exceeded the storage limit thanks to all the bot traffic. I’m sad to say it, but I likely won’t be revisiting this project any time soon.

Leave a Reply