Difference between revisions of "Cricut Communication Specs"

From Cricut Hacking Wiki
Jump to: navigation, search
(Initial Copy from Archive.org)
(No difference)

Revision as of 23:37, 29 January 2014

Cricut Personal/Expression/?Cake?

Serial Bit Timing - 8N1 at 200kbps from the Cricut The Cricut has an FTDI FT232BM USB to RS232 chip internally. It will enumerate as a USB to serial converter, but you will not be able to talk to the Cricut using any standard serial communication libraries because a non-standard baud rate of 198347 bps is used to talk to the Cricut. You have to utilize the FTDI D2XX driver to set up the FT232BM to talk at 198347 bps using a standard 8N1 setup with no hardware flow control. The easiest way to do this on Windows is to use Python and PyUSB. Also, you can use linux and the IOCTL interface to specify a custom UART clock frequency and divisor. Most other software that would communicate with the Cricut used these drivers as well. Writing to the FTDI driver in Windows is a lower level than most Port Monitoring/Logging software operate. So hardware level monitoring (Oscilloscope, etc) is probably the easiest. On the Mac and Linux platform it may be possible to capture at the driver level.

Serial Byte Timing - CH2 is the data from the PC, CH1 is the data coming from the Cricut See Explored for research behind the serial port settings.

Cricut Mini

The new Cricut Mini uses different hardware. It probes as having vendor ID 20D3 and product ID 0009, and reports itself as a generic USB ACM communications device. On Windows, CraftRoom installs a separate driver for the Mini (as distinct from the driver for the Expression) that provides a COM port. Linux and Mac are capable of interfacing with it using their stock ACM drivers which provide /dev/ttyACM* on Linux and /dev/tty.usbmodem* and /dev/cu.usbmodem* on Mac. In both cases, the baud rate appears to be ignored as every setting that the driver doesn't reject appears to work. The protocol seems to be different. Of the documented commands, mat bounds, firmware version, and status work but the rest fail; any failed command will simply return the same reply as the last successful command. It's also possible that there are a different set of encryption keys.

Notes on Cricut Behavior:

The message "USB Active" will flash on the screen whenever serial data is received, regardless of baud rate. When using the correct baud rate the display flickers but doesn't display "USB Active" when using short commands, like Status and Firmware Version. The device also seems to reset whenever you send large amounts of data to it. Presumably the reset is a recovery mechanism to get the device back into a good state. Once a final Baud rate is determined this is probably less likely to occur. Also by waiting for a response to appropriate commands this issue may be reduced. (Not all commands return a response.) The FTDI part has a 384 byte receive buffer and 128 byte transmit buffer which based on the Cricut Commands known at this time should be a non-issue. (Tx 13 byte 0x40 Command, Rx 38 byte Cartridge Name Request.) This would be a larger issue once the Firmware update command is understood. You can find documentation on the command set here -> Cricut Commands Trademark Disclaimer "Provocraft" and the Cricut Personal, Cricut Expression, Cricut Cake, Cricut Mini and all other Provocraft devices and software mentioned here, and their logos are proprietary trademarks of Provocraft. Other trademarks seen on this site are the property of their respective owners. These trademark holders are not affiliated with www.built-to-spec.com/cricutwiki. They do not sponsor or endorse our research or any of our content. All rights are reserved. www.built-to-spec.com is not responsible for any promises, representations or warranties, expressed or implied, relating to the use of this web site or any of it's content within the web site by third party organizations.