Cricut Personal Dissection

Here’s what I found in my dissection of my Cricut Personal cutter.  I think this is a pretty good jumping off point if you’re interested in repurposing the hardware, but for now I’m not doing any advanced analysis of the circuits (tracing pinouts, etc).  This may come later if I decide to make some custom firmware to do some other fancy things.

Actuators:

2 Steppers – 42BYGH4418 – These are standard NEMA 17 sized steppers with 6 leads.  I  didn’t find any specific data on this stepper most likely driven in a unipolar configuration.

1 Solenoid – The cutter head seems to be a custom solenoid setup.

Chips:

ATmega128 – Main microcontroller for the entire system.

FT232BM – FTDI USB to RS232 converter chip.

AT45DB041D – 4MBit Serial EEPROM – This seems to be where the built in “Goerge and Basic Shapes” cartridge data is stored.

Power:

LM317 – 1.5A adjustable voltage regulator – Outputs 2.4V at power on.

LM2576 – 5Volt 3A Step Down Switching Regulator

18V 2.5A Power Brick – Labeling seems to suggest there are 16V, 20V, and 21V versions as well.

Other Parts:

BD243C NPN Transistors and high wattage resistors – These 8 transistors are driving the individual stepper coils.  The power resistors, transistors, and diodes in the center of the motherboard above all form the stepper control for the two steppers used in the setup.  The steppers are driven off of the 18V supply from the power brick.

Potentiometers – The speed, pressure, and size dials are all just connected directly to potentiometers.

“George and Basic Shapes” cartridge tear down:

Here’s a picture of the “George and Basic Shapes” cartridge from the side facing tward you when inserted into the machine.  This is the cartridge that comes with the machine and is just a couple pins shorted together.  If you’ve searched for Cricut hacks before, you probably already knew this, as this seems to be one of the few details floating around.  I did manage to disassemble a standard cartridge at an earlier date and it contained an Atmega chip and another mysterious 8-pin Atmel chip just like the motherboard.  I’ll have to borrow another cartridge or two in the future and post some pics.

The back seems to be a mirror of the front.  It seems that rather than key the cartridges, they simply manufacture them so they can be inserted either way and function normally.

Cartridge socket machine side:

You can see from the traces on the cartridge socket PCB that the connections are mirrored on the machine side as well.  After taking a look at the cartridge board, I simply disconnected it and used jumper wire to short the appropriate pins to emulate a George cartridge on my unit as many others have done since the George cartridge above is one that I borrowed.  Here’s a pic of my George cartridge emulation setup:

George Cartridge Emulation

This solution works nice for me since it’s quick and easy and I don’t plan on using the Cricut with the standard cartridges.  You can just as easily emulate a George cartridge a number of other ways if you what to still use other cartridges with the machine normally, ranging from making your own PCB to just gluing some foil traces to a piece of cardboard that will fit in the slot.

More hardware details to come as I start looking at signals and set up serial sniffing…

Tags:

8 Responses to “Cricut Personal Dissection”

  1. Andrew says:

    Have you had any luck figuring out the code that tells it what to print?

  2. Craig says:

    I’ve figured out how to do basic logging right now, but I haven’t gotten a true pass through setup up and running. As soon as I get that working I’ll post some more info.

  3. Andrew says:

    What are you using for logging? I haven’t had much luck with it, the serial sniffers don’t see any data for some reason.

  4. Craig says:

    I tried serial sniffers too. Turns out that the Cricut FTDI USB to RS232 link operates at about 200kbps baud. You can’t use the standard virtual COM port driver to talk at that speed, you have to use FTDI’s D2xx drivers. I used a couple of TTL-232R cables and a Python script that uses pyUSB to set up some basic sniffing, but without a pass through connection working, you can’t get as accurate a picture of what’s going on.

    Looking at the serial communication from the PC, there seems to be a few timing issues that need to be sorted out. For instance, it looks like only one byte is sent at a time to the Cricut and it seems to be sent at 1ms intervals most of the time. The link back to the PC seems to be a little less restrictive, with several bytes being returned at a time.

    If you want to take a look at it, I can send you some Python code to get a similar FTDI based serial to USB adapter configured to sniff the serial data. I wanted to post up a ton of details on this, but I’m holding off until I’ve got a couple more issues figured out and I can just post a logging script that anyone can use to start looking at the command protocol.

  5. Ron says:

    I have a sneaking suspicion that the ATMega16 on the regular carts is responsible for matrix math, resizing or something like that.

  6. Andrew says:

    Craig,

    If you’re up to it, send me the code and I’ll work on it as well.

    Thanks,
    Andrew

  7. Ned says:

    I’ve just opened up a Cricut Expressions machine for reverse engineering. Looks like the board is more or less the same as the smaller unit (despite having “Cricut Expressions” silkscreened on it). It also has the same 4Mbit SPI flash part (Atmel AT45DB041D) on it; mine is also named George. I’m using Macs here, which have the distinct advantage of having Dtrace available. So writes to (and reads from) the FTDI should be easily logged (with good timestamps). Also, I have a 16-channel mixed-signal oscilloscope which might help. My guess is that the over-the-wire communications is in terms of cubic Bezier splines (which are also the basis for TrueType fonts). These are easily scaled and rotated (once you accept the need for floating-point and matrix math). I’ve done a port of the Cairo library and also worked with a TrueType font driver, so I’m not unfamiliar with this stuff. And I also have hacked a lot of AVR code and done reverse engineering for a living.

  8. Craig says:

    Thanks for the info! I wish I had access to a good MSO or a least a scope with a bigger sample buffer; it might make figuring out the timing issues easier :) . I’m currently busy moving my workshop to a new location, but I’ll try and get some more info gathered and posted after I get settled in to my new location, which should be some time in the next two weeks.

Leave a Reply