Loading

MODIFYING/CUSTOMIZING STOCK FIRMWARE ON 32BIT CONTROLLER BOARD

Please Login to Comment

I took the liberty to move my post from the FIRMWARE section to its own thread here, as I am hoping we might get some good info here. Also, I think it's a good idea to separate 8bit and 32bit board issues.

First of all, this is about the Mega04 version with the 32bit controller, not the 8bit one! So, please don't post here about 8bit issues or solutions.

Second of all, a big thanks to 'bartolomeus', whom I think identified ChiTu as the company making the 32bit boards and to 'bkrzysiek' for veryfying that it is actually possible to make certain changes to the stock FW (V1.4)! And thanks to 'gminnick' for chipping in, too (their posts are still in the hardware and firmware sections).

The reason for being able to customize the stock firmware on the 32bit controller is that, as of now, that board can not run Marlin. (But that may change in the future as it seems there's a lot of work happening to make it work on 32bit boards).

But "luckily" ChiTu has opened a backdoor as there is a range of things that can be modified in their, otherwise closed, firmware. Supposedly in Marlin, to make FW changes you have to recompile and upload the full FW to the printer. But in the ChiTu FW system, you can upload single lines of G-gode and save them to the printer. The changes will be there after reboots of the machine.

This is good news indeed, as you can set stepper values, step direction, build volume settings, various temp settings, jerk/speed/acceleration settings, thermistor type, Z-height offset, end stop types, etc.
But hold your horses... With the limited documentation we still have, it seems there's still some stuff we can't do this way. E.g. it seems we can't define pins. Also, it seems we can't set the preheating temps for the two different filament options - maybe somehow that is tied to the TFT user interface which is run by separate commands?

But the good news for me is that, at least, I can change the stepper direction and values for my upcoming Titan extruder mod which is what sparked this whole investigation for me in the first place.

Now, on to the documentation:
Here's a link to a text file 'bkrzysiek' posted containing a list of G-code commands that should allow us to modify the printer FW:
https://cdn.thingiverse.com/assets/61/34/46/dc/88/Complete_machine_parameters.txt

Someone else had a look into the same commands as 'bkrzysiek' and spent some time trying to make sense of them. Here's his write-up:
http://www.customize-3d.com/chitu-g-code-explained.html

I have tested the stepper direction, extruder fan kick-in temp and a few other basic options and they all worked.

I do not know if this idea will be foolish, but does anyone try to flash marlin firmware [2.0.x] with envirement MKS_Robin to the trigorilla pro board that cames in some Anycubic i3 Mega????.
The CPU of the trigorilla Pro is an STM32F103ZET6 and platformio.ini (line 371) refers this cpu.
I will appreciate your comments about this.

I have Anycubic i3 mega with the pro trigorilla board, and now my only concern is the leveling of the bed. The bed has a large gap between the edges and the center. Needed to be able to install anything like BLTouch

In case anybody bought the official Anycubic i3 Mega S upgrade Kit with the Titan extruder.
The firmware provided by Anycubic is only for the 8-Bit-Board but you can still upgrade a 32-Bit (Trigorilla Pro) variant.

To calibrate the new extruder use a G-Code-Terminal and send:
M8011 S0.002516117
M8510
M8500

After that your 32-Bit-Mega-S should work flawlessly, however you might still want to make a testextrusion for verification (In case you have a different printer versoin).

HELLO, CAN YOU HELP ME CALCULATE THE VALUE FOR A CHINESE BONDTECH EXTRUDER?
IT ALREADY ACHIEVED CHANGE THE TURN BUT NOT TO CONTINUE

I can't since I don't know how big its pulleys are. But read through this whole thread - somewhere we talked about how to do extrusion tests so you can see how much the Bondtech is extruding and how much off you are. Then you adjust the settings with an M8011 command.

For anyone who wants to calibrate their E-steps; I made a calculator.
Hopefully it helps someone out.
https://docs.google.com/spreadsheets/d/1VOz1dg8I2bXwsOWCdKM_GWCrxGOX-A2hQ6pdoTR2gPw/edit?usp=sharing

I went in to a bit more detail about it over in this thread:
https://www.thingiverse.com/groups/anycubic-i3-mega/forums/general/topic:32209

has anyone tried to use this for

  • titan aero ?
  • titan aero auto pid tuning ?
  • adding bltouch or some sort of autolevel ?

Can anybody share more info/links for parameters that are known to work well ?

I have a Titan Aero clone running on the 32bit FW flawlessly now. That piece of hardware was why I started this thread in the first place.

I don't know if my settings will help you, but they might get you in the ballpark. But besides the 3:1 reduction the hobbing gear (?) - the one actually touching the filament might not have the same diameter as yours - hence why my numbers may not be spot on for you.

This is the number and code that made it work - and stick in the FW - for me:
FOR TITAN
M8011 S0.00236
M8510
M8500

(I don't know if M8510 is needed, though).

As for PID, I didn't do it, didn't want to bother. So, I pulled the thermistor and heater from the stock I3Mega setup and it has worked fine.
No BLTouch for me, neither.

I haven't finished my carriage design yet, so it looks a little untidy but Pablo hadn't uploaded his Non-Mirrored version yet. But there's a pic of mine attached.

My titan aero (original) arrived a few days ago. I got it with the slim motor. I mounted it all and connected the motor. I tried to test the motor motion with NO firmwar/settings modifications. The motor is not really moving. It trembles a bit with no direction.
Did you have to modify some other parameter other than M8011 to make it move ? I thought M8011 was just about speed

Mine did the same - you need to rewire it. Sounds worse than it is, but you need to swap some of the wires around. If you have a multimeter, you should be able to check what coils are connected to which wires or you can just do it by trial and error. I can't tell you how to do it since I just watched a few youtube tutorials on how to do it, and then forgot all about the science of it;-)

M8011 is not about speed but rather about how much filament the extruder will move - bear in mind that the Aero is geared differently than the stock extruder so you need to change this setting.
My Aero is a clone, so I suggest you start with my setting or Ilama's to get in the ball park and then do some extrusion tests to see if you are extruding the right length of filament - and then adjust M8011 accordingly.

I like the aero a lot - it's a heavier assembly altogther so perhaps you need to slow down your speeds a bit(?) but if you have parts with a lot of retractions, I feel like it's a better option. My I3 is dialled in pretty well by now and I am getting extremely good dimensional tolerances and my retractions are controlled way better now.

Now next issue I am facing is that the nozzle does not reach the plate. I unscrewed the plate to make it higher and it’s still not enough. This Upgrade does not want to go easy.

You're welcome...;-)
And as for your next issue - it's been talked about elsewhere on this forum, I am fairly sure.
You need to find the the long screw that sits in the back of the two Z-axis carriages. Those screws are what actually triggers the z-axis limit switches so since the Aero sits a little higher you need to back the screws out and up a bit - that way, when the Z axis lowers, it can go lower before triggering the limit switches.

  • Start by lowering your bed again. You want it almost as low as you can get it. It will make it less wobbly when you print at high speeds. Don't go all the way down as you still need to have room for bed leveling adjustments.

  • Home the Z-axis (there's a homing function on the LCD screen) and get a sense of the gap from the nozzle to the bed. Say, the gap is about 5mm you need to raise the long M3 limit switch screws (one in each z-carriage) by the same amount. I can't recall the exact pitch of the m3 screws, but say it is an M3x0.5 screw, then that means, that for each turn of the screw it moves by 0.5mm, so you would need to turn it, theoretically, 10 turns to get it to move 5mm. But just do a bit of trial and error. If Anycubic did indeed set the z-carriages to the same height (no guarantee, but mine was pretty OK), you should turn each screw by the same amount. Don't loosen/raise them too much because then the nozzle will hit the bed before the limit switch triggers.

  • Once you are fairly close to the bed, re-level the the bed and you are good to go.

Thank you. I am now in the process of setting the M8011 parameter. The way I am doing it is to send this command "G1 E50.0 F500" which i think should extrude 5 cm of filament. I measure how much filament is consumed and modify the M8011 value accordingly.
I ended up sentting a very small "M8011 S0.00100" that extrudes exactly 5cm of filament using "G1 E50.0 F500". The problem i see is that the extruder motor is rather fast and it skips (sometime once, sometimes twice) during the 5cm travel.

What am i doing wrong ?

I decided to ignore this problem assuming they F500 was a too high extrusion sped. I went on and did my first print. It was amazing. I have never printed Petg so well. It was just a belt tensioner but I can already see how good it is and I am happy :) no stringing whatsoever

Yep, me too - I wanted to print more in PETG when I set out to do my conversion and the Aero really did the trick for me.
As for the extrusion test, if it skips, just try a lower speed. But seems like you are good to go now.

I needed some really dimensionally correct parts so I also calibrated the X and Y axis stepper counts, though from the factory they were quite close already. But now, on outer dimensions, I feel like I have an insanely precise printer - way better than what I read online to expect before I purchased (this is my first printer). At least in the middle of the bed, with medium sized pieces and a dialed in filament.

Belt tensioners are a good idea, I have one built into my X-carriage and I run that belt quite tight.

I have printed a larger object (https://www.thingiverse.com/thing:922740). The results are good however i do see some stringing. They are very thin it's more like hairs instead of strings. I cleaned up the final object using FIRE to get rid of most of them.

What's your retraction settings ? I am using 1 mm for now.

Raspberry Pi 3 (B/B+), Pi 2 B, and Pi 1 B+ case with VESA mounts and more

We are very much in the same ballpark but I am not sure it helps adopting others' retraction settings as I realized they are honestly quite different from one material to the other and from brand to brand.
What does make sense is to print retraction tests - after you have locked down what temps you want to print at. I did that for the one filament I use the most these days (a red PLA+ from eSun) and I even made the test part have the same physical dimensions as the most important parts I would be printing - since optimal retraction settings also depends on the length of the travel move.

In those tests, with that one filament, there was very little difference from app. 0.7-1.5mm, but I felt it was ever so slightly better at 1.2mm (with 0.4mm of coasting). Heaps better than the +5mm on the Bowden setup, though.

I am starting to loose faith in petg. It’s so sensitive and random.. I am using it mostly for its resistance to higher temperatures.

I have had good experiences with the PETG that I used. Two different brands, eSun and Kexcelled. I print them at 245C on the hotend, 80C on the bed and medium speed part cooling fan. Same retractions as mentioned earlier and they were not bad at all - could perhaps dial them in even better but then again, I don't print super intricate parts with a lot of retractions.
I did print the X-carriage for the Aero using PETG and that turned out nice enough.

I don't know if this matters but I think my filaments are also always quite dry. I am a photographer and keep my gear in dry box cabinets - and now my filaments get stored there, too.

The main reason I went back to using the PLA+ lately was that I needed to machine some printed parts on a lathe and the more brittle, harder PLA+ likes those cutting operations better.

I swore I would never print in ABS, but just a few days ago I got some HIPS in and while the first prints cracked horribly, after I put together a real quick and dirty enclosure to keep the ambient temps up, the prints came out nice. Bed adhesion is super tricky and you need to run your bed at max temps, though. BUT one cool thing about HIPS is that you can actually sand it. This is my first filament that doesn't gum up when sanded. I got a really, really nice finish on it. It also machines well, and should have higher temp resistance so I might have to make parts in it from now on despite the fact that I have to make a better enclosure. That said, I don't think you need super high ambient temps. I got my ghetto chamber up to 45-50C and that stopped the cracking and layer separation completely.

I think I tend to print with temps on the higher end of the spectrum, just about when I start losing detail. Thing is, higher temps fuse the layers substantially better - though for decorative parts it doesn't matter. I know because I made some parts that need to hold some quite high internal pressures and though the PLA actually has miscropic holes in it which led to small leaks (at +15 bar of pressure!), there were fewer leaks when I printed at higher temps. So, that leads me to believe I am getting more and better fusion between the layers when I run the temps as high as I practically can. Also, on that same note, turning the fan way down does the same. But if you have intricate parts with a lot of overhangs and such, that won't work. But then again, my use of these parts are probably different from most others.

Anyways, enough rambling;-)

I have been printing lager and larger objects with my titan aero. I am satisfied with the results. However with longer prints i noticed my extruder stepper motor is getting a bit too hot. Its currently printing at around 60°c and i am afraid it could cause some bending of the structire that's holding the titan aero (because it's 3d printed). I have read that the effective way to reduce stepper temperature would be to change the current/voltage in the firmware for that stepper motor. Do you have any idea how to do it with our 32 bit board ? some additional gcode magic ?

THE ORIGINAL ANYCUBIC FIRMWARE (ONLY for 32 bit boards!)

I am attaching a firmware file (1.4) that was sent to me directly by an Anycubic engineer but I can't open it. The format is 'ZW' and it could be an old Chinese encoding format. All the text is jumbled and in funny characters. I am likely using the wrong encoding/decoding setting when trying to open it but I have tried every option in my text editor by now.

The ChiTu firmwares seem to just be a text file containing g-code commands, so I am hoping this is, too. If any of you can open it in a text editor, please let me know which encoding settings you are using. Or better yet, re-save in an easier format and post here:)

