Updated firmware for the K8400

I’ve launched a small project to provide updated firmware for the Vertex K8400.

The official firmware (v1.4) is based on Marlin 1.0, and was branched on the 1st May 2014. It has seen no bug fixes or features from the Marlin upstream code since.
Newer Marlin code provides bug fixes, additional features and additional GCode support (M112 Emergency Stop as an example).

I have opened up a GitHub repository, with a number of branches in the repo:
[ul]
velleman-official: Copies of the original v1.1 and v1.4 firmware.
1.0.x: Based on the stable Marlin 1.0.x code (currently 1.0.2-1, Nov 2015). Includes the cleaned up Velleman patches.
[/ul]

Additional branches will be added soon:
[ul]
1.1.x: Based on the currently unreleased RC Marlin 1.1. I will be holding off until 1.1 becomes stable, then applying the Velleman patches.
dev: Based on the bleeding edge Marlin code. Will never stabilise.
[/ul]

From what I have found, not much development has been done on the Vertex specific firmware. It would be nice if this project could grow into exactly that, with the potential to submit patches back upstream to Marlin.

Repository is here: github.com/birkett/Vertex-K8400-Firmware
Releases are here: github.com/birkett/Vertex-K8400 … e/releases

I think Velleman will update the firmware when Marlin 1.1 becomes stable.

Dylan

I don’t believe that Vellemann will do anything on this old device. Even the most obvious bugs were not corrected. It’s a pity that beginners with the K8400 still have to use 75% extrusion rate …

In the meantime I did some updates on the firmware. Initially to get rid of the major bugs (link somewhere in this forum), but that was not sufficient.

I did an update of the firmware by replacing the pressure advance fragments in MARLIN by my own code.
Actually I’m updating the temperature control routines to enable extruder wise optimization of the temperature stabilization. These routines needs to be amended further to include the fan impact.

Together with this modification the menu has to be updated.

For my approach I take the available firmware and introduce the new parts from MARLIN.

I didn’t check your version 1.5 yet, but I’m looking for a way to provide my version of the firmware to more users. Since I’m not familiar with maintaining a GITHUB repository, it could be advantageous to join the actual firmware flavors.

Unfortunately I cannot guarantee that my code is compatible with the Arduino IDE 1.6. I switched to the Eclipse IDE with the Arduino 1.5 libraries as background (Eclipse-Arduino).

So please can you give me your impression if a combined development seems feasible.

[quote=“hoh61”]I don’t believe that Vellemann will do anything on this old device. Even the most obvious bugs were not corrected. It’s a pity that beginners with the K8400 still have to use 75% extrusion rate …

In the meantime I did some updates on the firmware. Initially to get rid of the major bugs (link somewhere in this forum), but that was not sufficient.

I did an update of the firmware by replacing the pressure advance fragments in MARLIN by my own code.
Actually I’m updating the temperature control routines to enable extruder wise optimization of the temperature stabilization. These routines needs to be amended further to include the fan impact.

Together with this modification the menu has to be updated.

For my approach I take the available firmware and introduce the new parts from MARLIN.

I didn’t check your version 1.5 yet, but I’m looking for a way to provide my version of the firmware to more users. Since I’m not familiar with maintaining a GITHUB repository, it could be advantageous to join the actual firmware flavors.

Unfortunately I cannot guarantee that my code is compatible with the Arduino IDE 1.6. I switched to the Eclipse IDE with the Arduino 1.5 libraries as background (Eclipse-Arduino).

So please can you give me your impression if a combined development seems feasible.[/quote]

Which branch of Marlin are you currently working on (1.x, 1.1.x), and how extensive are your changes?

Marlin 1.x only supports Arduino 1.0.6, with no active development happening. This is the same for my 1.x based firmware.
Marlin 1.1.x (still development, currently at RC7, approaching gold) supports 1.6.9. I wouldn’t foresee any issues bringing older code in, the changes should be minor.

