Episode III: Revenge of the Software (and Firmware)

Episode III: Revenge of the Software (and Firmware)

To run you through this update, we thought it would be best to hand the pen over to Brandon, Mosaic’s software developer. He’s re-written Mosaic’s application from the ground up to ensure it functions as efficiently as possible, and has all the features you need to get started. 

And without further ado…  


To print in multiple colors on single-color, single-extruder printers requires very unique G-code files. 

As you’ve probably figured out, you’re going to need software to modify your G-code files in order to use them effectively with Palette. 

Here’s a quick re-cap of what the process looks like to print with Palette: 

1) Using Cura or Simplify3D, slice a multi-extruder G-code file 

2) Take said G-code file, and process it with Mosaic’s desktop application (which we cover in this update). This processing will give you a new, modified G-code file, as well as a .msf (Mosaic SEEM File) for Palette. 

3) Take your modified G-code file and send it to your printer, and send your .msf file to your Palette (via SD card). 

 Previously, we referred to this software as Mosaic Standalone Software. This name was always something of a placeholder, but it took us a while to rename it Mosaic Chroma (or just Chroma), which we feel better captures the software’s ethos.

(Some other names we considered during our software brainstorming session can be found here: Image.

chro·mapurity or intensity of color

Chroma is Palette's companion desktop application. At its core, Chroma processes your G-code for printing with Palette: it takes multi-extruder G-code and converts it to single-extruder G-code with pings (for more information about pings, see our updates from earlier this week – here, and here) and creates a set of corresponding instructions for the splices Palette should make. Chroma is also used for tasks like printer-to-Palette calibration and updating your Palette’s firmware. 

The first version (Standalone) has a number of limitations—like requiring you to print all layers at 0.2 mm heights, and not properly handling structures like supports and rafts. Chroma has been rewritten from the ground up in a much more dynamic way, eliminating these and other limitations. 

Much of the improvement to Chroma comes in the form of more accurate G-code tracking and more reliable manipulation. This means that more difficult-to-handle G-code files will be understood and processed correctly. The logic behind pretty much every facet of Chroma has been improved, from initial G-code analysis to file generation. 

The app is faster, leaner, and much more extensible for future additions. Though it may look the same as the previous version on the outside, it's an entirely new app. 

Highlights and Features

  • Full support for files created with Cura, in addition to Simplify3D. Open-source software users, rejoice! 
  • Support for variable layer heights, including rafts 
  • Support for support structures 
  • Support for Z-hops (to help reduce dripping) 
  • Support for printers with Bowden tubes of any length 
  • Support for circular print beds 
  • Parametric transition towers (discussed in-depth below) 
  • GPX integration, for automatic export of .x3g files (for printers that use .x3g instead of G -code) 
  • Printer profile editing, importing and exporting 
  • Performance improvements that make the app run faster and more responsively, especially when handling larger prints 
  • Chroma also supports the changes to firmware that use the new ping signature and eliminates the existence of Palette profiles from software 

Transition Towers 

Transition tower generation is probably the single largest overhaul in Chroma. Previously, one or more towers would be generated based on the highest number of transitions in each layer—one tower for a two-color print, two towers for a three-color print, and three for a four-color print. Depending on the number of transitions in any given layer, tower layers would be dense (when the tower is used for a transition on that layer) or sparse (when the tower is not used for a transition on that layer, but is used later on in the print and thus needs to be built up). 

In the new version of Chroma, only a single transition tower will be generated. Using a single tower saves bed space by eliminating gaps between towers. Additionally, sparse layers only occur on layers with no transitions, often decreasing filament usage and print time. Towers are now parametrically generated using a new set of paradigms for extrusion and toolpath generation, producing better-resulting tower layers and improved adhesion. Layer height, nozzle diameter, and more are determined and used to match the quality of your main print. 

Transition towers generated for the exact same model sliced at two different layer heights. The left used 0.3 mm layers, and the right used 0.2 mm layers. With thicker layers, the same amount of transition material will fit into a smaller footprint.

The tower’s density changes on each layer depending how many transitions will occur on that layer. For example, a three-color print with two transitions on a layer will be 100% dense, with half of the layer being printed during each transition. A layer with only one transition will be 50% dense, and a layer with no transitions will be 5% dense. In a four-color print, you may have layers that are 5%, 33%, 67%, or 100% dense, depending on the number of transitions in the layer (zero, one, two, and three, respectively). 

New transition towers for 4-color, 3-color, and 2-color prints. Note the multiple transitions per layer in the 3- and 4-color prints.

Transition towers will also be automatically placed on all sides of your model, so if you don't like always printing your models on the east side of your bed you're in luck!

Using Chroma 

On first launch, Chroma will prompt you to create a printer profile. 

With all the changes to printer and Palette calibration, including the elimination of Palette profiles (covered below in the Firmware section of this update), Chroma uses a new profile system. When you install and launch the new version for the first time, you will be prompted to create a printer profile—you will need to enter various printer settings and perform calibration, but from there, processing your G-code is extremely simple. 

Printer profiles have a ton of new options, like circular beds and Bowden tubes. The size of transition towers can now be adjusted using the Transition Length slider. You can also choose to export .x3g files by selecting the GPX profile to use.


Calibrating your printer with Palette is simple using the step-by-step assistant.

Once you have a printer profile, processing your files is pretty darn simple. Just open a G-code file, make sure the correct printer is selected, customize the preview colors if you want to make sure you load the correct filament into the correct drives, and save the processed output. 

Step 1. Load up a .gcode file that was sliced for multiple extruders.

Step 2. Make sure you select the correct profile for the printer that you will be using with Palette. Customize the preview colors by clicking the color swatch for the drives used.

Pro Tip: take a screenshot of this window. Sometimes we forget which color should be loaded into which drive, and this really helps!

Step 3. Save the processed single-extruder G-code (and .x3g, if your profile uses it) along with a .msf containing splice and ping information for Palette.

And just like that, you’ve got both files you need to print! That ends the software side of our update, time to move on to cover some of the firmware changes we’ve made to Palette. 

And with that, the typewriter gets passed over to Derek, Mosaic’s CTO. 


Although most of you haven’t had a chance to experience Palette’s firmware yet, we’ve cleaned up a number of its functions and added more features. Based on the experiences of early users, we’ve been able to focus our development efforts to ensure that we’re working on things that will improve your experience. 

This update is going to walk you through these firmware changes so you better understand the new workflows for when you receive your Palette. We’ve broken it down into three main sections: 

    1) Manual Control 

    2) Palette Calibration 

    3) Print Cancelling 

Manual Control 

One of the most requested features from users was a mode to control individual components of Palette. The new option in the menu allows the following new features: 

Clearing – This function will cut the filament inside of Palette, and then drive the outgoing motor to clear it from the machine. 

Preheating – This function allows you to heat up your Palette while you complete other tasks (gather filament, set up your printer, etc.) to make sure your Palette is ready to go when you are. 

Unloading – This function will retract the selected ingoing motor to unload your filament from Palette automatically. 

Jog mode – This function allows you to control each of Palette’s motors individually if you should need to. 

Although these functions won’t make or break your prints, they should help save time when setting up Palette. 

Palette Calibration 

The initial release of Palette required three custom Palette-specific calibration values – steps per count, splice distance, and opto to cutter. 

With the move to opto homing (covered in our Kickstarter update here) we have been able to remove opto to cutter, and decrease this to 2 values: 

Splice Distance – this is the distance that the splicer arm moves from its homed position against the limit switch, to its “splicing position” up against the machined Teflon splicer area. 

Steps per Count – this is the calibration value that links Palette’s stepper motors and the Scroll Wheel. Basically, a steps per count value of 3.11 would be 3.11 stepper motor steps per one Scroll Wheel count (the Scroll Wheel’s unit of measurement). The steps per count value ensures that all systems can communicate in the same units. 

In the past we provided these values on a printed card included with Palette. These values were typed into Chroma (then, Standalone) and saved for future prints. To simplify this process we have made the decision to switch to saving these values directly onto Palette’s control board. These values remain saved when power is turned off and even after firmware is updated. This means there’ll be no more need to create a “Palette Profile” in Chroma. 

However, for those of you who want to update these values or recalibrate, we’ve created the functionality to do this as well. Chroma is able to create a specially formatted configuration file. This file can be used to load your desired values into Palette’s memory from an SD card by using a function in Palette’s calibration menu. Also, if for some reason Palette loses physical calibration, we have developed tests to determine these values. These tests can be conducted easily with Palette, the Scroll Wheel and four spools of filament. 

Print Cancelling 

Previously, if a print were to go awry Palette would have had to be unplugged, the Scroll Wheel cleared, then turned back on to clear any filament that remained in the filament path. In the new version, by pressing the enter button on Palette during a print, a 5-second countdown will begin. 

At the end of the countdown any filament in Palette will be cut and cleared. The countdown can be started while splicing, but will not be executed until the splice is finished. This leaves Palette ready to start a new print, and prevents any gooey plastic messes in the splicer. At any point during the countdown, enter can be pressed again to stop the process. 

And that wraps up our firmware section…. Now. The million dollar question. 

What’s going on with our new drives, and shipping timelines? 

Ok, time to wrap things up. In our blog post titled, Aluminum Evolution, we spoke about our decision to make the shift from acrylic (plastic) drives to aluminum (metal) drives. The decision was also made to create them as “adjustable fixed distance” drives, meaning that each drive is individually tunable. 

We received ten Palettes worth of these drives for testing, and have been going through the process of validating the design over the past few weeks. Before we speak about what results have occurred from these tests, its important to understand our testing process: 

Stage 1 - Splice creation and measurement:  Splices are run in “Demo Mode” and measured by hand to ensure they fall within our specified tolerances. 

Stage 2 - Layered print:  Palette is then hooked into a printer, and prints an (uncalibrated) layered color change print. In this process, 300 splices are created and printed in a real world scenario. 

Check out an example of one of these prints below: 

Stage 3 - Calibrated Print Test:  Once the first two steps are passed, each Palette moves on to create a 4 color Benchy print. This Benchy print requires over 350 splices to be created and fed through a printer, and requires Palette to keep calibration over an 8 hour print. 

Check out some of the results below: 

Now, we had ten Palettes to test, and you’ll notice that there are not ten Benchies printed here. As of right now, we have five Palettes that have passed all three stages. For the remaining Palettes: two are currently completing Stage 3 (literally 78% and 83% done their prints), two have passed Stage 2 and are waiting to be moved to Stage 3, and one is in Stage 1. 

In terms of the Palettes that have not passed Stage 3, there have been a few main issues:

First, slipping in the outgoing drive. We believe this is caused by improperly tuning the drives or possibly the adjustment bolt loosening as they’re worked in. We are developing a more precise tuning method and also investigating using threadlocker to prevent loosening in the future.

Second, we’ve seen the Teflon tube on the outgoing side of Palette become unattached for a few of the units. We’ve tightened up some dimensions on the next batch of aluminum drives which should solve this problem. 

For delivery timelines: 

We have placed the order for 50 Palettes worth of aluminum drives (with the new dimensions), they are scheduled to arrive a week from today. We have well over 50 Palettes prepped and waiting to receive these drives. As soon as the drives arrive, we will be installing them into these Palettes, and putting the Palettes through our QC and calibration procedures. If these Palettes pass our QC process, they will be shipped out. 

If they do not, we will be forced to re-evaluate the issues they are having, implement appropriate fixes, and test the results. With that said we are optimistic, we’ve been seeing some really great results with the new drives. 

In English – if the 50 Palettes work they will be shipped by the end of August. If they do not function to the appropriate benchmarks, they will not be shipped. 

We will be sure to put out a mini-update on the progress of these tests and the drive implementation in three weeks. 

We are planning to hold and ship this batch all at once – meaning that the first 40-50 backers will likely have Palettes on the way by the end of August. Once we have a good idea of whether or not the drives are functioning, we will be placing additional orders, and begin installing those into the next few hundred Palettes. 

Our goal is to get all Palettes that have been purchased via this campaign out by the end of October. 

And with that, we’re going to wrap up our trilogy of updates. As always, if you have any questions, comments of concerns please do not hesitate to post up and we will get you information as soon as possible!