Pallete 2 and Duet, DWC time estimates are off.

  • Let me say up front that I'm not all that concerned about this... I'm reporting it just so that you guys will know. Palette 2 has begun shipping to end users, and I have one that I'm using with a Duet based printer.

    The Palette hardware/software provides multi-color print from single-extruder printers. It does this by dyamically splicing up to 4 filaments into a single stream that is sent to the printer. The length of each splice is appropriate so that when it reaches the nozzle of the single extruder printer, the correct colors are laid down in the correct places.

    As part of the process the G-Code that comes from a Slicer (in my example, Cura 3.x.x) is passed through the Mosaic Palette provided "Chroma" application, and a modified G-Code file is sent to the printer. (There is a separate file that is put on the Palette device itself, via SD card).

    This all works... but... DWC reports incorrectly for the estimates that are based on Filament length. The file and layer estimates are OK-ish, like they always are. The only reason I even care at all is the Filament time is the one used for the percentage on a Tab when you are away from that Tab. So it is quite misleading.



    Again, minor thing, thought you'd want to know.

  • Here are the beginning and end of the G-Code file AFTER it goes through Mosiac Chroma. (Before, it was just a Cura file).


    ; Post-processed by Chroma 3.1.1
    ;Filament used: 1.46698m, 0.79558m, 0.452586m, 0m
    ;Layer height: 0.2
    ;Generated with Cura_SteamEngine 3.5.1
    M190 S60
    M104 S210
    M109 S210
    M82 ;absolute extrusion mode
    M82 ;Absolute Extrusion Mode
    G28 ;Home
    G1 F18000 ;In case anything needs a feedrate
    G32            ;Probe to finalize Z
    G1 Z15 F6000 ;Move the nozzle up.
    G92 E0 ;Reset Extruder (absolute)
    G1 E3 F200 ;Extrude a little
    G92 E0 ;Reset Extruder again
    M106 P2 S0.5 ;Turn on main board cooling
    G29 S1     ;Load the grid mesh height map
    M83 ;relative extrusion mode
    G1 E-5 F2400
    G0 X-5.433 Y-8.586 Z0.3 F3600
    G1 E5 F2400
    G1 X-0.72 Y-11.411 E0.26043 F1800
    G1 X2.873 Y-13.8 E0.2045
    G1 X3.32 Y-14.053 E0.02434
    G1 X4.905 Y-14.807 E0.08319
    G1 X5.596 Y-15.053 E0.03476
    G1 X7.109 Y-15.423 E0.07382
    G1 X7.753 Y-15.52 E0.03087
    G1 X9.066 Y-15.597 E0.06234
    G1 X9.643 Y-15.584 E0.02735
    G1 X10.993 Y-15.446 E0.06432
    G1 X11.49 Y-15.36 E0.02391
    G1 X12.64 Y-15.076 E0.05614

  • End

    G1 X-2.004 Y5.924 E0.00301 F600
    G1 X-1.964 Y5.997 E0.00263
    G1 X-1.928 Y6.101 E0.00348
    G1 X-1.859 Y6.265 E0.00562
    G1 X-1.855 Y6.35 E0.00269
    G1 X-1.797 Y6.566 E0.00707
    G1 X-1.802 Y6.66 E0.00297
    G1 X-1.83 Y6.795 E0.00436
    G1 X-1.847 Y6.923 E0.00408
    G1 X-1.921 Y7.134 E0.00707
    G1 X-1.982 Y7.247 E0.00406
    G1 X-2.014 Y7.277 E0.00139
    G1 X-2.043 Y7.336 E0.00208
    G1 X-2.117 Y7.398 E0.00305
    G1 X-2.171 Y7.47 E0.00284
    G1 X-2.235 Y7.518 E0.00253
    G1 X-2.297 Y7.582 E0.00282
    G1 X-2.384 Y7.645 E0.00339
    G1 X-2.61 Y7.738 E0.00772
    G1 X-2.69 Y7.762 E0.00264
    G1 X-2.753 Y7.76 E0.00199
    G1 X-2.835 Y7.784 E0.0027
    G1 X-2.889 Y7.792 E0.00172
    G1 X-2.916 Y7.787 E0.00087
    G1 X-3.039 Y7.796 E0.0039
    G1 X-3.109 Y7.779 E0.00228
    G1 X-3.153 Y7.776 E0.00139
    G1 X-3.27 Y7.736 E0.00391
    G1 X-3.352 Y7.658 E0.00358
    G1 X-3.454 Y7.583 E0.004
    G1 X-3.615 Y7.489 E0.00589
    G1 X-3.719 Y7.395 E0.00443
    G1 X-3.86 Y7.141 E0.00918
    G1 X-3.887 Y7.12 E0.00108
    G1 X-3.939 Y7.024 E0.00345
    G1 X-3.973 Y6.932 E0.0031
    G1 X-3.987 Y6.831 E0.00322
    G1 X-4.005 Y6.587 E0.00773
    G1 X-3.991 Y6.441 E0.00463
    G1 X-3.968 Y6.39 E0.00177
    G1 X-3.928 Y6.265 E0.00415
    G1 X-3.813 Y6.02 E0.00855
    G1 X-3.745 Y5.916 E0.00393
    G1 X-3.706 Y5.873 E0.00183
    G1 X-3.661 Y5.839 E0.00178
    G1 X-3.629 Y5.795 E0.00172
    G1 X-3.488 Y5.674 E0.00587
    G1 X-3.359 Y5.576 E0.00512
    G1 X-3.148 Y5.512 E0.00697
    G1 X-3.013 Y5.496 E0.0043
    G1 X-2.897 Y5.467 E0.00378
    G1 X-2.685 Y5.467 E0.0067
    G1 X-2.594 Y5.489 E0.00296
    G1 X-2.539 Y5.52 E0.00199
    G1 X-2.432 Y5.56 E0.00361
    G1 X-2.359 Y5.579 E0.00238
    G1 X-2.248 Y5.667 E0.00448
    G1 X-2.149 Y5.766 E0.00442
    G1 X-2.087 Y5.877 E0.00402
    G0 X-2.004 Y5.924 F7200
    G0 X-1.964 Y5.997
    G0 X-1.957 Y6.017
    G0 X-2.389 Y6.272
    G0 X-2.641 Y6.472
    G1 X-2.601 Y6.62 E0.00484 F600
    G1 X-2.629 Y6.771 E0.00485
    G1 X-2.661 Y6.801 E0.00139
    G1 X-2.679 Y6.839 E0.00133
    G1 X-2.743 Y6.915 E0.00314
    G1 X-2.792 Y6.959 E0.00208
    G1 X-2.813 Y6.967 E0.00071
    G1 X-2.852 Y6.966 E0.00123
    G1 X-2.932 Y6.989 E0.00263
    G1 X-3.016 Y6.924 E0.00336
    G1 X-3.105 Y6.872 E0.00326
    G1 X-3.206 Y6.69 E0.00658
    G1 X-3.211 Y6.63 E0.0019
    G1 X-3.187 Y6.544 E0.00282
    G1 X-3.134 Y6.431 E0.00394
    G1 X-3.09 Y6.398 E0.00174
    G1 X-3.047 Y6.339 E0.00231
    G1 X-2.981 Y6.288 E0.00264
    G1 X-2.814 Y6.26 E0.00535
    G1 X-2.77 Y6.276 E0.00148
    G1 X-2.669 Y6.456 E0.00652
    G1 X-2.641 Y6.472 E0.00102
    G0 X-2.646 Y6.479 F7200
    G1 E-5 F2400
    M140 S0
    M82 ;absolute extrusion mode
    M104 S0 ;Extruder temp 0, don't wait
    M140 S0 ;Bet temp 0, don't wait
    G92 E1
    G1 E-1 F300
    G28 X0 Y0
    M84 ;De-energize extruder motor.  Others will time out
    M106 P2 S0 ;Turn off main board cooling fan.
    M83 ;relative extrusion mode
    M104 S0
    ;End of Gcode
    ;SETTING_3 {"global_quality": "[general]\\nversion = 4\\nname = Pallete 0.2 (no
    ;SETTING_3 tool retract)\\ndefinition = fdmprinter\\n\\n[metadata]\\ntype = qual
    ;SETTING_3 ity_changes\\nquality_type = normal\\nsetting_version = 5\\n\\n[value
    ;SETTING_3 s]\\nadhesion_type = skirt\\nlayer_height = 0.2\\n\\n", "extruder_qua
    ;SETTING_3 lity": ["[general]\\nversion = 4\\nname = Pallete 0.2 (no tool retrac
    ;SETTING_3 t)\\ndefinition = fdmprinter\\n\\n[metadata]\\nposition = 0\\ntype =
    ;SETTING_3 quality_changes\\nquality_type = normal\\nsetting_version = 5\\n\\n[v
    ;SETTING_3 alues]\\ndefault_material_print_temperature = 210\\ninfill_sparse_den
    ;SETTING_3 sity = 0\\nmaterial_final_print_temperature = 210\\nmaterial_flow = 9
    ;SETTING_3 5\\nmaterial_initial_print_temperature = 210\\nswitch_extruder_retrac
    ;SETTING_3 tion_amount = 0\\n\\n", "[general]\\nversion = 4\\nname = Pallete 0.2
    ;SETTING_3  (no tool retract)\\ndefinition = fdmprinter\\n\\n[metadata]\\npositi
    ;SETTING_3 on = 1\\ntype = quality_changes\\nquality_type = normal\\nsetting_ver
    ;SETTING_3 sion = 5\\n\\n[values]\\ndefault_material_print_temperature = 210\\nm
    ;SETTING_3 aterial_final_print_temperature = 210\\nmaterial_flow = 95\\nmaterial
    ;SETTING_3 _initial_print_temperature = 210\\nswitch_extruder_retraction_amount
    ;SETTING_3 = 0\\n\\n", "[general]\\nversion = 4\\nname = Pallete 0.2 (no tool re
    ;SETTING_3 tract)\\ndefinition = fdmprinter\\n\\n[metadata]\\nposition = 2\\ntyp
    ;SETTING_3 e = quality_changes\\nquality_type = normal\\nsetting_version = 5\\n\
    ;SETTING_3 \n[values]\\ndefault_material_print_temperature = 210\\nmaterial_fina
    ;SETTING_3 l_print_temperature = 210\\nmaterial_flow = 95\\nmaterial_initial_pri
    ;SETTING_3 nt_temperature = 210\\nswitch_extruder_retraction_amount = 0\\n\\n",
    ;SETTING_3 "[general]\\nversion = 4\\nname = Pallete 0.2 (no tool retract)\\ndef
    ;SETTING_3 inition = fdmprinter\\n\\n[metadata]\\nposition = 3\\ntype = quality_
    ;SETTING_3 changes\\nquality_type = normal\\nsetting_version = 5\\n\\n[values]\\
    ;SETTING_3 nswitch_extruder_retraction_amount = 0\\n\\n", "[general]\\nversion =
    ;SETTING_3  4\\nname = Pallete 0.2 (no tool retract)\\ndefinition = fdmprinter\\
    ;SETTING_3 n\\n[metadata]\\nposition = 4\\ntype = quality_changes\\nquality_type
    ;SETTING_3  = normal\\nsetting_version = 5\\n\\n[values]\\n\\n", "[general]\\nve
    ;SETTING_3 rsion = 4\\nname = Pallete 0.2 (no tool retract)\\ndefinition = fdmpr
    ;SETTING_3 inter\\n\\n[metadata]\\nposition = 5\\ntype = quality_changes\\nquali
    ;SETTING_3 ty_type = normal\\nsetting_version = 5\\n\\n[values]\\n\\n", "[genera
    ;SETTING_3 l]\\nversion = 4\\nname = Pallete 0.2 (no tool retract)\\ndefinition
    ;SETTING_3 = fdmprinter\\n\\n[metadata]\\nposition = 6\\ntype = quality_changes\
    ;SETTING_3 \nquality_type = normal\\nsetting_version = 5\\n\\n[values]\\n\\n", "
    ;SETTING_3 [general]\\nversion = 4\\nname = Pallete 0.2 (no tool retract)\\ndefi
    ;SETTING_3 nition = fdmprinter\\n\\n[metadata]\\nposition = 7\\ntype = quality_c
    ;SETTING_3 hanges\\nquality_type = normal\\nsetting_version = 5\\n\\n[values]\\n
    ;SETTING_3 \\n"]}

  • PROBABLY... this is related to having the physical printer configured in Duet/RepRap as single extruder, and having the Slicer (Cura) set to four extruders.

    In particular, the Cura file has this statement (which appears to be unchanged by the Chroma post-processor):

    ;Filament used: 1.46698m, 0.79558m, 0.452586m, 0m

    And the "parser" in reprap is probably only looking at the first number.

  • As an aside, I'm curious what your overall impression of using the Palette 2 with the Duet has been since it's geared towards being used with Octoprint.

  • So far, the learning curve has been very steep (for me).

    This is the new "Palette 2" and I chose to purchase a "Pro" which has more metal parts internally. I'm very impressed with the hardware device. Well thought out, heavy duty (darn, it is heavy to pick up off the table), transparent covers on everything, thumbscrews to remove covers to clear jams, etc. Looks really good.

    I started out with the Canvas Hub (Mosaic's own hardware with Octoprint+Plugins) and the Palette and a more-or-less stock CR10S. Mosaic chose a Pi Zero W (with an aux board to give it 4 USB ports). These are too slow. I found it VERY frustrating to have the slow "hub" while trying to figure out other things. After about 8 attempts to even get a print to start, and having the device hang, or this or that, I remove the "hub" and put the Palette 2 in "accessory" mode. I also set the CR10S aside and put the palette on my BFD (Big Fast Delta).

    In accessory mode, the post-processor generates two files, one for the SD on the Palette, and one for the printer. Of course, with a Duet, the printer file is just an upload. Fairly simple.

    I still had issues getting things to start. I eventually discovered that the output tube of the Palette must NOT be connected to the printer until after the palette tells you to do so (after it makes the first bits of spliced filament). Back pressure on the filament causes a hang. By the way, Mosaics instructions on this are VERY clear... nonetheless, I was "doing it backwards" and causing problems.

    Now that I understand how to start a print, I've made about six attempts to print and all have failed in various ways. Jams, Tangles, Breaks, etc... Notable, NOT inside the Palette, it has been flawless at a hardware level. I just need to get the reels that feed it, and several other things, completely worked out. I have had one or two prints proceed fairly far, but the colors are nowhere near where they are supposed to be.

    Palette goes through a calibration process for a new printer to figure out how far it is from the output of the palette to the nozzle on the printer. Keep in mind that my BFD has an 1100mm (yes, over one meter) Bowden. So the calibration is fairly painstaking... Then, on later prints, it "knows" this distance, but you still have to "load" the filament, and this is a little painful as well with this very long tube.

    Probably should put the Palette on a direct drive printer...

    Anyway, as I work out all the kinks, it is apparent the color is not "in sync". I'm trying to print this:


    And all I'm getting is banding and random colors.

    The Palette uses "pings" to keep in sync with the printer. These are longish retracts, with a pause. When the Palette 'sees' the retract/pause, it 'knows' EXACTLY where the G-Code is... and can therefore avoid 'cumulative error' drift between the two devices. Well, in accessory mode, with my best calibrations, it does not ever see the pings. (if they are more than +/- 10% of where they 'should' be, it won't see them).

    THEREFORE, I've gone back to the 'hub', as it stays in sync a different way (since the hub is sending G-Code to the printer AND commands to the Palette, pings are not required). This time, I installed Octoprint + The mosaic plugins on a Pi 3B+ I already had. This is a great setup. High praise to Mosiac for making the plugins available so that we can build our own 'hub'.

    We'll see how that print comes out.

    Also, somewhere in all of the above, I've posted a few things on the Mosaic forums. They've always responded within 24 hours, and even pushed a firmware patch based on some of my feedback. Excellent support.

  • Summary, regarding Palette 2 Pro:

    • Hardware seems VERY robust.
    • Customer support from Mosaic is good to excellent.
    • Steep learning curve. REALLY pay attention to their instructions; they have a lot of really well done stuff on the web site.
    • Works fine with Duet in "Accessory" mode, where it generates two files, one for printer and one for Palette. Just send the printer file with DWC. (assuming I get it all calibrated and tuned up, that is)
    • Works fine with an Octoprint base "Hub". In this case, DWC doesn't tell you much, but Octoprint does...
    • I'd recommend NOT buying their "Canvas Hub" hardware, but instead "roll your own" hub on a Pi3B+ or similar


    • TBD if it is going to work well on a printer with an 1100mm Bowden.

    And, I will keep you posted when I get it all working.

  • Update: Running on the Hub, it is seeing pings!!!! Yay!!!

    They are running about 112% and should be very close to 100... the mosaic doc has a way to tune this... so MUCH PROGRESS. Yay!!

  • Thanks for the write up. That's exactly the kind of details I'm wondering about. I almost jumped on the Palette 2 pre-order but decided to wait for the dust to settle.

    I'm curious if anything could be done on either end to better integrate with the Duet.

  • wow what a neat piece of hardware. I am with @Phaedrux and am going to keep an eye out although i dont need 4 filaments, just 2... my main and another for support material. Either way very cool. Please keep us posted on how things work, especially integration with the Duet.

  • Update: The first almost successful print failed about halfway through because cura put in an M104 T1 S0 to allow Extruder 1 to cool off when the print got above the last layer that needed that extruder. Duet/RepRap sent an error because there is no Tool 1. Canvas Hub (Octoprint) saw the error and stopped the print.

    There may be several ways around this. Convince Cura to not put these in the file. Have Chroma remove them. Configure the printer so that it won't error on Tool 1 being set to zero. Configure octoprint to ignore this error.

    For debugging, I simply hand edited the G-Code file and removed the M104. Result: SUCCESS!!! YAY!!


    Summary: Palette 2 Pro + Canvas Hub (built on Pi 3B+) works great with Duet controller. Be aware that you don't really use DWC when configured like this, you do your web control via Canvas Hub (which is really Octoprint with canvas and palette plug ins). I don't consider this a plus or a minus... just "the way it works".

  • @danal said in Pallete 2 and Duet, DWC time estimates are off.:

    Update: Running on the Hub, it is seeing pings!!!! Yay!!!

    They are running about 112% and should be very close to 100... the mosaic doc has a way to tune this... so MUCH PROGRESS. Yay!!

    Edit: Palette 1 required you to tune pings. Palette 2 "learns". Nifty!!

  • @phaedrux said in Pallete 2 and Duet, DWC time estimates are off.:

    I'm curious if anything could be done on either end to better integrate with the Duet.

    To my very limited experience at the moment:

    1. Fix estimation when Palette is running in Accessory mode.

    2. Figure out how to deal with configuration for one extruder, but G-Code files that contain elements referring to more than one. In fact, the "estimation" above is really just a special case of this...

    That's really it. Everything else seems to "just work".

  • @danal said in Pallete 2 and Duet, DWC time estimates are off.:

    There may be several ways around this. Convince Cura to not put these in the file. Have Chroma remove them. Configure the printer so that it won't error on Tool 1 being set to zero. Configure octoprint to ignore this error.

    How did you eventually solve this one?

    My wife did a ninja job on me this christmas and got me a Palette 2. So far my experience has been far from smooth. Finally managed to work out some kinks and get a successful print using Canvas (That's their cloud based slicer) which was ok, but doesn't give much fine control over print settings. So I figured I'd try setting up Slic3r PE and then use Chroma (their gcode post processor) and I ran into the same M104 T1 S0 error on color change that octoprint choked on.

  • My first fix was to use a text editor (sublime) to take M104 for any tool not zero out of the file.

    My second fix was to find a setting in Octoprint that filters out any string match before a given line is sent to the printer. Set it to allow M104 T0 but suppress M104 Tn where n is one through nine. I'm not near enough to find the exact regex... I can post it if it is important.

  • I managed to get past that problem.

    I found that the Cura config file edit mosaic posted to remove heater changes worked. But in order for chroma to even import the gcode file I had to manually delete the very first T0 that Cura inserts before the start gcode block. I haven't tested yet but I think that first T0 is only inserted when Cura is set to reprapfirmware flavor gcode.

    As long as the temps for all extruders are set the same and the gcode start block had an M109 to set the temp and prevent Cura from inserting its own there were no other m104 entries in the file and chroma seemed to process everything properly.

    The only issue after that was the one I just posted about where it looks like chroma inserts a feed rate 0 move at layer change which caused very slow travel moves between purge block and print. Did you notice anything like that?

Log in to reply