I will have a Marlin 1.1.x branch with the Velleman additions very soon. I was waiting for the upstream Marlin to stabilise, which it now has.

As for combined development - sounds like a great idea. Hit me up on GitHub, we can at least create a new branch my repository for your changes.

Hello Birkett,

I’m working on the MARLINRC branch, picking the code snippets I need and implementing the updates which are necessary.

I will find a way to provide you my code in short time to crosscheck how it can be joined in the repository.

Thank you for your support.

[quote=“hoh61”]Hello Birkett,

I’m working on the MARLINRC branch, picking the code snippets I need and implementing the updates which are necessary.

I will find a way to provide you my code in short time to crosscheck how it can be joined in the repository.

Thank you for your support.[/quote]

The upstream MarlinRC branch is the development copy of 1.1, so should be compiling fine with Arduino 1.6. Don’t worry about 1.0.6 support from that branch.

Dear Birkett,

I put the firmware on the net. http://ddd.k8400.hoehnemann.net

It is the latest version on which I actually run, so for me there are no major bugs.

I did some work on the temperature control, introduced besides the PID parameters an extrusion related parameter (in Marlin 1.1) and a fan related parameter and a tuning procedure to evaluate both.

I implemented some pressure advance mechanism,

I implemented a stopwatch in the menu as simple tool to elaborate the proper extrusion temperature for the material in use.

I didn’t care too much on formalisms up to now, but I think the code shall run under some open source license, so a common way is to put some comments in the header.

Finally, I checked the source files with Arduino 1.6.6 and the resulting binary was identical to my eclipse built.

So please feel free to review this stuff and check if you may implement it in your repository.

[quote=“hoh61”]Dear Birkett,

I put the firmware on the net. http://ddd.k8400.hoehnemann.net

It is the latest version on which I actually run, so for me there are no major bugs.

I did some work on the temperature control, introduced besides the PID parameters an extrusion related parameter (in Marlin 1.1) and a fan related parameter and a tuning procedure to evaluate both.

I implemented some pressure advance mechanism,

I implemented a stopwatch in the menu as simple tool to elaborate the proper extrusion temperature for the material in use.

I didn’t care too much on formalisms up to now, but I think the code shall run under some open source license, so a common way is to put some comments in the header.

Finally, I checked the source files with Arduino 1.6.6 and the resulting binary was identical to my eclipse built.

So please feel free to review this stuff and check if you may implement it in your repository.[/quote]

This looks promising - I will disseminate and integrate into a git branch with full credit.
Do you have the exact commit hash this was forked from? (i.e. what date did you grab a copy of MarlinRC?)

I’m glad i found this thread. Keep up the good work guys!

Hi there,

I hope someone can help me…
I’ve downloaded the firmware that’s linked in the first post by birkett and updated the line:

#define DEFAULT_AXIS_STEPS_PER_UNIT   {134.74,134.74,4266.66,200}

to:

#define DEFAULT_AXIS_STEPS_PER_UNIT   {134.74,134.74,4266.66,152.48}

After uploaded the new firmware I set “RESTORE FAILSAFE” and after that “STORE MEMORY” on LCD display.

But if I try to load filament it feeds just about 1/3 of the needed distance (an never touches the hotend)…

I already tried to modify the “load_extruder_end” function in “ultralcd.cpp”.
(to try that I changed E-Number in 3rd line of that function)

But even if I set a huge number like

enquecommand_P(PSTR("G1 E1000 F3000"));

it’s still the same result… it just feeds about 1/3 of the needed distance…

Please help me to fix that :frowning:

Kind regards

ok… I found what I did wrong in this thread: viewtopic.php?f=61&t=13710

My Extrusion length was too long so it just skipped that line (I thought it will extrude the max length and not skipping it)

so my problem is fixed :slight_smile:

Will this be continued?