Here's the original stock 1.4 FW:
https://www.thingiverse.com/asset:95105

Could always just use Octoprint's Firmware Flasher add on. Just compile via Arduino then flash via the addon

"could always"... Yeah, I was about to ditch my board completely as part of my own "could always" solution but then decided to see how far we could go without adding new hardware or spending money on too many new bits. I did look into Octoprint a few days ago and it seemed it didn't play nicely with the 32bit boards? Do you have it up and running with stock 1.4FW on a 32bit board?

Nah, I've got the older board.

I had a feeling that was the case. I am not 100% but I think that, sadly, makes your suggestion rather invalid in this case;-)

For some reason, my original post stating this thread was supposed to be about 32bit issues is still flagged for moderation, but let's try to keep any 8bit stuff out of this thread. There's plenty of room over here for the 8 bit'ers: https://www.thingiverse.com/groups/anycubic-i3-mega/forums/general/topic:16543#

Thanks though, could've worked...;)

I just took a look at the issue tracker for Octoprint and it appears they resolved the issue with the 32 bit board. The issue (shockingly....) was the firmware the 32 board uses, and the communication issue was resolved with a couple plugins. (https://github.com/foosel/OctoPrint/issues/2309)

So I wouldn't dismiss it as "invalid".

Also the issue was logged in 1.3.6, up to 1.4.1 now. If anyone has a PI and a 32 board they should re-attempt it.

I have Octoprint on a Pi2 running flawlessly with the stock 32bit board.

I did nothing special. New Octopi, set up yesterday and it worked out of the box. No plugins or anything needed.

The firmware my printer came with is 1.4.1 RC7/P2.

Good info, thanks.
I might do that - or I might swap the Anycubic board completely for another Chinese one from Lerdge. Despite it still not being open source, it's way more customizable than the stock one - and I can swap for better drivers. It should have bluetooth/wifi module option.

That's good info indeed.
I am holding off on the Pi for now, though.

The main issue with the 32bit board is that we can't run Marlin on it yet and that it's still not known how much we can open the door on the closed FW with these g-gode commands. For the vast majority of people, it wont be an issue but if you start modding your printer a lot, it might be.
I honestly don't mind semi-closed FW as long as it is good and has all the features needed, but while my Mega04 has run stable I feel I am lacking modification options.

There's another Chinese board manufacturer (Lerdger) I am looking into now. 32bit board with a good TFT interface and though it's still not open source, it's more customizeable than ChiTu's boards. It also has replaceable drivers, so you could easily pop TMC2100s in (it's very hard to upgrade the drivers in the stock Anycubic 32bit board). For now, Lerdger only have a four-driver version but in a few months, they will launch a board with six drivers. I think it also has a wifi module, but I don't know anything about their app for it vs. Octoprint.

What I think Anycubic/ChiTu should do, is to open up their FW to more, and easier, customization. Even if they want to keep it semi-closed this will make them look better and help the tinkerers to stay on the original boards.

Did more digging through GitHub - https://github.com/derhopp/Marlin-with-Anycubic-i3-Mega-TFT
That's the most up to date and active Marlin flavor for mega's in development. They are working towards 32 bit support, so worth keeping an eye on that.

And Anycubic will never do that. They voided my warranty after I told them I swapped out the stock extruder for a BMG. They claimed it was an extreme hardware change....never mind the fact that they covered a heat bed replacement that required me to open up the printer and re-wire the bed to the board.

They are also getting some flack from the Photon users at the moment due to a confirmed firmware issue that they refuse to fix, hence the Photonsters movement.

CHITU FIRMWARE

Here's some g-code (firmware?) that I found on ChiTu's cloud somewhere. This one is called 1.4 - same as Anycubic's btw. But I think it is the same as the two links in my first post up top (I think that is FW 1.3).

It is in Chinese, but Google does a good job of translating it. But as mentioned, nothing new in it I think, except for some lines at the bottom, which ChiTu says are for testing purposes. Those lines, translated, are:

;[code for testing];;
;M8510 ; Make the configuration take effect immediately, but do not save the configuration, mainly used in the occasion of temporary test configuration
;M8511 ;Reverted to a saved configuration, unsaved configuration lost, usually used with M8511
;M8512 "Configuration file.gcode" ; save the configuration to a file, the file is an absolute path
;M8520 I0 ;1: Support for laser engraving related configuration
; 0: does not support the relevant configuration of laser engraving, the related function is to set the speed in the more button
;M8520 T0 ;1: Support related test functions for manual leveling
; 0: does not support manual leveling related functions, the function is reflected in the operation of leveling
;M6010 T0 I4 ; Create a loop start point, start Loop0, loop four times
;M6011 T0 ; Check if Loop0 is completed, if it is not completed, continue the loop, otherwise continue
;M6020 X0.1 Y0.92 Z0.5 F6500 ; X, Y, Z and the ratio of the entire print stroke as values
;M6030 "file" ; run the file in the current relative path, if the file name has ':', it means absolute path
;M6031 ; Pause printing, but does not move the extrusion head
;M6032 "file" ; print the file from the sd card and prepare to read the file
; M6040 I0 ; restart, the parameters followed by the delay is how long mm
;M6045 I4000 "M24" ; Suspend current printing, execute M24 command after 4s delay to resume sd execution command
;M6046 I4000 "M0"; similar to M6045, but will not suspend the execution of the sd card, do not block the normal execution of the sd card
;M6050 S0.1 P0.04 ; mixing color configuration extrusion head 1 wire opening ratio of 0.1, Z for each 1 mm increase extrusion head 1 wire ratio increased by 0.04
;M6051 D0 P0 I1 ; The D0 pin level is pulled into 1 and there are 8 extended IO ports. The motherboard version must have an extended IO port at V3.6 or above.
On the side of the motherboard, there is a silk screen next to the IO port.
;M6051 D0 P1 I1 ; Wait for the D0 pin level to become 1, otherwise the command is blocked

I'm very interested in this

;M8512 "Configuration file.gcode" ; save the configuration to a file,
the file is an absolute path

Has anyone succeeded in getting a dump of the configuration?

I tried issuing the M8512 "test.gcode" command but it didn't save anything to the sd card. I'm missing the "absolute path" part. The things I tried were "/sdcard, /mnt, /sd" but no dice.

In case you're still wondering, you need to do a M6046 before you can do a M8512.

Just an idea. I was reading a bit about the Marlin based boards and there are some commands for enabling the SD card. Perhaps in ours, there's a command that enables writing back to an SD card that has to be put in before M8512 will actually work. But when I searched the ChiTu files for "SD" nothing relevant came up. But I don't have the ChiTu Tool you mentioned as it is a PC only thing...

Me neither:(.
I would have like to though. E.g. I would like to know the current stepper counts for the extruder before I start messing about with new ones for the Titan I am planning on putting on the printer.
(I can always reset to the original FW if need be)

I managed to calibrate the extrusion using the M8011 command. The gear is roughly 10mm in diameter. The number I came up with was S0.009896. When I extrude 5cm of filamment it extrudes exactly 5cm now. Before the calibration, it extruded 4.5.

There's a caveat: you have to issue the M8510 command to apply the conf changes, after you do the M8011 command; else it won't apply the new extruder step value.

Sounds good, but I think M8510 will not stick after a reboot of the printer? M8500 on the other hand should.

From the ChiTu file:
M8510 ; Make the configuration take effect immediately, but do not save the configuration, mainly used in the occasion of temporary test configuration

Your extruder stepper value is for the stock printer?
I should play around with this even before I change to the Titan as I think I have underextrusion issues right now - if I am getting 10% less filament out from the factory settings than needed, that would explain it.

I couldn't get the default values. At some point I decided to just commit my value to EEPROM with the M8500 command. I'm thinking the defaults are somewhere in the update.zw file but so far I had no luck seeing what's inside.

Me neither, no luck in cracking that zw file open.
That said, we should be able to get the original values from the older I3 Mega 8bit FW as I would be surprised if the steppers have been changed. I just don't know how to look into the Marlin files like the ones that Derhopp has ported for i3 Mega.

The default values are in https://github.com/derhopp/Marlin-with-Anycubic-i3-Mega-TFT/blob/1.1.x/Marlin/example_configurations/Anycubic/i3_Mega_Ultrabase/Configuration.h

The values for the steps per mm are #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 92.6 }. The 32 bit board uses mm per step, so the values become 0.0125, 0.0125, 0.0025 and 0.0108

I feel like I am missing something here... How do I get from knowing what the Marlin steps/mm for an axis (XYZ, not too concerned about E) to the value required by Chitu?

e= expected dimension 20
o = observed dimension 20.22
s = current number of steps per mm 80.28

then:

(e/o) x s = your new number of steps per mm 79.41

How the (insert expletive here) do I get from 79.41 above to a chitu compatible value? For some reason I thought it would be 79.41/3200 so 0.024815625 but that is way higher than any values I have seen here.

Just did my extruder calibration and man, was it out in the stock configuration. I got 93.6mm when I sent an G1 E100 command. It took a bit of messing about to actually find a new value and then get it to stick in the eeprom, but I think it works now. I have rebooted the printer a few times and it seems to have taken.

This is what I sent:

M8011 S0.01032
M8500

(Actually, the new value doesn't really correspond with a percentage wise difference based on the extrusion length deficit. Not sure why, maybe something to do with the diameter of the extruder gear. But it doesn't matter as the new value is from real world trial and error and now, I am extruding extremely close to 100mm on the dot.)

A slight warning. I'm currently facing printing issues after I have changed the extrusion rate. During infill printing, the extruder would start clicking and skipping.

First I thought that the current is too limited but that's not the case. Then I cleaned the nozzle and printed some hollow test cubes and all went well. Dimensions were OK too. But whenever I try to print something that has infill, after some layers (it varies) the extruder would start skipping.

I have noticed that if I pause printing and try to push the filament in manually, it's not moving at all. When I tried to pull it out of the hot end, I noticed that the filament was curled up in a spiral and would not pass through the neck of the heat break (I think). I think that the extruder is pushing too much filament.

Right now I've returned the "default" value and see what the results are. The cube printed OK. A bit thinner as expected. And now I'm doing a larger print with infill, supports etc.

Hey Ilama,
Maybe you can help me out on this one: How to send a G-code to extrude slower than standard?

Thing is, I am on the second round of dialing in the new direct extruder. The first time around I could get it to hit 100mm with a G1 E100 command but that was with the extruder and no hot end. Now that the hot end is assembled too, even though it's a full operating temperature, when I send the G1 E100 it extrudes less before. Probably the resistance of the smaller opening is doing this. But some people say you should calibrate the stepper values with the hot end on.

But when I send the G1 E100, I think it also extrudes much faster than when actually printing, so I think that's making things worse. I have tried commands like G1 E100 F100, G1 E100 F50 or G1 E100 F25 but the speed of extrusion doesn't slow down.

Can you figure out what I am doing wrong?

Hello,

Try doing a G92 E0 before doing G1 EXXX FXXX. I can vary the extrusion speed without problems

CALIBRATING EXTRUDER STEPS - AT WHICH SPEEDS AND WITH OR WITHOUT HOTEND?

Success (and a bit more weirdness)!
Thanks, the G92 command did the trick:-)
Not that it really matters but strangely enough there was no difference in speed between e.g. my G1 E100 F50 and G1 E100 F100 commands (I timed both runs and they were identical). But since they were both as slow as medium print speeds, I don't really care.

Longer story:
I effed up a few days ago and it has affected my prints. Thing is, I calibrated the extruder without the hotend and got it perfectly dialed in. Then I added the hotend and tried the G1 E100 again (without a speed modifier) and I couldn't get the full extrusion length any longer - so I changed the steps again to increase extrusion and set about printing. This was a mistake. My prints started coming out really dense and with bores and screw holes undersized. Outer dimensions were slightly over, too. So, after some reading, I figured out I was probably over extruding and that's why I wanted to redo the extruder calibration at slower speeds.
With the help of Ilama's G92 E0 command, I did some more tests and since I had earlier upped the extrusion stepper settings, I was now - at the slower speeds - extruding 15mm too much at 100mm tests!
So, I reloaded the extruder stepper values from when I calibrated without the hotend and tested again and - with the slower speed - I was bang on 100mm extruded:-).

Just goes to show I should have kept the values in the first place, that the higher speed made the extruder slip but with normal extrusion speeds you don't actually have to calibrate with the hotend attached.

Anyways, I am back in the game - so thanks so much!

Ah!
Yeah, that whole zeroinng, absolute, relative extrusion g-code has me confused, but this tip is good news and will give it a go, thanks!

I actually measured the extrusion speed during printer (45mm/sec print speed, 0.4mm muzzle, 0.4mm width) and it was something like 1.7mm/sec. So very, very low extrusion speeds are actually in use in normal printing and it is very plausible that when testing the speed at the default setting my extruder is slipping. I then spent a bit of time googling and some reported that around 3-5mm/s of extrusion speed, the Titan can't keep up and the filament slips. It's supposedly, not the Titan's fault, but the physical limitation of a 0.4mm muzzle and 30W heater cartridge.

Anyways, I got side tracked - but thanks again, and I will report back after this next calibration session:)

Well yeah. gr5 over on the cura/ultimaker forum did some testing and says that the pressures can get really high causing slipping etc.

Here's the link in case you're curious. The man seems to know what he's talking about: https://community.ultimaker.com/topic/10402-printing-speed/?do=findComment&comment=114511

Yep, that's what's happening.
I like his thoughts on trying not to do speed changes inside a print if you really want the best quality. I think the new Cura does that by default, whereas S3D doesn't but I could be wrong.

Incidentally, I found other super knowledgeable guys eventually talking about the same issues here: https://reprap.org/forum/read.php?1,755161

Also, in other news;-). I really, really favor the Cura interface over S3D which is just not as smooth, intuitive or pretty. But certain things are still better in S3D. Eg. USB mode is way better. For example, you can do the extrusion tests in S3D really easily and set proper low extrusion speeds right from the screen user interface.

As for further calibration, I went a bit nuts and actually adjusted the stepper counts of the Y-axis in relation to the X. The X has been spot on since day one, but I guess the gear on the Y is ever so slightly a different size. I have a 40x40mm test piece and it would come out as 40.03 x 39.85 which would be alright for most people but it annoyed me. Now, it is dead on at 40.03 x 40.03mm. (At least when the print is centered on the bed).
The same 40x40mm test has an 18mm hole in it, that comes out at 17.85-17.9mm. That's ok, as I can oversize holes a bit in the design. With a fully calibrated extruder and X and Y steppers it's just a little bit weird that holes are still small while outer dimensions are spot on.

