Choosing a new corexy or markforged printer

SecKit recommend a cooling duct to avoid skipped step artifacts, and with stepper sticks instead of an integrated board, this seems wise to me. But just blowing a fan in the general direction of the step sticks seems optimistic; I’d rather focus that airflow where it is important.

I’m trying out a fan duct design I made for the GTR board. It’s a mounting bracket and fan duct in two parts. The base is an integrated spacer and fan base, and above it is a duct. Together, they are designed to hold any 10x40 axial fan. Modeled around the board:

The hole at the right takes an M5 bolt.

There is meant to be enough space below the duct for free airflow and to avoid impinging on any wiring. I should be able to wire the board and then install the duct over it.

I haven’t modeled the fan itself, but it goes in this opening, here shown without the board.

The duct gets narrower as it goes away from the fan, and there is space at the bottom for air to flow out, with the idea that there shouldn’t be too much impedance, and fresh air hits all of the step sticks on the way out.

The triangular tangs at the bottom both hold the duct in position over the board and, at the bottom, capture the corners of the fan. I hope. Also it’s 39.8mm wide, with the idea that bolting it together will hold the fan in place. I’ll see how well that works. I could imaging the duct taking a couple iterations to work just right.

Nothing about this set is specific to the SK-Tank. It’s really just modeled around the BTT GTR board.

It is all designed to print without supports. The duct prints upside down.

It’s modeled in the realthunder branch of FreeCAD, and I plan to release the files once I test the print.


If you want control over the airflow at all 4 driver chips instead of a fully open bottom close it off, add holes above the chips and use a centrifugal fan for better buildup of air pressure in the duct.

The long open channel often results in far more airflow in the front or back of the channel and little in the middle.

It’s six chips, and I designed it for the fan that shipped with the kit. These are TMC drivers so they shouldn’t run terribly hot. Might not be obvious from the picture but the channel cross section gets narrower as it crosses all the steppers. I haven’t tested running it to see what airflow is actually like yet. But the delivered axial fan is understood to be good enough in practice, I’m just adapting to the new driver board.

It could be argued that I should close it at the end rather than taper only partially, but excess impedance is a bad idea for an axial fan.

1 Like

Did a quick airflow test, and airflow seems sufficient that I’ll probably run the fan below full speed. If I want it to be maximally quiet, I could figure out whether I can control it based on a thermistor or 18b20 I guess.

Here’s the small end, installed. It is 40x40mm at the fan end, but gradually tapers down inside to just big enough for airflow through the heat sink.

Now I have some work to do on cable management.


It’s wired up and moving. I’ve set it so that the inductive sensor is probing to tram the bed over the pivot points, which I think is the intent. I moved the bed forward for more usable area, so I had to adjust the

I’m able to set the stepper driver cooling fan speed; it’s controlled by PWM. It also runs only when the X, Y, or extruder steppers are powered, in the default config.

The stepper driver cooling fan shipped with the printer is certainly not silent. I could put a Noctua 4010 fan in place. It’s a 24V system, though, and Noctua makes 12V but not 24V fans — but I can just configure it for 50% duty cycle. (Klipper does have the ability to attach a temperature sensor to a fan, if I want to use it. But I think that if I switch to a noctua I won’t care.)

The resonance testing for klipper resonance compensation made it clear I need to add some cross-bracing to my printing table. I’ll expect to run that again after I add the cross-bracing. But also it’s a pain to try to hold the Raspberry Pi running the printer right next to the print head, because the accelerometer doesn’t like long wires, so I have ordered a Raspberry Pi Pico to connect to the accelerometer to make it easier.

The tiny little fan on the volcano hotend could be worse, but it’s not great. I can definitely feel the vibration, and that will show up in surface finish. I’ll probably see what I can do about putting something more like what I had on the cantilever printer eventually.

The 7.5mm/s probing speed SecKit provide in their default klipper config is way too fast for accurate probing on my system. I chose 2mm/s and got typical repeatability within 1 micron, whereas with 7.5mm/s I got about 25 microns of variance.

I feel uncertain about the bed mesh probing. It’s quite consistent from run to run, but the mesh it generates isn’t as flat as I had hoped for. Here are the raw points, probed with a cold bed:

 0.027507,  0.160757,  0.247757, 0.290757, 0.274007,  0.175007,  0.029507