Edit:
I think I got it: since this file refers to birkett’s repository, the main line Marlin might be used in the future and configured to the K8400 board. I thought I should share my little wisdom here for future readers.

birkett: Thanks for initiating this.

I adapted the configs files of Marlin RC 1.1 BugFix to work with a dual head K8400 :

github.com/cormier8/Marlin/tree/RCBugFix

[quote=“hoh61”]I don’t believe that Vellemann will do anything on this old device. Even the most obvious bugs were not corrected. It’s a pity that beginners with the K8400 still have to use 75% extrusion rate …

In the meantime I did some updates on the firmware. Initially to get rid of the major bugs (link somewhere in this forum), but that was not sufficient.

I did an update of the firmware by replacing the pressure advance fragments in MARLIN by my own code.
Actually I’m updating the temperature control routines to enable extruder wise optimization of the temperature stabilization. These routines needs to be amended further to include the fan impact.

Together with this modification the menu has to be updated.

For my approach I take the available firmware and introduce the new parts from MARLIN.

I didn’t check your version 1.5 yet, but I’m looking for a way to provide my version of the firmware to more users. Since I’m not familiar with maintaining a GITHUB repository, it could be advantageous to join the actual firmware flavors.

Unfortunately I cannot guarantee that my code is compatible with the Arduino IDE 1.6. I switched to the Eclipse IDE with the Arduino 1.5 libraries as background (Eclipse-Arduino).

So please can you give me your impression if a combined development seems feasible.[/quote]

@hoh61
I’ve been wanting to have a word with you about your firwmare for a single extruder, since I’m a complete nab at this. But you don’t have a personal contact. Wait!! You do lol My bad :slight_smile:
Btw, interesting read, your story :slight_smile:

@birkett
I’m willing to provide a hand as a tester. I still dont have my printer as I wanted ( heatbed functionning and some mechanical tidbits ) but as I say: “I’m game for it”

And keep up the good work
Cumps
Jorge MAnuel Oliveira

Dear Hyrokumata,

as far as I have understood the firmware there is only one configuration setting which needs to be changed. However, since I found poorly written code at several stage, it may be possible, that some additional amendments needs to be done. Since I wouldn’t disturb my two-nozzle printer, I would kindly ask someone like you to have a review ( and some suggestions) for a 1nozzle version.

Please feel free to contact me.

[quote=“hoh61”]Dear Hyrokumata,

as far as I have understood the firmware there is only one configuration setting which needs to be changed. However, since I found poorly written code at several stage, it may be possible, that some additional amendments needs to be done. Since I wouldn’t disturb my two-nozzle printer, I would kindly ask someone like you to have a review ( and some suggestions) for a 1nozzle version.

Please feel free to contact me.[/quote]

Will do. As soon as I get the 2 PSU under the printer fixed…Too many holes to be made. Maybe tomorrow i’ll have it working again.

[quote=“cormier”]I adapted the configs files of Marlin RC 1.1 BugFix to work with a dual head K8400 :

github.com/cormier8/Marlin/tree/RCBugFix[/quote]

I just installed the latest RC. Is there an overview of the menu layout? It’s quite different to the Velleman versions and I must admit I’m a bit lost:

It seems the extruder identification has changed - 1 is left & 2 is right. Does this also impact references in the slicer.

I found the preheat but no filament load/unload, do I need to do that via Gcodes - I found M701/M702

Maybe I should revert to the older FW?

John

So, I decided to switch on my brain and try and investigate, and it’s quite interesting to work through the FW and see how it really works.

Anyway, the heaters are correct - E0/HEATER1 on the right and E1/HEATER2 on the left. However the LCD shows the temperatures the wrong way round - E0 on the left, E1 on the right.
I assume that can be corrected.

For the filament load/unload I have created a set of gcode files based on the old FW functions that I can run when needed. I could see a way to copy the code from the old FW and add new menus entries but this solution is fine.

Tomorrow I will start some prints and see how things hold up