Silhouette Cameo-2

We bought this cutting plotter at the university to produce solder mask stencils to apply solder paste in the right places on PCBs. We also plan to create glue dispensing masks with it to help integrating our particle detector, where "to integrate" is jargon for "to construct".

Here are my findings about how it works, how to drive it with free software and how to create neat stencils:

Protocol

The plotter speaks a dialect of the GPGL language (an older reference of the formats to be found here: GPGL (and HPGL) Reference (2011-07-23)). Many particularities have been found out by reverse engineering the communication protocol and as a result there is a collection of Silhouette Cameo Commands by fablabnbg.

The files the plotter can read directly via its own USB port have the file extension .studio3 (in contrast to the .gsp format that Silhouette cutting plotters with an SD-card slot understood).

USB Sniffing

See my other post "USB Capturing on Windows"

Running the capture with Wireshark:

"C:\Program Files\USBPcap\USBPcapCMD.exe" -d \\.\USBPcap1 -o - | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -

Then I applied this Wireshark filter:

usb.addr == "1.4.2" || usb.addr == "1.4.1"

and saved the result in .pcap format.

Units of the plotting cutter

The units the plotting cutter uses is:

1 = 50 µm

So the resolution for integral units is 25.4 mm / 1 in / 50 µm = 508 dpi.

Note that the plotter also understands floating point values in those units so the actual precision might be better. Leave a comment if you have more information.

Media

source:

  • Avery 5353 ("too hard to remove"),
  • Avery 6470, 6465 with a removable adhesive,
  • Avery 03383 project paper and
  • LD Glossy Inkjet Photo Sticker Paper (lowest cost) with a similarly low stick adhesive.

Registration Marks

Plugging the device in on Linux

lsusb shows the plotter as:

Bus 006 Device 005: ID 0b4d:112b Graphtec America, Inc.

With usb_printerid from the foo2zjs package:

sudo usb_printerid /dev/usb/lp1

/usr/lib/cups/backend/usb returns:

direct usb://Silhouette/CAMEO%202 "Silhouette CAMEO 2" "Silhouette CAMEO 2" "MANUFACTURER:Silhouette;MODEL:CAMEO 2;CLASS:PRINTER;DESCRIPTION:Silhouette CAMEO 2;" ""

Free Software to drive the cutting plotter

inkscape-silhouette - An Inkscape Plugin

inkscape-silhouette

On OpenSUSE you can install it from the repository home:jnweiger:fablabnbg:

sudo zypper ar -f http://download.opensuse.org/repositories/home:/jnweiger:/fablab/openSUSE_13.1/home:jnweiger:fablab.repo
sudin -n inkscape-silhouette

When I installed the package, it was - however - a bit outdated.

The Cameo-2 needs to be added by hand like this in the file silhouette/Graphtec.py (or /usr/share/inkscape/extensions/silhouette/Graphtec.py):

@@ -93,6 +94,8 @@ DEVICE = [
    # margin_top_mm is just for safety when moving backwards with thin media
    # margin_left_mm is a physical limit, but is relative to width_mm!
    'width_mm':  304, 'length_mm': 3000, 'margin_left_mm':9.0, 'margin_top_mm':1.0, 'regmark': True },
+ { 'vendor_id': 0x0b4d, 'product_id': 0x112B, 'name': 'Silhouette Cameo 2',
+   'width_mm':  304, 'length_mm': 3000, 'margin_left_mm':9.0, 'margin_top_mm':1.0, 'regmark': True },
  { 'vendor_id': 0x0b4d, 'product_id': 0x110a, 'name': 'Craft Robo CC200-20',
    'width_mm':  200, 'length_mm': 1000, 'regmark': True },
  { 'vendor_id': 0x0b4d, 'product_id': 0x111a, 'name': 'Craft Robo CC300-20' },

Inkcut - Another Inkscape Plugin (primarily for HPGL plotters)

Inkcut - Inkscape Plugin for HPGL- or DMPL-type plotters

For its support for the CAMEO see Feature Reqeust #6: Support for Graphtec cutter (e.g. Silhouette Cameo or Portrait)

vishnubob / silhouette - Open-source python library to drive the Silhouette cutter

https://github.com/vishnubob/silhouette

gerber2graphtec - For GERBER Files

https://github.com/pmonta/gerber2graphtec

Ticket about the Cameo 2 support

git clone https://github.com/pmonta/gerber2graphtec.git
pip libusb1

./gerber2graphtec \
  --offset 0,0 \
  --matrix 1.001,0,-0.0005,0.9985 \
  --speed 2,1 \
  --force 5,25 \
  paste.gbr >/dev/usb/lp0
# or:
./gerber2graphtec ... > yourfile.graphtec
# and then:
./file2graphtec yourfile.graphtec
# or
cat yourfile.graphtec > /dev/usb/lp0

The defaults (if you don't specify the options) are:

./gerber2graphtec      \
  --offset 4,0.5       \
  --border 1,1         \
  --matrix 1,0,0,1     \
  --speed 2,2          \
  --force 8,30         \
  --cut_mode 0         \
  --media_size = 12,11 \
  --rotate 0

Robocut - A Qt based GUI application cutting shapes from SVG images

Simple open source software for with support for Silhouette products: Cameo, Portrait and Craft Robo

Maybe the Cameo2 USB product id needs to be added in the UsbOpen() function in Plotter.cpp.

Is this derived from the older alpharesearchs-robocut?

graphtecprint - Mostly an Inkscape Plugin

seems to work:

Alternative Proprietary Windows Software

My way to use the plotter

To cut technical stencils from SVG files created with Inkscape, I developed the following procedure:

  1. Export the cuts to be made from within Inkscape with the inkscape-cutting plugin:
    Click on ExtensionsExportCutting. Then click Apply.
  2. Create a file containing the commands for the plotter with gerber2graphtec:
    ./json2graphtec --cut_mode 0 --offset 6.2,0.2 --border 0,0 /tmp/silhouette.dump > /tmp/silhouette.bin
  3. Check the result by drawing an SVG file of the expected result with a script from Silhouette-Cutting-Plotters:
    ./draw_svg.py /tmp/silhouette.bin
  4. Send to plotter using:
    cat /tmp/silhouette.bin > /dev/usb/lp0

Related Software

Resources

Interesting blog posts:

Not directly related but interesting: