It’s official! I finally managed to get that old Tevo Tarantula Pro (TTP) 3D printer back online. It’s been sitting on the shelf with the new printer for over a year now, useless and just taking up space. With even more recent acquisitions, space is at a premium. I’m to the point where if I can’t get it working, it has to go to reclaim the wasted space.
Thankfully it didn’t come to that. But I was ready to start parting out the old TTP, either to use for other projects or to sell online. If you’ve read this post about its demise, you know it’s been the mainstay of much of our Barkyard “imagineering”. It left us in the lurch when it bit the dust.
The new Sunlu S9+ printer has been a steady source of new prints and inspiration, and continues to pump ’em out, so it’s not like we need another 3D printer. But… We already have one and it sure would be nice if it worked. Spoilers. It does work. As well as it ever did. In fact, it still has that damned offset to the right and the top that I remember!

So What’s The Problem?
Essentially the problem is me. At least the reason it hasn’t been fixed until now is my fault. The original problem was the wires flexing enough that the hot end heater circuit became intermittent, causing a massive clog the hot end just couldn’t recover from. Mainly because I broke everything trying to get it apart.
The reason I say the problem is me is because it took me so long to finally get fed up with the situation and finally do something to resolve it. I tried to put everything together after ordering and receiving a new hot end, back when it first failed, but was never able to get it to reliably PID tune the nozzle heating.
If that sounds like gibberish, it means that any heating related elements need to be “tuned” to function properly, without going into “thermal runaway”, a condition where the temperature continues to rise out of control. The last thing we need is a “fire starter” in the house. We’ll get back to PID tuning in a bit.

An Incorrect Assumption
At the time, I thought the replacement’s use of inline connectors was causing too much noise for the electronics to deal with and put it aside for later. Later never came. All that needed done was to remove the those connectors and solder the leads together as one solid connection from the heater and thermistor back to the controller.
It was never a high enough priority to choose to take the time to do that. If you’ve ever taken apart the print head of a 3D printer, you’ll understand the dread of doing so. It never goes back together the same way it was before taking it apart. And it never goes together correctly the first time. Or the second. Or the third. You get the idea.
Another problem is where to work on it. Once it’s torn apart, everything has to go back together, working or not. Since I share my workspace with my work computer during the week, I’d have to move it out of the way come morning. That doesn’t leave much time to get things done at all. Starting after supper and working until midnight, maybe 6 hours.

Where Did I Leave Off?
I decided Monday evening to try to figure out where I’d left off way back when, tearing into it after supper. First I had to sift through the “tin” of 3D printer parts. It was an opportunity to sort things together that share a common use, like bowden tube and the related push connectors, and refresh my memory of what all was in there.
I found both the old and new thermistors along with the old heating element. I don’t plan on using it since the new one’s already in place. Using the old one would require taking the heat break and hot end back apart again just to swap them. The idea is to just remove the connectors and solder the wires together.
Next is taking the print head apart. There are several parts that come together to make a complete print head. The main assembly that “contains” everything is the fan shroud with three separate cooling fans, one dedicated to the heat break, essentially a heat sink with fins that it screws to directly. The two others on either side to provide work cooling.
The heat break has a cooling fan so it doesn’t melt the end of the bowden tube or the filament. It’s meant to provide a path to guide the filament to the hot end and nozzle. The hot end, with its heater, thermistor, and nozzle fits into the bottom of the heat break. The hot end is where the solid filament is turned into molten, oozing plastic, and forced out the nozzle.

Making Quick Work Of It
Because the hot end parts use connectors, it’s easy to disconnect them and move them out of the way. The connectors are snipped free and the wires stripped in preparation for soldering. Turns out the thermistor that came with the replacement hot end is the wrong one! Well, let’s just say it wasn’t the one the firmware was expecting.
In general, the type of thermistor and its characteristics are “baked” into the firmware when it’s built, at “compile time” as they say. There’s no way to change it once it’s built and loaded onto the controller short of changing it, rebuilding it, and reloading the new version. When I first got it, Nick was the one who built the firmware. Not sure where the source code is now…
After much searching on the interwebs, I found a WordPress page dedicated to the TTP, and true replacement thermistors meant for it listed there. I ordered a set of ten, just in case the original is bad. They’re also replacements for one of Nick’s printers as well. They come with a 1 meter pigtail, so my thought is I’ll just dress one into the harness.

Change Of Plan
Doing anything with the harness looks like it would be a nightmare. Change of plan. I’ll just use the old thermistor. After all, as far as I know there was nothing wrong with it. I just snipped it out of the circuit back then when I found the predrilled hole for it in the replacement hot end was bigger than the original.
After some fiddling with it and the old hot end I discovered that predrilled hole in the original was deeper than the thermistor was inserted, as if it was meant to rely on the heat being radiated and not conducted through direct contact with it. There was no thermal paste or any other means of conducting the heat from the metal of the hot end to the thermistor.
Thankfully getting the old thermistor in place is as simple as inserting it into the predrilled hole and clamping it in place with the original screw and washer. Soldering the wires back together takes some “fixturing”, but with the help of the “third hand”, I made quick work of it. I even remembered to put the heat shrink on the wires before soldering them!

Make That Change Of Plans
Happy with the relative ease of restoring the old thermistor to the circuit, it’s time to tackle the heating element. Now I know why the thermistor was easy… Because the heating element is refusing to cooperate. Not so much the element itself as the wires connected to it. There’s no amount of flux or heat that will allow the solder to “wet” them!
Now I know why they had connectors! Not sure if it’s aluminum or steel wire, but you can’t get solder to sweat onto either of them. I’ll never understand why any electronics manufacturer would use anything but copper wire. How much money did they save? Those connectors, crimp terminals, and assembly had to cost more than copper.
When I saw the silver color of the wire, I just assumed they were tinned copper. Wrong! As much as I wanted to avoid taking the hot end apart, looks like I’ll have to now. There’s no other way to gain access to the heating element. And just as I feared, I stripped one of the tiny 3mm grub screws in the process!

What’s In The Big Prize Stash?
Of all the small, metric hardware we have, grub screws aren’t in the inventory. Then I remember Nick gave me one of his old hot ends from a different printer. Maybe it has one? Score! It’s a smidge longer, but it should work. Problem solved. Time to solder the old heating element in place.
The red, braided cover is more difficult to “strip”, but the flush cutters manage to cut it back far enough to strip the actual insulation. Lighting strikes twice as I remember to install the heat shrink before soldering again! Time to shrink things in place with the battery powered heat gun.
After struggling with getting the new heating unit out and installing the old one in its place, it’s time to put things back together. That’s easier said than done, but a LOT more than I thought would get done in one evening! It only takes three tries to get everything back together and ready to test!

Third Time’s A Charm?
The first try is a bust when I realize the hot end interferes with one of the work cooling fans in the shroud. Let’s loosen and strip those grub screws some more! The next try is because I didn’t have the thermistor clamped down enough and it just pulled out. Let’s loosen and strip those grub screws even more! Third time better be the charm!
By now I’m using the small needle nose pliers to “cinch” down those grub screws that last little bit. I didn’t realize it at the time, but the nozzle on one of those work cooling fans was cracked and falling to pieces. I zip tie what’s left of it together enough to get the screws in place. Until it cracks and one of the screws falls out!
The other nozzle was totally deformed into a crescent moon shape, pretty much pinching it off. A little work with the heat gun and a screwdriver opens it back up, albeit haphazardly and crooked. I searched for replacements online, but don’t know what those things are called. It will be good enough to test with and at least they’re accessible.

The Big Test
Getting everything connected and plugged in and turned on is a big step toward testing the repair, but first things first. Time to do a PID tune on the nozzle heater. This is where the hot end replacement failed the first time around. Had I known then what I know now, this thing would have been working a lot sooner.
So what the Hell is a PID tune? PID is short for Proportional, Integral, Derivative. It’s actually the parameters were tuning for the heating control system. Proportional is exactly what is sounds like, a proportional response to the heater given feedback from the thermistor.
The Integral part is like a long term averaging, so as not to overreact. Derivative is more responsive to the rate of change of the thermistor feedback, the faster the change, the faster it responds. The three taken together allow for a fast response to a given input, without overshooting the value, with small excursions around the setpoint.