Yes, I know these tolerances are well within what most people say you can get from a 3D printer in the first place;).

Ah... Honestly, I didn't make a single print after I changed the extruder values. I went straight from all that work to changing out the extruder for a cloned Titan Aero. I guess I just wanted to see that I could change the values before I changed the extruder as that was always the main goal.
Now, I have some issues with the Aero, though. Could be because the clone might not be a good one, could be ll sorts of things... So, now I have a whole new troubleshooting project to look ahead to, haha.

(I sometimes forget why I wanted a direct extruder. But after doing more and more prints in PETG, I found that I can't really find good retraction values to keep the stringing minimal with the bowden setup. Also, I have a few things I wanna try out in flexible filaments.)

Cool! Thanks for this:)
I would have been stumped by the steps per mm vs. mm per steps, haha.

Some quick math says your new values are about 8% from the original which lines up OK with the 45mm vs. 50mm extruded.

I found something which might be of interest in a tool called ChiTu Client apparently some kind of wifi octoprint used for communicating with the 32bit board. I am attaching the files.

This is interesting:
;mm value of each step of E. This value is equal to the 1/3200 circumference of extruder gear. In addition, if there are retarding devices, it needs to be divided by the reduction ratio;if the setting is has relatively thin wire, or it has frequent faults, the value is recommended to be smaller than the real value, so that the wire is better M8011 S0.00225

This is for the extruder. The 3200 comes from *(360/1.8)16** where 1.8 are the degrees of the stepper motor, 16 the number of microsteps

HOW TO SEND THE COMMANDS TO THE PRINTER

In practice, the way I sent the commands was to hook the laptop up to the printer with a USB cable and open Cura's Monitor. In there, there's a little box you can use to type g-code commands and push them to the printer.

You save the commands by adding M8500 to the end of your code.

I think you could also write the code, put it on an SD card and just "print" that code from the card. It should do the same thing.