-0.036993,  0.071007,  0.144007, 0.169757, 0.128257,  0.038507, -0.113243
-0.115993, -0.009493,  0.061757, 0.095007, 0.048507, -0.050243, -0.197243
-0.177993, -0.064243,  0.019507, 0.049757, 0.011757, -0.067493, -0.195493
-0.198493, -0.072743,  0.004007, 0.041257, 0.024757, -0.059993, -0.159993
-0.214243, -0.091743, -0.014243, 0.029507, 0.021507, -0.050743, -0.157993
-0.261993, -0.145743, -0.042493, 0.011507, 0.018507, -0.044993, -0.156743

That’s .55275mm different between lowest and highest point, after tramming. The tramming happens near points measured at 0.027507, 0.029507, and 0.011507 so the tramming was done right, the bed just isn’t as flat as I would have hoped. It’s not as flat as the bed on the corexy I made myself.

The corexy I designed myself has a 6.35mm thick 330mm x 330mm bed with a 300mm x 300mm 750W heater. This has an 8mm thick 350mm x 350mm bed with a 330mm x 330mm 400W heater.

1 Like

I learned that the Z_TILT_ADJUST feature in klipper seems picky. It gives up trying to level unless I get the bed almost level to start with. I ended up using a square to align the bed by eye before Z_TILT_ADJUST would complete. That surprised me.

The 400W bed is a bit under-powered, in my opinion. I have become used to the bed getting quite quickly to temperature with the 750W keenovo on my original corexy.

I finally started my first print on this printer tonight. It’s a mount that I designed to hold the raspberry pi I’m running klipper on above the ACM back of the printer, for better wifi reception.

1 Like

I published my design for making more of the bed usable.

1 Like

Here’s the bed mesh visualizer output:


Really complex curvature. This doesn’t look like, say, a twisted frame.

Part of me wants to put a light spindle on the carriage turning a surfacing end mill and skim the magnetic sheet flat. I have an ER11 air-cooled spindle that I could make a carriage mount for, I suppose. But I think for now I’ll just accept compensation for a not-completely-flat bed.


The instructions for doing resonance testing suggested a 15cm cable between the accelerometer and the Raspberry Pi board because long cables have had problems. I did my initial resonance testing while holding the RPi near the nozzle, with it controlling the GTR control board over a barely-long-enough USB cable. It was inconvenient but worked. But that test was not with the printer in its intended location and configuration. And it also demonstrated that I needed to add some cross-bracing to my printer table! So I needed to do it again.

It seemed like a really good idea to use a Raspberry Pi Pico as a remote accelerometer and connect it to the Raspberry Pi 4 via USB.

Except that it wasn’t.

My laptop sees the Pico just fine, but the RPi 4 can only see the Pico if it is plugged in when booting, and only as long as it is still connected. Even with USB connected to the Pico with a good cable, it couldn’t talk to the adxl345. I checked connectivity, made a new harness, checked connectivity again, tried leaving ground disconnected (!), tried isolating the sensor board with polyimide tape, tried using 3v3 instead of 5v VCC; nothing worked with the pico. Friendly folks on the Klipper discord let me know this wasn’t unusual.

I switched to three of four pairs in over 1 meter of ethernet wire going from the accelerometer to the RPi 4 header pins, and it worked fine. I was able to re-characterize the resonance, which was indeed different in the new location.

I guess I’ll find a use for the Pico some day…

I printed a fairly simple 40mm cube as a test print after updating resonance compensation. I do have what looks like belt artifacts (does this mean the belt is too tight? Maybe?) but no elephant-foot, minimal ringing; looks good. With this print quality, I want to move my old corexy to run klipper (from the same RPi; it isn’t breaking a sweat running just one) in order to improve its print quality. I should consider adding an inductive sensor to it and measuring the bed. But now that I have a working second printer, I’m more comfortable doing maintenance on the first one!

I still don’t like the warped bed, but I think I have a printer that the family will be able to use. Time to tune it for PLA now that it seems to be well set up for PETG!