Absolutely Amazing
It’s incredible how close the thermal response is to ideal the first time through tuning! It’s like this thing was never offline. Without going into too much more detail, many 3D printers use Marlin as the base source code for building the printer’s firmware. The printer is commanded using GCode and Marlin (“M”) commands.
For example, to start the PID tune process, an “M303” command is issued. It takes parameters, like which heating element to tune, what target temperature to use, and how many cycles to run before completion. In our case we’re tuning the nozzle heater, so the command would be: “M303 E0 S210 C10”.
The end result is a new set of parameters to replace the existing parameters with. This should be done any time the nozzle assembly is modified to account for any variations or changes in the heating characteristics. In our case, this becomes: “M301 P40.10 I5.44 D73.92”, where P is the Proportional value, I is the Integral value, and D the derivative value.
The Moment Of Truth
One last thing to do, extrude some filament and verify the nozzle is heating as expected and no thermal runaway occurs. I set the controls to extrude 50mm and it’s looking good! I command another 50mm and… Schmidt! It’s extruding alright, AND PUSHING THE HOT END OUT RIGHT ALONG WITH THE FILAMENT!!!
That’s all she wrote for tonight. The printer is on the shelf and out of the way for work tomorrow. I’m not taking it all back apart tonight. Without new grub screws to replace the stripped out ones, it wouldn’t make any difference anyway. There’s no way to fix this until the grub screw assortment I ordered gets here Wednesday.
Still, it’s very encouraging that everything else is working. None of those problems from the first time around. If there’s a lessons learned from all of this, it’s don’t trust it when they say it’s compatible with your particular brand. It’s not. Another is hex keys and screws are easily stripped with excessive force, especially when they’re small.

The Suspense Is Killing Me
I hope it lasts… But seriously, the wait for the grub screw assortment to arrive is torture, not knowing if this is really going to fix the printer. It arrived early in the afternoon, so I was able to get right to it once I was done with work for the day. I’ve had this thing apart so many times now I could do it blindfolded. Not that I’d want to mind you.
No way to know if pushing the hot end out caused any other issues until it comes apart. A close inspection reveals everything is clean. For whatever reason it’s giving me fits trying to get that hot end back into the heat break, but in the struggle, I realize the “flat” on the hot end connector appears in one of the grub screw holes. Hmmm…
I wonder if that’s what caused the loose fit? If that flat isn’t close to perpendicular to the grub screw, it may seem tight, but won’t be. Because it threads into the hot end, it’s at a slight angle when the hot end is square to the heat break. This time it gets aligned with the flat and the grub screw tightened down along with the other one.
Drum Roll Please
This print head has been apart and back together so many times, the bowden tube is fighting me now. The way the push in connectors work is they “bite” into the outside of the tube using some type of one way clutch to allow inserting the tube but preventing it from being pushed back out. Only depressing the release ring will allow it to push back out.
Over time, the repeated insertions leave a permanent “ridges” that refuse to push back through that clutch. The only way to fix it is to replace the bowden tube, which is exactly what I did. The connector threads into the top of the heat break and holds the end of the tube tight against the top of the hot end so no molten plastic can leak out.
The old one was a bit short anyway, so now’s a good time to replace it. Filled with new confidence, it’s time to test this latest incarnation. First a PID tune, then the extrusion test. It works! The hot end stays put and I can repeatedly extrude filament! No movement of the hot end whatsoever! SUCCESS!!!
Back To Basics
The next hurdle is to adjust the Z offset, that is to say the offset from when the BLTouch sensor detects the build plate and the nozzle contacts it. This has always been a hassle and a long term struggle to properly adjust that distance. Whether the first layer adheres to the build plate or not hangs in the balance.
Too much and the nozzle crashes into the build plate. Not enough and the first layer just sticks to the nozzle and not the build plate. Somewhere in between is the balance where prints just stick or they don’t. It’s a painful process of cancelled prints and minute adjustments and more test prints.
Until this time. I actually found an article online on how to precisely measure this offset in one operation. Without going into too much detail, the secret is to turn off the “soft limits” that stop the head travel before actually reaching the desired adjustment. That’s the piece of information I’d been missing this whole time.

The Old Standby
With the Z offset within a couple hundredths of a millimeter, it’s time for a test print to see if the printer really works. The good old 20mm calibration cube is the best choice. I don’t want to have to reslice it right now, plus I know it’s worked on this printer in the past, and it only takes 25 minutes or so. Off we go.
I’d forgotten how much louder the stepper motors are on this printer. Definitely spoiled by the silent stepper drivers on the new printer. Not sure what’s different this time around, but it’s the best test cube I’ve ever seen this printer print! No elephant’s foot. No layer shift. None of the artifacts I seem to remember in the past.
I AM ECSTATIC! This is beyond awesome. This is beyond belief. I cannot believe the old printer is back online and working as well as it ever did! I cannot believe I did not do this this sooner! It’s May of 2025 and the printer failed February of 2024. Considering this all came together in a couple evenings, I should have made the time long ago!
A Few More Tweaks
I planned on getting to this point a long time ago. I even bought a second Raspberry PI 4 to control it. It just sat there this whole time, unused and ignored. Thankfully it was already configured and ready to go when I needed it. There’s only one thing that still needs some work. The PI cam. It’s oriented in the portrait mode.
Recently I figured out how to tie into the camera stream using the browser and VLC. So I was a little confused when the Octoprint version was correct yet portrait mode but the streamed version was rotated 90°! A little more digging and I figured out how I managed that.
There’s a setting in OctoPrint for “Classic Webcam” that allows flipping both horizontally and vertically and well as rotating by 90°. Now they’re both rotated 90° and portrait mode! Then I realized the PI 4 controller for the new printer is standing vertically compared to the old one that’s still horizontal and it dawns on me it’s the internal camera mount.

