Ender-3 V3 SE: config settings to roll our own firmware please

SNAP I did 4 compiles on the weekend (one change at a time so I could roll back) and came so close.

You got there before me @TechieZebra!

I’ll deploy and test your mods, then race you to the latest Marlin update & install! :wink:

– Mikey

Hey @TechieZebra!

I’ve got it compiled & running.
Got a benchy printing, and a spare strip of filament in the sensor.
When I pull it out to simulate a runout, I get a cryptic message:
image
The printer stops.
The job is paused in Octoprint.
The job can be resumed in Octoprint, however the message is not cleared from the interface:
image
Will do some more research …

Mikey

Follow up: I tested again - Maybe Octoprint failed to stop because the message hasn’t cleared?

This is good!

My Octoprint doesn’t look like this! Can I ask what plugins you have running?

Try adding these scripts to Octoprint Settings->Printer->GCODE
After print job is paused:

{% if pause_position.x is not none %}
; relative XYZE
G91
M83
; retract filament, move Z slightly upwards
G1 Z+5 E-5 F4500
; absolute XYZE
M82
G90
; move to a safe rest position, adjust as necessary
G1 X0 Y0
; relative XYZE here so that you can adjust your filament via octoprint while paused
G91
M83
{% endif %}

After print job is resumed:

{% if pause_position.x is not none %}
; absolute XYZE
M82
G90
; reset E
G92 E{{ pause_position.e }}
; move back to pause position XY
G1 X{{ pause_position.x }} Y{{ pause_position.y }} F4500
; move back to pause position Z
G1 Z{{ pause_position.z }} F4500
; reset to feed rate before pause if available
{% if pause_position.f is not none %}G1 F{{ pause_position.f }}{% endif %}
; re enable filament runout detection
M412 S1
{% endif %}

These should move the print head out to a position where you can change/reload, and then it goes back and picks up where it left off.

1 Like

So the message comes up for you but it doesn’t pause when filament sensor is empty?

1 Like

It will only ‘runout’ once per session.

The message appears to be still active (you can close it, but it doesn’t dismiss it).
Used the extension ‘printer notifications’ that i think puts the ‘message voice bubble’ icon at the top of the Octoprint display (not title bar)). Clicking on it brings the active message to the fore.

I’m thinking :

  1. there’s got to be a way of clearing it, and
  2. how often does filament run out twice in a job anyway :wink: * ?

*That’s tempting fate!

I had some time so I ran some tests, simulating a filament runout. On a single print, whenever I simulated filament running out, Octoprint would pause the print. I could then resume it, and it would pick up where it left off.

So, even though the message in the top taskbar is still there, each runout would pause the print. Success!!

I did alter the Octoprint GCODE scripts for resuming a print:

{% if pause_position.x is not none %}
; absolute XYZE
M82
G90
; reset E
G92 E{{ pause_position.e }}
; move back to pause position XY
G1 X{{ pause_position.x }} Y{{ pause_position.y }} F4500
; move back to pause position Z
G1 Z{{ pause_position.z }} F4500
; reset to feed rate before pause if available
{% if pause_position.f is not none %}G1 F{{ pause_position.f }}{% endif %}
; re enable filament runout detection
M412 S1
M83
{% endif %}

Would be nice though to be able to clear the message in Octoprint.

I’ve followed along with the steps you and @Mikey_Mike_Mik have been discussing here and the filament runout sensor seems to work perfectly now with Octoprint. Just out of curiosity, is there a reason why you’re not using M600 to change the filament?

I’m a super noob when it comes to this stuff, so sorry if this is a silly question ::

1 Like

No such thing as a silly question.

Ive seen (and done) some shite answers though!

I have a plethora of tabs open on this topic at home - I’ll see if I can give you a not so shite answer tonight … unless @TechieZebra beats me to it!

Mikey.

With the M600 command, this is what it does (from the Marlin homepage):

The basic procedure will move the print head away from the print, eject the filament, wait for new filament to be inserted and the user to confirm, load and prime the filament, and continue with the print.

What I prefer, is that I don’t want it to eject the filament right away. I just want it to pause and move out of the way, as I may not be anywhere near the printing to see what is happening with the runout sensor being triggered. Once I’m physically at the printer, then I can insert the new filament if needed.

If you look at the firmware for the SE, it is supposed to send an M600 command, when the runout sensor is triggered, to the printer, and the LCD display to show a confirmation when ready to proceed (this is with the host not handling it; in my case, the host is Octoprint).

So, can you just send the M600 command immediately from Octoprint when the runout sensor is triggered? Sure, I don’t see why not.

1 Like

Hi, total noob here. I’m not comfortable compiling my own firmware yet. Would it be possible to link a version of what is already working with regards to the filament detector?

Ah gotcha, thank you so much for explaining it. That perfectly answers my question :slight_smile:

I prefer the way you have set it up in all honesty. Also it’s all been running perfectly for over a week now with your tweaks. Thank you so much for your help

I created a pull request to TomasekJ for the runout sensor to work with host like Octoprint.
Hopefully he will merge my changes and have a new binary firmware available to download.

1 Like

Since my pull request has not been completed, I uploaded my compiled firmware to download
You can find it here https://github.com/rtorchia/Ender-3V3-SE/releases/tag/V1.0.8

Hope this helps

https://www.reddit.com/r/Ender3V3SE/comments/1fw0wsk/say_hi_to_ender_3_v3_se_linear_advance/
Кто нибудь пробовал?

1 Like

Nice work TechieZebra

I just setup the octoprint on my Ender 3 V3 SE a few weeks ago and have a filament runout sensor ready to be installed so just been waiting for the firmware file.

So this file will pretty much be the same with all features as the Creality file but will allow more host action and filament sensor ???

Also,would I be able to install the firmware before installing the filament sensor runout module and run the printer until such time as I mount the sensor ???

I used TomasekJ’s modified firmware as the base and added changes for the filament sensor to be used with Octoprint. Everything else works as normal, but just now has added features, and will work withough the filament sensor installed

Thanks for finding this. I’ll have to check it out and see if I can merge it with my additions (I don’t want to loose filament runout sensor ability from Octoprint)

Can I ask one more question please

Once the sensor triggers, how much filament gets used. I want to mount my sensor above the head so once it triggers it pretty much only needs to pull 10mm to 15mm through or pull enough filament through so that it compeletely exists the sensor then pause itself for the change.

Thank you for what you have done.

Hi @TechieZebra

I have installed the firmware and currently doing a print. All looks good. However, I was under the assumption, and i probably am wrong, that with the new host actions when sending a print from Octoprint that I would see more data on the printer screen, that Octoprint would send information back to the printer display.

Have a great week.