I’ll have to pick your brain when I finally set up Klipper on my HercuLien. I’ve been putting it off because I haven’t spent as much time tinkering lately because work has been crazy. Plus going from a working configuration to something that I’ll have to retune requires time inside… luckily that is something a cold Minnesota winter can provide :slight_smile:


@Eclsnowman maybe I’ll know more then. It hasn’t been too hard though, other than finding the right way of hooking up the adxl345 board. Now that I know that about 1 meter of ethernet wire works to connect the adxl345 I wouldn’t switch. I plan to connect the old corexy to the same RPi4 and run them both together in the end.

I went slow on the PETG calibration cube; only I think 60mm/s at .25mm layers. Because one of my kids has learned Cura, I switched from prusa-slicer to Cura to get a profile set up there for the PLA testing. I chose .2mm layers because it was in one of the default filament profiles, and I decided to go crazy and run at 200mm/s to start, because I wasn’t changing enough variables at the same time already. My youngest went to look at it zipping around and asked whether the printer had drunk too much caffeine. :relaxed:

Measuring the resulting print:

I’ve seen worse!

I got 39.92 mm on the other horizontal axis, and Z varies a little due, I presume, to the bed mesh compensation. All within acceptable limits at this point.

So I set it up to print math stuff for my wife to use for teaching and she got to see it running that fast. She noted that it didn’t shake as much as she would expect as it zipped around. Can’t wait to do resonance compensation on my old corexy!

There’s clearly room to run faster. I might leave the volcano hot end on here for a while! I’m curious whether it would work to use the XCR-3D heat sink with the volcano block. That 200mm/s was at only 200°.

Regarding the out-of-flat bed, SecKit responded, agreeing that the 0.5mm unflatness was not expected, and asked me to run various tests, which I have done. It definitely showed that the lack of flatness is in the bed not the PEI sheet, and the question is whether it’s from the aluminum or from the magnet sheet.

I also found that Bed Mesh Visualizer has a checkbox to flip the Y axis, so now the visualization isn’t reversed in Y. That makes it easier to interpret!


SecKit was willing to send me a new aluminum bed, but asked me to pay shipping and for a replacement magnetic sheet and replacement bed heater to go with it. We actually don’t know whether it’s the aluminum bed or magnetic sheet that is the problem here. I didn’t want to rip the magnetic sheet up to probe the bed without having a replacement sheet already here…

I wanted some additional energetic beds because I want to be able to switch between surfaces easily, and it turned out they were (at least when I ordered) the same price with or without magnetic sheets. So I bought two with magnetic sheets, and that way I’ll have a spare even if I have to use one of them. Either the current magnetic sheet is bad, or the current bed is bad. So after I get the new beds with new magnetic sheet, I can pull the old sheet, clean the bed, probe it, and find out whether it’s flat. But also I can first try my idea of scraping the existing magnetic sheet flat and if I screw up the sheet, I’ll have a backup.

I’m a bit confused by how I got high quality prints for a while, then suddenly they went terrible. My youngest suggested underextrusion due to a clog. I don’t think I had a clog, but I realized I had just trusted the extrusion rotation_distance and had forgotten to check that part during calibration. When I tried to extrude 50mm, I actually extruded about 45.5mm. I did several tests and ended up as close as I could effectively measure:

-rotation_distance: 8.15
+rotation_distance: 7.6

So now I’m really confused by the high quality prints I was getting at first. Maybe the parts I happened to be printing in PETG were particularly tolerant of underextrusion for some reason? In any case, this improved print quality.

I also switched from the E3D-style heat sink and throat to a XCR3D BP6 set, still using the volcano hot end and nozzle. This cost me not quite a centimeter of Z because it is slightly longer, and means that the cooling nozzles are pointed too high right now.

The volcano makes me bend the heater wires sharply to install the heater cartridge in the block; that’s the cost of installing the heater vertically instead of horizontally. This means that I have to take everything apart, including the extruder, merely to remove the hot end from the heat sink. With the BP6, I just loosen two screws and the hot end slides out; then when I put it back it slides in right up to a shoulder to register the exact same height so I don’t have to re-calibrate nozzle height. I also switched out the grub screws in the body of the BP6 with socket-head M3 screws.