More Tweaks
The see through case for the PI 4 only has two mounting holes, not four. The problem with that is if the orientation is wrong, i.e. portrait mode in this case, then the only other option will still be portrait. The case itself must be rotated the extra 90°. I designed a new mount for the case back then, but only printed one because that’s all I needed at the time.
So that’s the first real print job for the printer, printing its own vertical PI 4 case mount. I used the original sliced version, but soon regret that choice once I remember the problems it had printing the first time. Not only did it have a brim that didn’t stick to the build plate, the small hole features also cause headaches.
Those small features invariably end up sticking to the nozzle and not the build plate, which ends up grabbing other parts of the print and ripping them free from the build plate, dragging the whole mess along until finally cancelling the print. In this case, it’s something even more stupid, the filament “jammed” on the spool and caused it to stop extruding!
After spooling out nearly 10 meters (~33 feet) of filament, I finally manage to untangle the snag on the supposed “non tangle spool”. It’s hard to describe, but once the tension is released from the filament, an entire layer springs loose and somehow the other wraps manage to overlay the loose end. This traps it beneath them once tension is restored.
Unfortunately, the more tension, the tighter it pulls down over the end being fed to the extruder. May as well tie it in a knot at that point. The extruder actually pulled the spool off the counter, filament dryer and all! The extruder drive gear nearly ground through the filament when it stopped spooling out.
With the rewound spool in place, I extrude 200mm of filament, 50mm at a time, to ensure it didn’t cause a clogged nozzle or other issues with the extruder. Not sure why this particular spool of white PLA is so snag prone, but it’s jammed twice now, once for the new printer and now once for the old one.
Even More Tweaks
Back to the drawing board, or in this case, SketchUp. Once I finally found the original design on disk, I made a quick change to put down a solid first layer, then draw the small features on top of that. If the first layer isn’t sticking, there are other issue that need addressed. But this trick has worked for me on other designs, e.g. Run In Stands.
The nice thing about new STL is I can slice without the brim. In fact, I don’t even need a skirt! Another trick I learned from the new printer is how to add enough of a “primer line” to the startup GCode for every print. Essentially it moves to the edge of the build plate and extrudes two thin lines, side by side, enough to ensure the nozzle is flowing.
The skirt accomplishes the same task, but sometimes doesn’t stick and causes more problems than it solves. Those primer lines are just enough to gets things started. The next print is a success, but I realize that the nozzle temperature in the slicer was still set to 200°, not 210°. It’s not going to hurt this print, but I fixed it for next time.
Next steps are to glue the freshly printed PI 4 mount parts together and replace the existing mount with the new one. I’ve described the process in detail elsewhere, but the short version is I use a liquid acrylic solvent to “weld” the PLA parts together, similar to styrene cement for building plastic model kits or PVC cement for plastic plumbing pipe.
In similar fashion, the best strength is obtained obtained in 24 hours, so I let the new mount assembly set up overnight then swapped it out with the old one the next morning. I had forgotten how much I detest those mini tripods I bought all those years ago. At the time, I thought they’d be useful for my job, but they didn’t work out.
Instead they ended up here at home and holding up the PI 4 controllers for both the 3D printers. They’re study enough, with telescopic legs to adjust to unlevel surfaces, but the ball “joint” that allows the camera mount to swivel is way too loose. No matter how hard I cinch down on the set screw’s stupid little plastic handle, it ALWAYS ends up loose again!

