Zero to Hero; My Octo4A setup

I just wanted to share my setup with the community in an effort to help anyone going through what I went through setting up Octoprint with Octo4A and Octoeverywhere on a TronXY VEHO 600. FYI it is basically an Ender 3. I jumped right in the deep end with Octoprint, not knowing anything...

Long story short, had TONS of problems with filament runout not working correctly. Mostly not pausing when it ran out. Prints canceling when the runout switch was triggered. And not having access to UI Controls for nozzle temp and filament loading, after nozzle parking.

This worked for me, your results may vary. But this may be a starting point for someone new. So here is my solution:

MY SETUP:

  • Octo4A
  • TronXY VEHO 600
  • Octoeverywhere
  • Marlin 2.1.1
  • Moto One 5G Ace Phone

FIRMWARE SETTINGS:

Configuration.h

  • #define NOZZLE_PARK_FEATURE
    #define FILAMENT_RUNOUT_SCRIPT "M118 //action:pause" <~Turned off M600 to use actions

Configuration_adv.h

  • #define ARC_SUPPORT
    #define BLOCK_BUFFER_SIZE 64
    #define BUFSIZE 32
    #define TX_BUFFER_SIZE 32
    #define RX_BUFFER_SIZE 2048
    #define EMERGENCY_PARSER
    #define ADVANCED_PAUSE_FEATURE
    #define AUTO_REPORT_TEMPERATURES
    #define AUTO_REPORT_POSITION
    #define M114_DETAIL
    #define M114_REALTIME
    #define HOST_ACTION_COMMANDS
    #define REALTIME_REPORTING_COMMANDS
    #define FULL_REPORT_TO_HOST_FEATURE
    #define REPORT_FAN_CHANGE
    #define GCODE_CASE_INSENSITIVE
    #define HOST_ACTION_COMMANDS
    #define HOST_PAUSE_M76
    #define HOST_PROMPT_SUPPORT
    #define HOST_STATUS_NOTIFICATIONS
    #define HOST_START_MENU_ITEM
    #define HOST_SHUTDOWN_MENU_ITEM

UI GCODE SCRIPTS

Before print job starts:

M412 R S1 ;Enable (and reset) filament runout detection
M412 D15 ;15mm post-sensor filament use, change if reverse bowden is replaced
M412 H1 ;Enable host mode, so octoprint can respond
M413 S1 ;Enable Power Loss Recovery

After print job is paused:

{% if pause_position.x is not none %}
; relative XYZE
G91
M83

; retract filament of 0.8 mm up, move Z slightly upwards and 
G1 Z+5 E-0.8 F4500

; absolute XYZE
M82
G90

; move to a safe rest position, adjust as necessary
G1 X0 Y0
{% endif %}

G27 ;Park tool head for filament change

Before print job is resumed:

M412 S1 ;Enable (and reset) filament runout detection (very important for a second runout trigger)

{% if pause_position.x is not none %}
; relative extruder
M83

; prime nozzle
G1 E-0.8 F4500
G1 E0.8 F4500
G1 E0.8 F4500

; absolute E
M82

; absolute XYZ
G90

; reset E
G92 E{{ pause_position.e }}

; WARNING!!! - use M83 or M82(extruder absolute mode) according what your slicer generates
M83 ; extruder relative mode

; move back to pause position XYZ
G1 X{{ pause_position.x }} Y{{ pause_position.y }} 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 %}
{% endif %}

There are few more firmware setting I changed, but these are specific to my machine. The info above is fine for most.

Thanks for sharing this. We have seen several posts about filament runout not working recently and your firmware settings are extremely helpful....bookmarked for future reference.

1 Like

After doing a little searching it seems that something did change in Marlin, @thinkyhead thinks everything is working properly, but seems like maybe Scott and @foosel should revisit host action commands together in a collaborative way to determine what might be the root cause of normal M600 not doing what's expected during a host print now a days. I know for sure that pre Marlin 2.0 this was working as expected.

For me, using:
#define FILAMENT_RUNOUT_SCRIPT "M118 //action:pause"
Still produced a canceling status on runout and pausing, while printing from SD.

That's why getting M600 working would be ideal in this situation because then it wouldn't matter if it was a host printed file (OctoPrint scenario) or SD card printed file, they would react exactly the same.

1 Like