I do expect to switch to an orbiter later, and I can design around getting some of my Z height back at that point.

I’ve been designing a mount to put the orbiter extruder on the printer, using the BP6 heat sink instead of the E3D version, and using the 2040 radial fan tucked behind the hot end.

I think the hard part is the cooling duct. I finally got a cooling duct modeled that looks like it has a chance of printing with only rectangular, bed-attached support. A previous version really needed tree supports, but I couldn’t get cura to make the trees extend everywhere they were actually needed.

This design will let me remove the heater block from the heat sink just by loosening two easily-accessible screws. I have replaced the M3 grub screws with normal M3 screws long enough to just barely stick out past the fins. I didn’t bother modeling that part.

The orientation of the 2040 fan here forced me to put the inductive probe on the right side of the head.

I could move the bed back where it was designed to be by moving the filament path closer to the carriage; the orbiter here is entirely above that path. But that would force me to find another solution for the part cooling ductwork. Perhaps I could lay it down flat. But I think I’d like to try this first.

If it works, I’ll publish the files.

The hardest part (I suspect), the duct, printed successfully. 13 grams in total. And when I pointed my heat gun at the intakes of the ducts to get rid of PETG frizz, I put a finger between the nozzles and definitely felt hot air coming out, so the impedance shouldn’t be too bad; cooling ought to work.

I’m now printing the other two pieces, but am also confident enough to post the files in the current shape.

The README has printing and installation instructions.


I have assembled it except for the fan, and the heat block. 240g for the plastic, stepper, heat sink, throat, nuts. Could be worse!

1 Like

When I installed it, I found that the volcano model or the BP6 model i was working from didn’t match what I had, such that the bottom of the duct was approximately co-planar in XY with the tip of the nozzle. That won’t work!

Additionally, two of the holes I was going to use to attach the duct to the carriage are blocked by the linear rail from attaching in the back and aren’t necessary anyway.

So I cut down the mounting bracket and raised the ductwork. That will also shave a few grams off the final print.

It moved lots of air, so that part isn’t a problem.

Of course, with this now installed on the printer, I can’t use this printer to re-print its own part, so I’ll print this on the other printer. :grin:

Edit: I took a rasp to the bottom of the original duct and it works fine as is. I’m still printing with the original, but expect to eventually replace it with the improved model.

1 Like

It’s been a busy week, not much time to play with the printer. But the few prints I tried failed.

I must have done something wrong with PROBE_CALIBRATE in Klipper after installing the new extruder setup, because tonight when I sat down to diagnose the problem, I discovered that the nozzle was too close to the bed. Rather than try to use PROBE_CALIBRATE again right now, I adjusted manually, and now have been printing off one-layer 0.3mm thick coupons to dial in the first layer, changing the [probe] z_offset by .025mm at a time, and labeling my coupons with the z_offset so that I can choose what actually works.

Then I can start printing for real.

I’ve discovered the one thing I don’t like about the orbiter: with no exposed gears to turn, I can’t load filament manually, I really have to use the Extrude button to grab the filament and pull it in.

I love the fan presentation that makes the nozzle easy to remove and replace with a couple screws.

Hopefully I’m close to back to a printer that my kids an also use and not just me mess around with.

1 Like

I appear to have a cursed part. I thought I’d use 50¢ of plastic to make drive bay adapters to put a 2.5" SSD into a 3.5" drive bay.

I’ve spent way more than that on failed prints, and I don’t have any idea why.

Using the same slicer and same slicer settings, test coupons are printing great. I have confirmed that the settings are the same by using diff to compare the gcode files for the part and the coupon and looking at the embedded settings. I also ironed a single-layer test coupon at 0.3mm and it measured .31mm thick, so that’s close enough to work.

Printing the coupons works fine, but printing the part doesn’t. I’m getting skips from the extruder and failed extrusion. I don’t see how it can be a clog because immediately after failing to print the part, I can still print yet another single-layer test coupon of the same first-layer thickness, even though it’s about the same size and same thickness.

I’ve re-sliced the test print multiple times. I’m running low on ideas for what could be wrong.

I gave up and printed another part entirely and it was just about perfect.


1 Like

Have you tried a different slicer? I have had different luck with different slicers.