The Final Tweaks
Guess I should stop complaining about it since it only matters when I tell OctoPrint to capture a time lapse of a print. Even then unless I fabricate some overly complicated “Extendo Mount” contraption to hold it further away and higher off the build plate, the capture is too close. The PI camera for the new printer is an 8MP version, but the setup could be better.
The PI camera for the old printer is an older 5MP version that has problems with low light. Even with the bright office light in the ceiling fan on, the time lapse still looks dark. There may be some other settings I can adjust in the Linux OS itself, but since I don’t usually capture a time lapse anyway, what’s the point?
The last thing I want to figure out is why prints on the old printer are ALWAYS offset from the origin, the front left corner of the build plate. I would usually take this into account when slicing, but it’s not an exact science. When I was printing the “Glow In The Day” clocks, they were sized to require nearly the entire build plate and nearly impossible to adjust.

Even more Googling reveals it’s the Cura slicer and not baked in offsets in the printer’s Marlin firmware. In fact, I tracked it down to the actual settings file Cura uses when it wouldn’t let me update the offset values. Turns out they’re not actually “offsets” at all, but rather print head dimensions to the corners measured from the nozzle.
The default print strategy is to print the first layer of copy 1, then first layer of copy 2, then second layer of copy 1, then second layer of copy 2. The sole reason for those settings to exist is to allow printing multiple copies of the same print to finish sequentially, i.e. completely print all layers of copy 1 then completely print all layers of copy 2.
Unfortunately, when the “Apply Extruder offsets to GCode” is checked, the slicer automatically adds those printhead offsets to the actual GCode values when slicing. This is so the printhead can avoid collisions with the other print(s). Not sure where to tell it to print each copy sequentially, but I don’t plan to use the feature anytime in the near future either.
To be sure I re-sliced the test cube and moved it as close to the front left corner as possible. Both the slicer and OctoPrint appear to have built in safeguards to avoid printing outside the edges of the build plate. Looking at the GCode it leaves us about 5mm away in both X and Y. The closest I can get is 1.999 x 1.999 away from the origin (0, 0).

The Final Tests
A quick test print of the re-sliced calibration cube shows it’s right there at the front corner. It also clearly shows the slicer settings leave a lot to be desired compared to those used to slice the earlier near perfect print. In the Cura slicer there are really too many settings to display all at once, but there’s a way to select which settings are visible.
I need to figure out what those settings were that used to visible to fix that extra buildup of plastic at the corners and the ridges where the infill meets the walls. Also looks like there was some under extrusion on that top layer. This cube looks terrible compared to that first blue one. Another possibility is this is a different filament.
Those tweaks will have to wait until after the real final test print though. Printing the PI mount was a good test, albeit a short one at just shy of an hour, but the true test is the one that takes 6 hours or more. For that we’re printing the last eight run in stands I need for the Mikado’s tender.
That calls for a new slice since the standard one I use has only six and takes more than 5½ hours on the new printer. Had to laugh when the slicer told me 4 hours! The curious thing is it took about the same amount of time to print eight of them on the old printer as it did six on the new one. Ironically, the new one is supposedly faster than the old one.

There must be another hidden setting I’m neglecting because all the print speed settings are the same between the two printers. I did notice it seems like the old printer is moving faster than the new printer using the same slicer settings. Guess it’s time to push the new one to its limits just to see when prints start to fail. Maybe an overall acceleration limit?
That’s a problem for future me as they say. For now, I’m thoroughly pleased with the performance of the old printer. It’s everything it used to be and nothing unexpected. I take that back. I did run into something unexpected when trying to narrow down those offsets. The X and Y range is supposed to be 240mm, but the Y axis hits mechanical limits at 230mm?
Unexpected Discoveries
I remember when Nick and I originally put this together we had to move the Y limit switch just past the end of the one mounting screw to where is was just holding on. Maybe that center rail the print bed rides on needs adjusted away from the front panel? There may be another 10mm to be had. Hopefully there’s an extra 10mm in the timing belt too.
The X axis looks like it could go on forever. Well, at least until it reaches its mechanical limits, well past 250mm anyway. The limiting factor at this point is the flexible metal build plate, limiting the build area to about 232mm, maybe 233mm, in both directions.
I tested the Z limit of 260mm as well, but both the harness and bowden tube to the print head contact the top crossmember well before that, before 240mm anyway. I doubt I’ll ever be printing anything that tall, but if I do, that’s what the new printer is for. Its build volume is 310mm x 310mm x 400mm.
For now it’s working, and working as well as it ever did. Considering the limits of the build plate, I’m not going to take things apart just to get that last 10mm out of the Y axis when it’s more like 2mm-3mm to be had. I’ll use the big printer. It’s quicker and easier. Well, it will be quicker once I figure out the slicer settings!
Thanks for tagging along and stay tuned for the next adventure.