Skip to content

Instantly share code, notes, and snippets.

@vogler
Last active December 27, 2023 12:48
Show Gist options
  • Save vogler/588c577a37f5a573afa5b1000307d41b to your computer and use it in GitHub Desktop.
Save vogler/588c577a37f5a573afa5b1000307d41b to your computer and use it in GitHub Desktop.
Artillery Genius Config

image

Software

  • Mainboard firmware: Marlin 2.0.9.2 (fork with config, see Marlin/Configuration{,_adv}.h)
    • diff: nvim -d {Marlin,config/Artillery/Genius}/Configuration.h, same for Configuration_adv.h
      • mostly calibration, new extruder and noise-free PWM for parts fan
      • LIN_ADVANCE instead of S_CURVE_ACCELERATION (don't work together)
    • before 13.11.2020: Marlin 2.0.5.3 (3dprintbeginner) (branch)
  • TFT firmware: artillery_tft_fw_1.27.x_patch_9.2 (digant@thingiverse) (TFT-config.ini)
    • Put in Marlin mode (long press, persists on reboot) when printing with OctoPrint because TFT shares serial connection.
  • Slicer: Cura 5.2.1 (Cura-start.gcode, Cura-end.gcode)
    • used 3DN profiles before, but now just Cura's default profiles with minor adjustments
      • enable Monotonic Top/Bottom Order
      • 1mm Retraction Distance
      • 50% Fan Speed
    • ~/Library/Application Support/cura/5.1/plugins: ArcWelderPlugin, AutoTowersGenerator, CalibrationShapes, GcodeFilenameFormatPlus, HTMLCuraSettings, LinearAdvanceSettingPlugin, MeasureTool, MeshTools, OctoPrintPlugin, OrientationPlugin, PauseBackendPlugin, PrinterSettingsPlugin, ProfilAnalyser, SettingVisibilityProfileCreator, SettingsGuide2, ThingiBrowser, VersionInTitlebarPlugin
  • OctoPrint on RPi4 (running anyway for InfluxDB etc.): config: see plugins, config.yaml

Hardware

Reduce noise

All stock fans run on 24V. Base and extruder fan at constant voltage, parts cooling fan is PWM controlled. ~35dBA base line measured in quiet room.

  • Base fan: replaced stock Xinyujie XYJ24B8020M (3600rpm, 36.1dBA spec) with 140mm be quiet! Shadow Wings 2 (900rpm, 14.7dBA spec, 16.79€) -> took some time to cut bigger hole in aluminum case with rotary tool but drastically reduced base noise level!
    • XL4015 step down converter (0.98$) to 12V taped to inside of case
      • CC not needed, but killed two cheaper CV-only step-downs before because colors on the stock fan cable are reversed and I didn't notice the reversed voltage -> step down exploded
    • no more fan grid
  • Extruder fan: replaced stock Xinyujie XYJ24S4010H (10krpm, 39.6dBA spec) with Noctua NF-A4x20 FLX (5krpm, 14.9dBA spec, 13.71€)
    • first tried 3 1kOhm resistors in parallel, but got hot and voltage started to rise from 11.63V to 12.27V and up
    • mini step-down converter (20x11x5mm, 0.52$) soldered to 90 degree 2 pin header plugged into fan connector
      • running at 10.60V, measured 39.4dBA at ~10cm not on heatsink; 49.3dbA at 12V on heatsink; stock 52.7dBA at 24V on heatsink
    • enough space for 2cm fan instead of stock 1cm; screws long enough
    • applied thermal paste under heatsink
    • removed 4.23g fan grid & 29g extruder plastic case; Noctua fan 19.32g, stock fan 13.49g; in total -27.4g
    • measured temps inside heat break after 5min of 200C (also tested at 100C, 150C and two more probes on heatsink):
      • stock config: 56.0C; stock fan with termal paste: 55.2C; Noctua fan with thermal paste at 10.62V: 53.1C (env. temp 1C lower) -> slightly cooler and quieter
      • with Trianglelab Bi-Metal Heatbreak: 35.5C -> Could run Noctua fan even slower, but it's quiet enough compared to parts fan & steppers.
  • put printer on a heavy slab of concrete (40x40x3cm, 2.90€ at Bauhaus) on a square of 3cm seating foam (40x40x3cm, 3.17€ at Bauhaus) to reduce vibrations from spreading: photo 1 2, see YouTube: CNC Kitchen
  • enclosure: Ikea Lack table (4.99€, now 7.99€): 3 tables stacked behind door, printer inside top table, filament on top.
    • 4 pcs 5x5x20cm wood blocks to extend legs
    • Ikea Utrusta (12€ for 2pcs of 60x60cm), cut to 45cm with jig saw fixed with wood glue between legs to close the side: photo.

Quality/Convenience

G91 ; relative positioning
; G1 E-25 F2700 ; retract 25mm at 27mm/s
G1 E-2 Z0.2 F2400 ; retract and raise Z
G1 X5 Y5 F3000 ; wipe out
G1 Z50 ; raise Z more
G90 ; absolute positionning
M106 S0 ; turn off cooling fan
M104 S0 ; turn off extruder
M140 S0 ; turn off bed
M117 Snapshot
G4 S3 ; wait for 3s to give OctoPrint Print Job History time to take a camera snapshot
G1 X0 Y180 ; present print
M84 ; disable motors
; M300 S300 P1000 ; Play a 300Hz beep sound for 1000 ms
; https://github.com/OllisGit/OctoPrint-PrintJobHistory/wiki/Slicer-Settings
; below is just the list of settings from https://csi.t6.fyi/ - this needs to be at the top b/c octoprint_PrintJobHistory/common/SlicerSettingsParser.py stops parsing after 10 gcode commands and Cura already inserts 7 commands before the start gcode
; acceleration_enabled = {acceleration_enabled}
; acceleration_infill = {acceleration_infill}
; acceleration_ironing = {acceleration_ironing}
; acceleration_layer_0 = {acceleration_layer_0}
; acceleration_prime_tower = {acceleration_prime_tower}
; acceleration_print = {acceleration_print}
; acceleration_print_layer_0 = {acceleration_print_layer_0}
; acceleration_roofing = {acceleration_roofing}
; acceleration_skirt_brim = {acceleration_skirt_brim}
; acceleration_support = {acceleration_support}
; acceleration_support_bottom = {acceleration_support_bottom}
; acceleration_support_infill = {acceleration_support_infill}
; acceleration_support_interface = {acceleration_support_interface}
; acceleration_support_roof = {acceleration_support_roof}
; acceleration_topbottom = {acceleration_topbottom}
; acceleration_travel = {acceleration_travel}
; acceleration_travel_layer_0 = {acceleration_travel_layer_0}
; acceleration_wall = {acceleration_wall}
; acceleration_wall_0 = {acceleration_wall_0}
; acceleration_wall_x = {acceleration_wall_x}
; adaptive_layer_height_enabled = {adaptive_layer_height_enabled}
; adaptive_layer_height_threshold = {adaptive_layer_height_threshold}
; adaptive_layer_height_variation = {adaptive_layer_height_variation}
; adaptive_layer_height_variation_step = {adaptive_layer_height_variation_step}
; adhesion_extruder_nr = {adhesion_extruder_nr}
; adhesion_type = {adhesion_type}
; alternate_carve_order = {alternate_carve_order}
; alternate_extra_perimeter = {alternate_extra_perimeter}
; anti_overhang_mesh = {anti_overhang_mesh}
; bottom_layers = {bottom_layers}
; bottom_skin_expand_distance = {bottom_skin_expand_distance}
; bottom_skin_preshrink = {bottom_skin_preshrink}
; bottom_thickness = {bottom_thickness}
; bridge_enable_more_layers = {bridge_enable_more_layers}
; bridge_fan_speed = {bridge_fan_speed}
; bridge_fan_speed_2 = {bridge_fan_speed_2}
; bridge_fan_speed_3 = {bridge_fan_speed_3}
; bridge_settings_enabled = {bridge_settings_enabled}
; bridge_skin_density = {bridge_skin_density}
; bridge_skin_density_2 = {bridge_skin_density_2}
; bridge_skin_density_3 = {bridge_skin_density_3}
; bridge_skin_material_flow = {bridge_skin_material_flow}
; bridge_skin_material_flow_2 = {bridge_skin_material_flow_2}
; bridge_skin_material_flow_3 = {bridge_skin_material_flow_3}
; bridge_skin_speed = {bridge_skin_speed}
; bridge_skin_speed_2 = {bridge_skin_speed_2}
; bridge_skin_speed_3 = {bridge_skin_speed_3}
; bridge_skin_support_threshold = {bridge_skin_support_threshold}
; bridge_sparse_infill_max_density = {bridge_sparse_infill_max_density}
; bridge_wall_coast = {bridge_wall_coast}
; bridge_wall_material_flow = {bridge_wall_material_flow}
; bridge_wall_min_length = {bridge_wall_min_length}
; bridge_wall_speed = {bridge_wall_speed}
; brim_gap = {brim_gap}
; brim_line_count = {brim_line_count}
; brim_outside_only = {brim_outside_only}
; brim_replaces_support = {brim_replaces_support}
; brim_width = {brim_width}
; build_volume_temperature = {build_volume_temperature}
; carve_multiple_volumes = {carve_multiple_volumes}
; center_object = {center_object}
; clean_between_layers = {clean_between_layers}
; coasting_enable = {coasting_enable}
; coasting_min_volume = {coasting_min_volume}
; coasting_speed = {coasting_speed}
; coasting_volume = {coasting_volume}
; conical_overhang_angle = {conical_overhang_angle}
; conical_overhang_enabled = {conical_overhang_enabled}
; conical_overhang_hole_size = {conical_overhang_hole_size}
; connect_infill_polygons = {connect_infill_polygons}
; connect_skin_polygons = {connect_skin_polygons}
; cool_fan_enabled = {cool_fan_enabled}
; cool_fan_full_at_height = {cool_fan_full_at_height}
; cool_fan_full_layer = {cool_fan_full_layer}
; cool_fan_speed = {cool_fan_speed}
; cool_fan_speed_0 = {cool_fan_speed_0}
; cool_fan_speed_max = {cool_fan_speed_max}
; cool_fan_speed_min = {cool_fan_speed_min}
; cool_lift_head = {cool_lift_head}
; cool_min_layer_time = {cool_min_layer_time}
; cool_min_layer_time_fan_speed_max = {cool_min_layer_time_fan_speed_max}
; cool_min_speed = {cool_min_speed}
; cross_infill_density_image = {cross_infill_density_image}
; cross_infill_pocket_size = {cross_infill_pocket_size}
; cross_support_density_image = {cross_support_density_image}
; cutting_mesh = {cutting_mesh}
; default_material_bed_temperature = {default_material_bed_temperature}
; default_material_print_temperature = {default_material_print_temperature}
; draft_shield_dist = {draft_shield_dist}
; draft_shield_enabled = {draft_shield_enabled}
; draft_shield_height = {draft_shield_height}
; draft_shield_height_limitation = {draft_shield_height_limitation}
; expand_skins_expand_distance = {expand_skins_expand_distance}
; extruder_prime_pos_abs = {extruder_prime_pos_abs}
; extruder_prime_pos_x = {extruder_prime_pos_x}
; extruder_prime_pos_y = {extruder_prime_pos_y}
; extruder_prime_pos_z = {extruder_prime_pos_z}
; extruders_enabled_count = {extruders_enabled_count}
; fill_outline_gaps = {fill_outline_gaps}
; fill_perimeter_gaps = {fill_perimeter_gaps}
; filter_out_tiny_gaps = {filter_out_tiny_gaps}
; flow_rate_extrusion_offset_factor = {flow_rate_extrusion_offset_factor}
; flow_rate_max_extrusion_offset = {flow_rate_max_extrusion_offset}
; gantry_height = {gantry_height}
; gradual_infill_step_height = {gradual_infill_step_height}
; gradual_infill_steps = {gradual_infill_steps}
; gradual_support_infill_step_height = {gradual_support_infill_step_height}
; gradual_support_infill_steps = {gradual_support_infill_steps}
; hole_xy_offset = {hole_xy_offset}
; infill_angles = {infill_angles}
; infill_before_walls = {infill_before_walls}
; infill_enable_travel_optimization = {infill_enable_travel_optimization}
; infill_extruder_nr = {infill_extruder_nr}
; infill_line_distance = {infill_line_distance}
; infill_line_width = {infill_line_width}
; infill_material_flow = {infill_material_flow}
; infill_mesh = {infill_mesh}
; infill_mesh_order = {infill_mesh_order}
; infill_multiplier = {infill_multiplier}
; infill_offset_x = {infill_offset_x}
; infill_offset_y = {infill_offset_y}
; infill_overlap = {infill_overlap}
; infill_overlap_mm = {infill_overlap_mm}
; infill_pattern = {infill_pattern}
; infill_randomize_start_location = {infill_randomize_start_location}
; infill_sparse_density = {infill_sparse_density}
; infill_sparse_thickness = {infill_sparse_thickness}
; infill_support_angle = {infill_support_angle}
; infill_support_enabled = {infill_support_enabled}
; infill_wall_line_count = {infill_wall_line_count}
; infill_wipe_dist = {infill_wipe_dist}
; initial_bottom_layers = {initial_bottom_layers}
; initial_layer_line_width_factor = {initial_layer_line_width_factor}
; ironing_enabled = {ironing_enabled}
; ironing_flow = {ironing_flow}
; ironing_inset = {ironing_inset}
; ironing_line_spacing = {ironing_line_spacing}
; ironing_monotonic = {ironing_monotonic}
; ironing_only_highest_layer = {ironing_only_highest_layer}
; ironing_pattern = {ironing_pattern}
; jerk_enabled = {jerk_enabled}
; jerk_infill = {jerk_infill}
; jerk_ironing = {jerk_ironing}
; jerk_layer_0 = {jerk_layer_0}
; jerk_prime_tower = {jerk_prime_tower}
; jerk_print = {jerk_print}
; jerk_print_layer_0 = {jerk_print_layer_0}
; jerk_roofing = {jerk_roofing}
; jerk_skirt_brim = {jerk_skirt_brim}
; jerk_support = {jerk_support}
; jerk_support_bottom = {jerk_support_bottom}
; jerk_support_infill = {jerk_support_infill}
; jerk_support_interface = {jerk_support_interface}
; jerk_support_roof = {jerk_support_roof}
; jerk_topbottom = {jerk_topbottom}
; jerk_travel = {jerk_travel}
; jerk_travel_layer_0 = {jerk_travel_layer_0}
; jerk_wall = {jerk_wall}
; jerk_wall_0 = {jerk_wall_0}
; jerk_wall_x = {jerk_wall_x}
; layer_0_z_overlap = {layer_0_z_overlap}
; layer_height = {layer_height}
; layer_height_0 = {layer_height_0}
; layer_start_x = {layer_start_x}
; layer_start_y = {layer_start_y}
; limit_support_retractions = {limit_support_retractions}
; line_width = {line_width}
; machine_acceleration = {machine_acceleration}
; machine_always_write_active_tool = {machine_always_write_active_tool}
; machine_buildplate_type = {machine_buildplate_type}
; machine_center_is_zero = {machine_center_is_zero}
; machine_depth = {machine_depth}
; machine_disallowed_areas = {machine_disallowed_areas}
; machine_endstop_positive_direction_x = {machine_endstop_positive_direction_x}
; machine_endstop_positive_direction_y = {machine_endstop_positive_direction_y}
; machine_endstop_positive_direction_z = {machine_endstop_positive_direction_z}
; machine_extruder_count = {machine_extruder_count}
; machine_extruders_share_heater = {machine_extruders_share_heater}
; machine_extruders_share_nozzle = {machine_extruders_share_nozzle}
; machine_extruders_shared_nozzle_initial_retraction = {machine_extruders_shared_nozzle_initial_retraction}
; machine_feeder_wheel_diameter = {machine_feeder_wheel_diameter}
; machine_firmware_retract = {machine_firmware_retract}
; machine_gcode_flavor = {machine_gcode_flavor}
; machine_head_with_fans_polygon = {machine_head_with_fans_polygon}
; machine_heat_zone_length = {machine_heat_zone_length}
; machine_heated_bed = {machine_heated_bed}
; machine_heated_build_volume = {machine_heated_build_volume}
; machine_height = {machine_height}
; machine_max_acceleration_e = {machine_max_acceleration_e}
; machine_max_acceleration_x = {machine_max_acceleration_x}
; machine_max_acceleration_y = {machine_max_acceleration_y}
; machine_max_acceleration_z = {machine_max_acceleration_z}
; machine_max_feedrate_e = {machine_max_feedrate_e}
; machine_max_feedrate_x = {machine_max_feedrate_x}
; machine_max_feedrate_y = {machine_max_feedrate_y}
; machine_max_feedrate_z = {machine_max_feedrate_z}
; machine_max_jerk_e = {machine_max_jerk_e}
; machine_max_jerk_xy = {machine_max_jerk_xy}
; machine_max_jerk_z = {machine_max_jerk_z}
; machine_min_cool_heat_time_window = {machine_min_cool_heat_time_window}
; machine_minimum_feedrate = {machine_minimum_feedrate}
; machine_name = {machine_name}
; machine_nozzle_cool_down_speed = {machine_nozzle_cool_down_speed}
; machine_nozzle_expansion_angle = {machine_nozzle_expansion_angle}
; machine_nozzle_head_distance = {machine_nozzle_head_distance}
; machine_nozzle_heat_up_speed = {machine_nozzle_heat_up_speed}
; machine_nozzle_id = {machine_nozzle_id}
; machine_nozzle_size = {machine_nozzle_size}
; machine_nozzle_temp_enabled = {machine_nozzle_temp_enabled}
; machine_nozzle_tip_outer_diameter = {machine_nozzle_tip_outer_diameter}
; machine_shape = {machine_shape}
; machine_show_variants = {machine_show_variants}
; machine_steps_per_mm_e = {machine_steps_per_mm_e}
; machine_steps_per_mm_x = {machine_steps_per_mm_x}
; machine_steps_per_mm_y = {machine_steps_per_mm_y}
; machine_steps_per_mm_z = {machine_steps_per_mm_z}
; machine_use_extruder_offset_to_offset_coords = {machine_use_extruder_offset_to_offset_coords}
; machine_width = {machine_width}
; magic_fuzzy_skin_enabled = {magic_fuzzy_skin_enabled}
; magic_fuzzy_skin_outside_only = {magic_fuzzy_skin_outside_only}
; magic_fuzzy_skin_point_density = {magic_fuzzy_skin_point_density}
; magic_fuzzy_skin_point_dist = {magic_fuzzy_skin_point_dist}
; magic_fuzzy_skin_thickness = {magic_fuzzy_skin_thickness}
; magic_mesh_surface_mode = {magic_mesh_surface_mode}
; magic_spiralize = {magic_spiralize}
; material_adhesion_tendency = {material_adhesion_tendency}
; material_anti_ooze_retracted_position = {material_anti_ooze_retracted_position}
; material_anti_ooze_retraction_speed = {material_anti_ooze_retraction_speed}
; material_bed_temp_prepend = {material_bed_temp_prepend}
; material_bed_temp_wait = {material_bed_temp_wait}
; material_bed_temperature = {material_bed_temperature}
; material_bed_temperature_layer_0 = {material_bed_temperature_layer_0}
; material_break_preparation_retracted_position = {material_break_preparation_retracted_position}
; material_break_preparation_speed = {material_break_preparation_speed}
; material_break_preparation_temperature = {material_break_preparation_temperature}
; material_break_retracted_position = {material_break_retracted_position}
; material_break_speed = {material_break_speed}
; material_break_temperature = {material_break_temperature}
; material_crystallinity = {material_crystallinity}
; material_diameter = {material_diameter}
; material_end_of_filament_purge_length = {material_end_of_filament_purge_length}
; material_end_of_filament_purge_speed = {material_end_of_filament_purge_speed}
; material_extrusion_cool_down_speed = {material_extrusion_cool_down_speed}
; material_final_print_temperature = {material_final_print_temperature}
; material_flow = {material_flow}
; material_flow_dependent_temperature = {material_flow_dependent_temperature}
; material_flow_layer_0 = {material_flow_layer_0}
; material_flow_temp_graph = {material_flow_temp_graph}
; material_flush_purge_length = {material_flush_purge_length}
; material_flush_purge_speed = {material_flush_purge_speed}
; material_guid = {material_guid}
; material_initial_print_temperature = {material_initial_print_temperature}
; material_maximum_park_duration = {material_maximum_park_duration}
; material_no_load_move_factor = {material_no_load_move_factor}
; material_print_temp_prepend = {material_print_temp_prepend}
; material_print_temp_wait = {material_print_temp_wait}
; material_print_temperature = {material_print_temperature}
; material_print_temperature_layer_0 = {material_print_temperature_layer_0}
; material_shrinkage_percentage = {material_shrinkage_percentage}
; material_standby_temperature = {material_standby_temperature}
; material_surface_energy = {material_surface_energy}
; max_extrusion_before_wipe = {max_extrusion_before_wipe}
; max_skin_angle_for_expansion = {max_skin_angle_for_expansion}
; mesh_position_x = {mesh_position_x}
; mesh_position_y = {mesh_position_y}
; mesh_position_z = {mesh_position_z}
; mesh_rotation_matrix = {mesh_rotation_matrix}
; meshfix_extensive_stitching = {meshfix_extensive_stitching}
; meshfix_keep_open_polygons = {meshfix_keep_open_polygons}
; meshfix_maximum_deviation = {meshfix_maximum_deviation}
; meshfix_maximum_resolution = {meshfix_maximum_resolution}
; meshfix_maximum_travel_resolution = {meshfix_maximum_travel_resolution}
; meshfix_union_all = {meshfix_union_all}
; meshfix_union_all_remove_holes = {meshfix_union_all_remove_holes}
; min_infill_area = {min_infill_area}
; min_skin_width_for_expansion = {min_skin_width_for_expansion}
; minimum_bottom_area = {minimum_bottom_area}
; minimum_interface_area = {minimum_interface_area}
; minimum_polygon_circumference = {minimum_polygon_circumference}
; minimum_roof_area = {minimum_roof_area}
; minimum_support_area = {minimum_support_area}
; mold_angle = {mold_angle}
; mold_enabled = {mold_enabled}
; mold_roof_height = {mold_roof_height}
; mold_width = {mold_width}
; multiple_mesh_overlap = {multiple_mesh_overlap}
; nozzle_disallowed_areas = {nozzle_disallowed_areas}
; ooze_shield_angle = {ooze_shield_angle}
; ooze_shield_dist = {ooze_shield_dist}
; ooze_shield_enabled = {ooze_shield_enabled}
; optimize_wall_printing_order = {optimize_wall_printing_order}
; outer_inset_first = {outer_inset_first}
; prime_blob_enable = {prime_blob_enable}
; prime_tower_brim_enable = {prime_tower_brim_enable}
; prime_tower_enable = {prime_tower_enable}
; prime_tower_flow = {prime_tower_flow}
; prime_tower_line_width = {prime_tower_line_width}
; prime_tower_min_volume = {prime_tower_min_volume}
; prime_tower_position_x = {prime_tower_position_x}
; prime_tower_position_y = {prime_tower_position_y}
; prime_tower_size = {prime_tower_size}
; prime_tower_wipe_enabled = {prime_tower_wipe_enabled}
; print_sequence = {print_sequence}
; raft_acceleration = {raft_acceleration}
; raft_airgap = {raft_airgap}
; raft_base_acceleration = {raft_base_acceleration}
; raft_base_fan_speed = {raft_base_fan_speed}
; raft_base_jerk = {raft_base_jerk}
; raft_base_line_spacing = {raft_base_line_spacing}
; raft_base_line_width = {raft_base_line_width}
; raft_base_speed = {raft_base_speed}
; raft_base_thickness = {raft_base_thickness}
; raft_fan_speed = {raft_fan_speed}
; raft_interface_acceleration = {raft_interface_acceleration}
; raft_interface_fan_speed = {raft_interface_fan_speed}
; raft_interface_jerk = {raft_interface_jerk}
; raft_interface_line_spacing = {raft_interface_line_spacing}
; raft_interface_line_width = {raft_interface_line_width}
; raft_interface_speed = {raft_interface_speed}
; raft_interface_thickness = {raft_interface_thickness}
; raft_jerk = {raft_jerk}
; raft_margin = {raft_margin}
; raft_smoothing = {raft_smoothing}
; raft_speed = {raft_speed}
; raft_surface_acceleration = {raft_surface_acceleration}
; raft_surface_fan_speed = {raft_surface_fan_speed}
; raft_surface_jerk = {raft_surface_jerk}
; raft_surface_layers = {raft_surface_layers}
; raft_surface_line_spacing = {raft_surface_line_spacing}
; raft_surface_line_width = {raft_surface_line_width}
; raft_surface_speed = {raft_surface_speed}
; raft_surface_thickness = {raft_surface_thickness}
; relative_extrusion = {relative_extrusion}
; remove_empty_first_layers = {remove_empty_first_layers}
; retract_at_layer_change = {retract_at_layer_change}
; retraction_amount = {retraction_amount}
; retraction_combing = {retraction_combing}
; retraction_combing_max_distance = {retraction_combing_max_distance}
; retraction_count_max = {retraction_count_max}
; retraction_enable = {retraction_enable}
; retraction_extra_prime_amount = {retraction_extra_prime_amount}
; retraction_extrusion_window = {retraction_extrusion_window}
; retraction_hop = {retraction_hop}
; retraction_hop_after_extruder_switch = {retraction_hop_after_extruder_switch}
; retraction_hop_after_extruder_switch_height = {retraction_hop_after_extruder_switch_height}
; retraction_hop_enabled = {retraction_hop_enabled}
; retraction_hop_only_when_collides = {retraction_hop_only_when_collides}
; retraction_min_travel = {retraction_min_travel}
; retraction_prime_speed = {retraction_prime_speed}
; retraction_retract_speed = {retraction_retract_speed}
; retraction_speed = {retraction_speed}
; roofing_angles = {roofing_angles}
; roofing_extruder_nr = {roofing_extruder_nr}
; roofing_layer_count = {roofing_layer_count}
; roofing_line_width = {roofing_line_width}
; roofing_material_flow = {roofing_material_flow}
; roofing_monotonic = {roofing_monotonic}
; roofing_pattern = {roofing_pattern}
; skin_angles = {skin_angles}
; skin_edge_support_layers = {skin_edge_support_layers}
; skin_edge_support_thickness = {skin_edge_support_thickness}
; skin_line_width = {skin_line_width}
; skin_material_flow = {skin_material_flow}
; skin_monotonic = {skin_monotonic}
; skin_no_small_gaps_heuristic = {skin_no_small_gaps_heuristic}
; skin_outline_count = {skin_outline_count}
; skin_overlap = {skin_overlap}
; skin_overlap_mm = {skin_overlap_mm}
; skin_preshrink = {skin_preshrink}
; skirt_brim_line_width = {skirt_brim_line_width}
; skirt_brim_material_flow = {skirt_brim_material_flow}
; skirt_brim_minimal_length = {skirt_brim_minimal_length}
; skirt_brim_speed = {skirt_brim_speed}
; skirt_gap = {skirt_gap}
; skirt_line_count = {skirt_line_count}
; slicing_tolerance = {slicing_tolerance}
; small_feature_max_length = {small_feature_max_length}
; small_feature_speed_factor = {small_feature_speed_factor}
; small_feature_speed_factor_0 = {small_feature_speed_factor_0}
; small_hole_max_size = {small_hole_max_size}
; smooth_spiralized_contours = {smooth_spiralized_contours}
; speed_equalize_flow_enabled = {speed_equalize_flow_enabled}
; speed_equalize_flow_max = {speed_equalize_flow_max}
; speed_infill = {speed_infill}
; speed_ironing = {speed_ironing}
; speed_layer_0 = {speed_layer_0}
; speed_prime_tower = {speed_prime_tower}
; speed_print = {speed_print}
; speed_print_layer_0 = {speed_print_layer_0}
; speed_roofing = {speed_roofing}
; speed_slowdown_layers = {speed_slowdown_layers}
; speed_support = {speed_support}
; speed_support_bottom = {speed_support_bottom}
; speed_support_infill = {speed_support_infill}
; speed_support_interface = {speed_support_interface}
; speed_support_roof = {speed_support_roof}
; speed_topbottom = {speed_topbottom}
; speed_travel = {speed_travel}
; speed_travel_layer_0 = {speed_travel_layer_0}
; speed_wall = {speed_wall}
; speed_wall_0 = {speed_wall_0}
; speed_wall_x = {speed_wall_x}
; speed_z_hop = {speed_z_hop}
; sub_div_rad_add = {sub_div_rad_add}
; support_angle = {support_angle}
; support_bottom_angles = {support_bottom_angles}
; support_bottom_density = {support_bottom_density}
; support_bottom_distance = {support_bottom_distance}
; support_bottom_enable = {support_bottom_enable}
; support_bottom_extruder_nr = {support_bottom_extruder_nr}
; support_bottom_height = {support_bottom_height}
; support_bottom_line_distance = {support_bottom_line_distance}
; support_bottom_line_width = {support_bottom_line_width}
; support_bottom_material_flow = {support_bottom_material_flow}
; support_bottom_offset = {support_bottom_offset}
; support_bottom_pattern = {support_bottom_pattern}
; support_bottom_stair_step_height = {support_bottom_stair_step_height}
; support_bottom_stair_step_min_slope = {support_bottom_stair_step_min_slope}
; support_bottom_stair_step_width = {support_bottom_stair_step_width}
; support_brim_enable = {support_brim_enable}
; support_brim_line_count = {support_brim_line_count}
; support_brim_width = {support_brim_width}
; support_conical_angle = {support_conical_angle}
; support_conical_enabled = {support_conical_enabled}
; support_conical_min_width = {support_conical_min_width}
; support_connect_zigzags = {support_connect_zigzags}
; support_enable = {support_enable}
; support_extruder_nr = {support_extruder_nr}
; support_extruder_nr_layer_0 = {support_extruder_nr_layer_0}
; support_fan_enable = {support_fan_enable}
; support_infill_angles = {support_infill_angles}
; support_infill_extruder_nr = {support_infill_extruder_nr}
; support_infill_rate = {support_infill_rate}
; support_infill_sparse_thickness = {support_infill_sparse_thickness}
; support_initial_layer_line_distance = {support_initial_layer_line_distance}
; support_interface_angles = {support_interface_angles}
; support_interface_density = {support_interface_density}
; support_interface_enable = {support_interface_enable}
; support_interface_extruder_nr = {support_interface_extruder_nr}
; support_interface_height = {support_interface_height}
; support_interface_line_width = {support_interface_line_width}
; support_interface_material_flow = {support_interface_material_flow}
; support_interface_offset = {support_interface_offset}
; support_interface_pattern = {support_interface_pattern}
; support_interface_skip_height = {support_interface_skip_height}
; support_join_distance = {support_join_distance}
; support_line_distance = {support_line_distance}
; support_line_width = {support_line_width}
; support_material_flow = {support_material_flow}
; support_mesh = {support_mesh}
; support_mesh_drop_down = {support_mesh_drop_down}
; support_meshes_present = {support_meshes_present}
; support_offset = {support_offset}
; support_pattern = {support_pattern}
; support_roof_angles = {support_roof_angles}
; support_roof_density = {support_roof_density}
; support_roof_enable = {support_roof_enable}
; support_roof_extruder_nr = {support_roof_extruder_nr}
; support_roof_height = {support_roof_height}
; support_roof_line_distance = {support_roof_line_distance}
; support_roof_line_width = {support_roof_line_width}
; support_roof_material_flow = {support_roof_material_flow}
; support_roof_offset = {support_roof_offset}
; support_roof_pattern = {support_roof_pattern}
; support_skip_some_zags = {support_skip_some_zags}
; support_skip_zag_per_mm = {support_skip_zag_per_mm}
; support_structure = {support_structure}
; support_supported_skin_fan_speed = {support_supported_skin_fan_speed}
; support_top_distance = {support_top_distance}
; support_tower_diameter = {support_tower_diameter}
; support_tower_maximum_supported_diameter = {support_tower_maximum_supported_diameter}
; support_tower_roof_angle = {support_tower_roof_angle}
; support_tree_angle = {support_tree_angle}
; support_tree_branch_diameter = {support_tree_branch_diameter}
; support_tree_branch_diameter_angle = {support_tree_branch_diameter_angle}
; support_tree_branch_distance = {support_tree_branch_distance}
; support_tree_collision_resolution = {support_tree_collision_resolution}
; support_type = {support_type}
; support_use_towers = {support_use_towers}
; support_wall_count = {support_wall_count}
; support_xy_distance = {support_xy_distance}
; support_xy_distance_overhang = {support_xy_distance_overhang}
; support_xy_overrides_z = {support_xy_overrides_z}
; support_z_distance = {support_z_distance}
; support_zag_skip_count = {support_zag_skip_count}
; switch_extruder_extra_prime_amount = {switch_extruder_extra_prime_amount}
; switch_extruder_prime_speed = {switch_extruder_prime_speed}
; switch_extruder_retraction_amount = {switch_extruder_retraction_amount}
; switch_extruder_retraction_speed = {switch_extruder_retraction_speed}
; switch_extruder_retraction_speeds = {switch_extruder_retraction_speeds}
; top_bottom_extruder_nr = {top_bottom_extruder_nr}
; top_bottom_pattern = {top_bottom_pattern}
; top_bottom_pattern_0 = {top_bottom_pattern_0}
; top_bottom_thickness = {top_bottom_thickness}
; top_layers = {top_layers}
; top_skin_expand_distance = {top_skin_expand_distance}
; top_skin_preshrink = {top_skin_preshrink}
; top_thickness = {top_thickness}
; travel_avoid_distance = {travel_avoid_distance}
; travel_avoid_other_parts = {travel_avoid_other_parts}
; travel_avoid_supports = {travel_avoid_supports}
; travel_compensate_overlapping_walls_0_enabled = {travel_compensate_overlapping_walls_0_enabled}
; travel_compensate_overlapping_walls_enabled = {travel_compensate_overlapping_walls_enabled}
; travel_compensate_overlapping_walls_x_enabled = {travel_compensate_overlapping_walls_x_enabled}
; travel_retract_before_outer_wall = {travel_retract_before_outer_wall}
; wall_0_extruder_nr = {wall_0_extruder_nr}
; wall_0_inset = {wall_0_inset}
; wall_0_material_flow = {wall_0_material_flow}
; wall_0_wipe_dist = {wall_0_wipe_dist}
; wall_extruder_nr = {wall_extruder_nr}
; wall_line_count = {wall_line_count}
; wall_line_width = {wall_line_width}
; wall_line_width_0 = {wall_line_width_0}
; wall_line_width_x = {wall_line_width_x}
; wall_material_flow = {wall_material_flow}
; wall_min_flow = {wall_min_flow}
; wall_min_flow_retract = {wall_min_flow_retract}
; wall_overhang_angle = {wall_overhang_angle}
; wall_overhang_speed_factor = {wall_overhang_speed_factor}
; wall_thickness = {wall_thickness}
; wall_x_extruder_nr = {wall_x_extruder_nr}
; wall_x_material_flow = {wall_x_material_flow}
; wipe_brush_pos_x = {wipe_brush_pos_x}
; wipe_hop_amount = {wipe_hop_amount}
; wipe_hop_enable = {wipe_hop_enable}
; wipe_hop_speed = {wipe_hop_speed}
; wipe_move_distance = {wipe_move_distance}
; wipe_pause = {wipe_pause}
; wipe_repeat_count = {wipe_repeat_count}
; wipe_retraction_amount = {wipe_retraction_amount}
; wipe_retraction_enable = {wipe_retraction_enable}
; wipe_retraction_extra_prime_amount = {wipe_retraction_extra_prime_amount}
; wipe_retraction_prime_speed = {wipe_retraction_prime_speed}
; wipe_retraction_retract_speed = {wipe_retraction_retract_speed}
; wipe_retraction_speed = {wipe_retraction_speed}
; wireframe_bottom_delay = {wireframe_bottom_delay}
; wireframe_drag_along = {wireframe_drag_along}
; wireframe_enabled = {wireframe_enabled}
; wireframe_fall_down = {wireframe_fall_down}
; wireframe_flat_delay = {wireframe_flat_delay}
; wireframe_flow = {wireframe_flow}
; wireframe_flow_connection = {wireframe_flow_connection}
; wireframe_flow_flat = {wireframe_flow_flat}
; wireframe_height = {wireframe_height}
; wireframe_nozzle_clearance = {wireframe_nozzle_clearance}
; wireframe_printspeed = {wireframe_printspeed}
; wireframe_printspeed_bottom = {wireframe_printspeed_bottom}
; wireframe_printspeed_down = {wireframe_printspeed_down}
; wireframe_printspeed_flat = {wireframe_printspeed_flat}
; wireframe_printspeed_up = {wireframe_printspeed_up}
; wireframe_roof_drag_along = {wireframe_roof_drag_along}
; wireframe_roof_fall_down = {wireframe_roof_fall_down}
; wireframe_roof_inset = {wireframe_roof_inset}
; wireframe_roof_outer_delay = {wireframe_roof_outer_delay}
; wireframe_straight_before_down = {wireframe_straight_before_down}
; wireframe_strategy = {wireframe_strategy}
; wireframe_top_delay = {wireframe_top_delay}
; wireframe_top_jump = {wireframe_top_jump}
; wireframe_up_half_speed = {wireframe_up_half_speed}
; xy_offset = {xy_offset}
; xy_offset_layer_0 = {xy_offset_layer_0}
; z_seam_corner = {z_seam_corner}
; z_seam_position = {z_seam_position}
; z_seam_relative = {z_seam_relative}
; z_seam_type = {z_seam_type}
; z_seam_x = {z_seam_x}
; z_seam_y = {z_seam_y}
; zig_zaggify_infill = {zig_zaggify_infill}
; zig_zaggify_support = {zig_zaggify_support}
G28 ; home X/Y/Z
G1 Z0.4 F3000 ; move Z up to prevent scratching the bed
G92 E0 ; reset extruder
G1 X0 Y20 Z0.3 F5000.0 ; move to start-line position
G1 X0 Y200.0 Z0.3 F1500.0 E15 ; draw 1st line
G1 X3 Y200.0 Z0.4 F5000.0 ; move to side a little
G1 X3 Y20 Z0.4 F1500.0 E30 ; draw 2nd line
G92 E0 ; reset extruder
; G1 Z1.0 F3000 ; move Z up to prevent scratching the bed
; from https://reprap.org/wiki/Start_GCode_routines
; G1 X110 F3000 ; move half way along the front edge
; G1 E15 ; extrude a blob of filament
; G1 Z15 F9000 E5 ; move 15 mm up, fast, while extruding 5mm
; G4 P10000 ; wait 10 seconds for filament to cool
; G1 X0 ; move back so that nozzle does not dip into blob
; G92 E0 ; reset extruder
M150 W0 ; turn off LED b/c it blinds webcam (heating: blue to red, then white by default)
; M503 ; Print a concise report of all current settings (in SRAM) to the host console.
; Linear Units:
G21 ; (mm)
; Temperature Units:
M149 C ; Units in Celsius
; Filament settings (Disabled):
M200 S0 D1.7500
; Steps per unit:
M92 X80.1210 Y80.1210 Z399.7780 E414.2600
; Max feedrates (units/s):
M203 X300.0000 Y300.0000 Z50.0000 E40.0000
; Max Acceleration (units/s2):
M201 X2000.0000 Y2000.0000 Z100.0000 E10000.0000
; Acceleration (units/s2) (P<print-accel> R<retract-accel> T<travel-accel>):
M204 P1000.0000 R10000.0000 T2000.0000
; Advanced (B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate> J<junc_dev>):
M205 B20000.0000 S0.0000 T0.0000 J0.0600
; Home offset:
M206 X0.0000 Y0.0000 Z0.0000
; Mesh Bed Leveling:
M420 S0 Z10.0000 ; Leveling OFF
G29 S3 I0 J0 Z-0.01000
G29 S3 I1 J0 Z-0.02000
G29 S3 I2 J0 Z-0.03000
G29 S3 I3 J0 Z-0.01000
G29 S3 I4 J0 Z0.07000
G29 S3 I0 J1 Z0.14000
G29 S3 I1 J1 Z0.07000
G29 S3 I2 J1 Z0.06000
G29 S3 I3 J1 Z0.04000
G29 S3 I4 J1 Z0.10000
G29 S3 I0 J2 Z0.16000
G29 S3 I1 J2 Z0.05000
G29 S3 I2 J2 Z0.00000
G29 S3 I3 J2 Z0.01000
G29 S3 I4 J2 Z0.10000
G29 S3 I0 J3 Z0.13000
G29 S3 I1 J3 Z0.06000
G29 S3 I2 J3 Z0.03000
G29 S3 I3 J3 Z0.04000
G29 S3 I4 J3 Z0.10000
G29 S3 I0 J4 Z-0.05000
G29 S3 I1 J4 Z-0.07000
G29 S3 I2 J4 Z-0.06000
G29 S3 I3 J4 Z-0.02000
G29 S3 I4 J4 Z0.00000
G29 S4 Z0.00000
; Hotend PID:
M301 P14.1851 I0.9310 D54.0345
; Bed PID:
M304 P23.3710 I3.3962 D107.2182
; Z-Probe Offset:
M851 X0.0000 Y0.0000 Z0.0000 ; (mm)
; Linear Advance:
M900 K0.0700
; Filament load/unload:
M603 L0.0000 U100.0000 ; (mm)
# current version: artillery_tft_fw_1.27.x_patch_9.2
#--------------------------------------------------------------------
#
# DEFAULT CONFIG FILE FOR BigTreeTech TFT CONTROLLERS
#
#--------------------------------------------------------------------
#--------------------------------------------------------------------
# Supported TFT Variants
#--------------------------------------------------------------------
#
# BIGTREE_TFT24_V1_1 / BIGTREE_TFT28_V1_0 / BIGTREE_TFT28_V3_0
# BIGTREE_TFT35_V1_0 / BIGTREE_TFT35_V1_1 / BIGTREE_TFT35_V1_2
# BIGTREE_TFT35_V2_0 / BIGTREE_TFT35_V3_0 / BIGTREE_TFT35_E3_V3_0
# BIGTREE_TFT35_B1_V3_0 / BIGTREE_TFT43_V3_0 / BIGTREE_TFT50_V3_0
# BIGTREE_TFT70_V3_0
#
# BIGTREE_GD_TFT24_V1_1 / BIGTREE_GD_TFT35_V2_0 / BIGTREE_GD_TFT35_V3_0
# BIGTREE_GD_TFT35_E3_V3_0 / BIGTREE_GD_TFT35_B1_V3_0 / BIGTREE_GD_TFT43_V3_0
# BIGTREE_GD_TFT50_V3_0 / BIGTREE_GD_TFT70_V3_0
#
# MKS_TFT28_V3_0 / MKS_TFT28_V4_0 / MKS_TFT28_NEW_GENIUS
# MKS_TFT32_V1_3 / MKS_TFT32_V1_4 / MKS_TFT35_V1_0
#
# Firmware source: https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware
#--------------------------------------------------------------------
# Supported Marlin Firmware Versions
#--------------------------------------------------------------------
#
# Minimum Marlin firmware version: 2.1.1
# Distribution date: 2022-08-06
# Firmware source: https://github.com/MarlinFirmware/Marlin/releases
#
# To use all the features and functionalities supported by the TFT,
# the following options must be enabled in Marlin firmware.
#
# General options which MUST be always activated:
# EEPROM_SETTINGS (in Configuration.h)
# BABYSTEPPING (in Configuration_adv.h)
# AUTO_REPORT_TEMPERATURES (in Configuration_adv.h)
# AUTO_REPORT_POSITION (in Configuration_adv.h)
# M115_GEOMETRY_REPORT (in Configuration_adv.h)
# M114_DETAIL (in Configuration_adv.h)
# REPORT_FAN_CHANGE (in Configuration_adv.h)
#
# Options to support printing from onboard media:
# SDSUPPORT (in Configuration.h)
# LONG_FILENAME_HOST_SUPPORT (in Configuration_adv.h)
# AUTO_REPORT_SD_STATUS (in Configuration_adv.h)
# SDCARD_CONNECTION ONBOARD (in Configuration_adv.h)
#
# Options to support dialog with host:
# EMERGENCY_PARSER (in Configuration_adv.h)
# SERIAL_FLOAT_PRECISION 4 (in Configuration_adv.h)
# HOST_ACTION_COMMANDS (in Configuration_adv.h)
# HOST_PROMPT_SUPPORT (in Configuration_adv.h)
# HOST_STATUS_NOTIFICATIONS (in Configuration_adv.h)
#
# Options to support M600 with host & (Un)Load menu:
# Options to support dialog with host (as pre requisite)
# NOZZLE_PARK_FEATURE (in Configuration.h)
# ADVANCED_PAUSE_FEATURE (in Configuration_adv.h)
# PARK_HEAD_ON_PAUSE (in Configuration_adv.h)
# FILAMENT_LOAD_UNLOAD_GCODES (in Configuration_adv.h)
#
# Options to fully support Bed Leveling menu:
# Z_MIN_PROBE_REPEATABILITY_TEST (in Configuration.h)
# G26_MESH_VALIDATION (in Configuration.h)
# Z_STEPPER_AUTO_ALIGN (in Configuration_adv.h)
#--------------------------------------------------------------------
# General Settings
#--------------------------------------------------------------------
#### Serial Ports (Primary and Supplementary)
# Serial ports connected to devices such as Printer, ESP3D, OctoPrint and other Controllers.
# In order to successfully establish a communication through a serial port, set a baudrate
# matching the baudrate configured on the connected device.
# Disable the serial port when it is not in use and/or not connected to a device (floating) to
# avoid to receive and process wrong data due to possible electromagnetic interference (EMI).
#
# NOTES:
# - Serial port P1 is the primary serial connection to the printer and cannot be disabled.
# - A baudrate of 250000 works in most cases, but you can try a lower speed if you
# commonly experience drop-outs during host printing.
# You may try up to 1000000 to speed up SD file transfer.
#
# Format: [serial_port: P1:<baudrate> P2:<baudrate> P3:<baudrate> P4:<baudrate>
# Target port: P1: Printer
# P2: WIFI (e.g. ESP3D)
# P3: UART 3 (e.g. OctoPrint)
# P4: UART 4
# Value range: P1: [min: 1, max: 9]
# P2: [min: 0, max: 9]
# P3: [min: 0, max: 9]
# P4: [min: 0, max: 9]
# Options: [OFF (port disabled): 0, 2400: 1, 9600: 2, 19200: 3, 38400: 4, 57600: 5, 115200: 6, 250000: 7, 500000: 8, 1000000: 9]
serial_port:P1:7 P2:0 P3:0 P4:0
#### Emulated M600
# The TFT intercepts the M600 G-code (filament change) and emulates the handling logic
# otherwise provided by Marlin firmware.
#
# NOTE: Enable it in case Marlin firmware does not properly support M600 on the mainboard.
#
# Options: [disable: 0, enable: 1]
emulated_m600:0
#### Emulated M109 And M190
# The TFT intercepts the blocking M109 and M190 G-codes (set target hotend and bed temperatures)
# and converts them to the non-blocking M104 and M140 G-codes respectively.
#
# NOTE: Enable it so the TFT can still communicate with Marlin firmware even if the target
# temperature is not reached yet. Otherwise the communication (TFT<->Marlin) will be
# frozen until desired/set temperatures are obtained.
#
# Options: [disable: 0, enable: 1]
emulated_m109_m190:1
#### Event LED
# When printing from TFT SD card / TFT USB disk, the TFT periodically sets the printer's (neopixel)
# LED color and TFT's knob LED color, if any, according to the current nozzle and bed temperatures.
#
# NOTE: If "emulated_m109_m190" is disabled (heating controlled by printer), the TFT cannot control the
# printer's (neopixel) LED during heating. It will control only the TFT's knob LED, if any.
#
# Options: [disable: 0, enable: 1]
event_led:1
#### G-code File Comment Parsing
# The TFT parses and processes extra information provided by the slicer as comments in the G-code file.
# If enabled, the current implementation parses and processes print time and print layer information
# from the G-code file (nothing else).
# If disabled, the "layer_disp_type" setting provided in "UI Settings" section becomes redundant.
#
# NOTE: Enable it in case the slicer (e.g. Cura) supports extra information.
#
# Options: [disable: 0, enable: 1]
file_comment_parsing:1
#--------------------------------------------------------------------
# UI Settings
#--------------------------------------------------------------------
#### Rotated UI
# Rotate UI by 180 degrees.
# Options: [disable: 0, enable: 1]
rotated_ui:0
#### Touch Mode Language
# Select the language to use on the LCD while in Touch Mode.
#
# NOTE: To add/flash a second language copy the required "language_xx.ini" file from
# "Language Packs" folder to the SD root folder.
# Then press the reset button to load/flash the copied language file.
#
# Options: [Primary Language (english): 0, Secondary Language: 1]
language:0
#### Status Screen
# Select the default home screen while in Touch Mode.
# If enabled, the Status Screen menu will become the default home screen.
# If disabled, the Main menu will become the default home screen.
#
# NOTE: Both the Status Screen and Main menus display the current temperature, fan and speeds.
# Furthermore, the Status Screen menu provides the status area reporting the printer notifications.
#
# Options: [disable: 0, enable: 1]
status_screen:1
#### Touch Mode Colors
# Set colors used in Touch Mode.
#
# NOTE: Select an option from the provided list or set the color (RGB888 format) hex value directly
# (start with "0x"), such as: Red: 0xFF0000, Green: 0x00FF00, Blue: 0x0000FF.
#
# Options: [ WHITE: 0, BLACK: 1, RED: 2, GREEN: 3, BLUE: 4, CYAN: 5, MAGENTA: 6, YELLOW: 7,
# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 12, DARKGREEN: 13, GRAY: 14, DARKGRAY: 15]
## Title background color
title_background_color:1
## Menu background color
menu_background_color:1
## Menu font color
menu_font_color:0
## Reminder font color, such as: "No print attached", "Busy processing", etc.
reminder_font_color:2
## Status (e.g. volume reminder, ABL probing point etc.) font color, such as: "Card inserted", "Card removed"
status_font_color:5
## Background color for X Y Z position display in Status Screen menu
status_xyz_bg_color:15
## List View border color
list_border_color:15
## List View button background color
list_button_bg_color:15
## Color used by the Mesh Editor menu for drawing the mesh with the minimum value in the grid
mesh_min_color:7
## Color used by the Mesh Editor menu for drawing the mesh with the maximum value in the grid
mesh_max_color:2
#### Terminal Text Color Scheme
# Color scheme for displaying text in Terminal menu.
# Options: [Material Dark: 0, Material Light: 1, High Contrast: 2]
# Material Dark: Dark background with light font color and orange command font color.
# Material Light: Light background with dark font color and orange command font color.
# High Contrast: Black background with white font color and orange command font color.
terminal_color_scheme:2
#### Notification Style For ACK Messages
# Set the notification style to use for displaying the ACK messages which start with "echo:".
#
# NOTE: The OFF value is applied to any ACK message type (e.g. even to known echo ACK).
# It means that any kind of ACK message is silently discarded.
#
# Options: [OFF: 0, POPUP: 1, TOAST: 2]
# OFF: No notification. The message is ignored.
# POPUP: Display a popup window for user confirmation.
# TOAST: A non-blocking Toast notification is displayed for few seconds. No user interaction is needed.
ack_notification:1
#### Files Sorting
# Sort files and folders based on the selected option.
#
# NOTE: Only applicable for files in TFT SD card and TFT USB disk.
#
# Options: [Date Newest First: 0, Date Oldest First: 1, Name Ascending: 2, Name Descending: 3]
files_sort_by:0
#### Files List Mode
# Display files in list mode instead of icon mode.
# Options: [disable: 0, enable: 1]
files_list_mode:1
#### Filename Extension
# Display fullname for files listed in List Mode / Icon Mode menu.
# If disabled, any filename extension starting with ".g" or ".G" (e.g. ".g", ".gco", ".gcode" etc.) will be hidden.
# Options: [disable: 0, enable: 1]
filename_extension:1
#### Fan Speed In Percentage
# Show fan speed in percentage. If disabled fan speed will be displayed as PWM values.
# Options: [disable: 0, enable: 1]
fan_speed_percentage:1
#### Persistent Temperature Info
# Show persistent temperature info in all menus.
# Options: [disable: 0, enable: 1]
persistent_info:1
#### Temperature And Wait ACK In Terminal
# Show "temperature" and "wait" ACK in Terminal menu.
# Options: [disable: 0, enable: 1]
terminal_ack:0
#### Notification M117
# If enabled, any notification received from Marlin through "//action:notification" is also
# stored on the notification screen. The notification screen reporting the history of the
# received notifications is displayed pressing on the notification bar.
#
# NOTE: Marlin notifications are also always displayed on the Status Screen menu.
# Furthermore, they are also displayed on the notification bar as toast messages
# in case the current menu is not the Status Screen menu.
#
# Options: [disable: 0, enable: 1]
notification_m117:0
#### Progress Source
# This sets the source of the progress calculation, G-code file advance based or time based.
# In file mode it is a simple file progress, it tells you the percentage of the G-codes
# executed. It doesn't reflect the amount of work done, only in a very few cases (ex. a 2D
# shape expanded vertically like a cylinder, cube, etc).
# Time based mode is very close to the real amount of work done, but it is still not perfect,
# it relies on the estimate the slicer has done. It needs info from the slicer, the elapsed
# time or the remaining time, if it's missing, the progress source defaults to file progress
# mode. If no "M73 R" is present in the G-code file than it requires "file_comment_parsing"
# to be enabled.
#
# NOTE: If "M73 P" is present in the G-code file than file or time based progress will be
# overriden by that.
#
# Options: [File progress mode: 0, Time based progress: 1]
prog_source:0
#### Progress Numeric Display Mode During Print
# This sets the default display type for print progress numeric display. It can be changed during
# print by pressing the hourglass icon.
# At each click it will alter between the 3 variants.
#
# NOTE: Some slicers include time related info in the G-code files as comments. If the time info
# is not added by the slicer, then a post processing plugin is needed that adds that info in
# the G-code file (comment or M73 Rxx format).
# If no remaining time info is present in the G-code file (comment or M73 Rxx), the display
# defaults to option 0.
#
# Options: [Percentage & Elapsed time: 0, Percentage & Remaining time: 1, Elapsed time & Remaining time: 2]
prog_disp_type:2
#### Current Layer Display Mode During Print
# This sets the default display type for the printing layer. It can be changed during print by
# pressing the nozzle icon. At each click it will alter between the 3 variants.
#
# NOTES:
# - It requires "file_comment_parsing" to be enabled.
# - This feature uses the layer number comments added by slicers at the starting of each layer.
# - Some slicers may not include the total number of layers in the G-code file. In this case only
# the current layer will be displayed. To display total number of layers, a comment should be
# added at the beginning of the G-code file in the format "; Layer count: xx".
# Separators can be " ", ":", "_" or "=".
# - If the total number of layers exceeds 999, this information will not be displayed because
# there is not enough space for both current and total layer number to be shown.
#
# - For PrusaSlicer, to enable this feature, following comment lines must be added in
# Printer Settings -> Custom G-code section:
# - In After layer change G-code section:
# ";LAYER:[layer_num]"
# - In Start G-code section:
# ";LAYER_COUNT:[total_layer_count]"
#
# Options: [Layer height: 0, Layer number: 1, Both - height & number: 2]
layer_disp_type:0
#--------------------------------------------------------------------
# Marlin Mode Settings (only for TFT24 V1.1 & TFT28/TFT35/TFT43/TFT50/TFT70 V3.0)
#--------------------------------------------------------------------
#### Default Mode
# Set Marlin/Touch Mode as the default mode at startup.
#
# NOTE: Mode switching is possible only for Marlin Mode and Touch Mode by a long press of
# 1.5 seconds on the display or holding down the encoder button for 1.5 seconds.
#
# Options: [Marlin Mode: 0, Touch Mode: 1, Blocked Marlin Mode: 2, Blocked Touch Mode: 3]
default_mode:1
#### Serial Always ON
# Keep UART (serial communication) alive in Marlin Mode.
# Allows seamless OctoPrint UART connection to the TFT's UART/serial expansion port
# no matter which mode the TFT is in.
# Options: [disable: 0, enable: 1]
serial_always_on:0
#### Marlin Mode Background & Font Colors
# Set colors used in Marlin Mode.
#
# NOTE: Select an option from the provided list or set the color (RGB888 format) hex value directly
# (start with "0x"), such as: Red: 0xFF0000, Green: 0x00FF00, Blue: 0x0000FF.
#
# Options: [ WHITE: 0, BLACK: 1, RED: 2, GREEN: 3, BLUE: 4, CYAN: 5, MAGENTA: 6, YELLOW: 7,
# ORANGE: 8, PURPLE: 9, LIME: 10, BROWN: 11, DARKBLUE: 12, DARKGREEN: 13, GRAY: 14, DARKGRAY: 15]
## Marlin Mode background color
marlin_background_color:1
## Marlin Mode font color
marlin_font_color:8
#### Fullscreen Marlin Mode
# Run Marlin Mode in fullscreen.
#
# NOTE: Disable is recommended for TFT24.
#
# Options: [disable: 0, enable: 1]
marlin_fullscreen:1
#### Show Marlin Mode Title
# Show banner text at the top of the TFT in Marlin Mode.
# Options: [disable: 0, enable: 1]
marlin_show_title:1
#### Marlin Mode Title
# Banner text displayed at the top of the TFT in Marlin Mode.
# Value range: [min: 3, max: 20 characters]
marlin_title:Marlin Mode
#### Marlin Mode Type
# Select Marlin Mode type.
# Options: [128x64 Full Graphic LCD: 0, 20x4 Character LCD: 1]
marlin_type:0
#--------------------------------------------------------------------
# Printer / Machine Settings
#--------------------------------------------------------------------
#### Hotend Count
# Value range: [min: 0, max: 6]
hotend_count:1
#### Heated Bed Support
# Options: [disable: 0, enable: 1]
heated_bed:1
#### Heated Chamber Support
# The TFT will auto-detect if chamber heating is enabled in Marlin firmware.
# Options: [disable: 0, enable: 1]
heated_chamber:0
#### Extruder Count
# Value range: [min: 0, max: 6]
ext_count:1
#### Fan Count
# Value range: [min: 1, max: 6]
fan_count:1
#### Controller Fan Support
# Enable/disable controller fan speed control for Active and Idle cooling if Marlin
# firmware supports controller fan (M710).
# Options: [disable: 0, enable: 1]
controller_fan:0
#### Bed / Extruder / Chamber Maximum Temperatures
# Format: [max_temp: T0:<max temp> T1:<max temp> T2:<max temp> T3:<max temp> T4:<max temp> T5:<max temp> BED:<max temp> CHAMBER:<max temp>]
# Unit: [temperature in °C]
# Value range: hotend: [min: 20, max: 1000]
# bed: [min: 20, max: 400]
# chamber: [min: 20, max: 200]
max_temp:T0:275 T1:275 T2:275 T3:275 T4:275 T5:275 BED:150 CHAMBER:60
#### Cold Extrusion Minimum Temperature
# Minimum temperature needed to extrude/retract.
# Any extrusion/retraction below this temperature will be prevented.
# Unit: [temperature in °C]
# Value range: [min: 20, max: 1000]
min_temp:180
#### Fan Maximum PWM Speed
# Set minimum and maximum fan speed allowed by the printer for Cooling Fans & Controller Fan.
# Cooling fans have index from F0 to F5.
# Controller fan has index CtA and CtI (Active and Idle). It requires "controller_fan" to be enabled.
# Format: [fan_max: F0:<max PWM> F1:<max PWM> F2:<max PWM> F3:<max PWM> F4:<max PWM> F5:<max PWM> CtA:<max PWM> CtI:<max PWM>]
# Unit: [PWM]
# Value range: [min: 25, max: 255]
fan_max:F0:255 F1:255 F2:255 F3:255 F4:255 F5:255 CtA:255 CtI:255
#### Machine Size / Build Area
# The TFT will auto-detect the machine size (min and max) in Marlin firmware (requires
# enabling "M115_GEOMETRY_REPORT" in Configuration_adv.h in Marlin firmware).
# Format: [size_min: X<minimum distance> Y<minimum distance> Z<minimum distance>]
# [size_max: X<maximum distance> Y<maximum distance> Z<maximum distance>]
# Unit: [distance in mm]
# Value range: [min: -2000, max: 2000]
size_min:X0 Y0 Z0
size_max:X230 Y220 Z250
#### X & Y Move Speeds/Feedrates
# Move speeds used in Move menu to move X and Y axes.
# Format: [move_speed: S<feedrate> N<feedrate> F<feedrate>]
# Unit: [feedrate in mm/min]
# Value range: [min: 10, max: 12000]
xy_speed:S1000 N3000 F5000
#### Z Speeds/Feedrates
# Move speeds used in Move menu to move Z axis.
# Format: [move_speed: S<feedrate> N<feedrate> F<feedrate>]
# Unit: [feedrate in mm/min]
# Value range: [min: 10, max: 12000]
z_speed:S500 N1000 F2000
#### Extruder Speeds/Feedrates
# Speed settings used to extrude/retract.
# Format: [ext_speed: S<feedrate> N<feedrate> F<feedrate>]
# Unit: [feedrate in mm/min]
# Value range: [min: 10, max: 12000]
ext_speed:S60 N600 F1200
#### Auto Save/Load Bed Leveling Data
# The TFT will auto-detect if Auto Bed Level is available.
# Enable this will send "M500" after "G29" to store leveling value and send "M420 S1"
# to enable leveling state after startup.
# Options: [disable: 0, enable: 1]
auto_load_leveling:1
#### Onboard / Printer Media Support
# On Marlin firmware, the TFT will auto-detect onboard media.
# Auto-detect is not available for other firmwares like Smoothieware.
# Options: [disable: 0, enable: 1, auto-detect: 2]
onboard_sd:2
#### M27 Printing Status Refresh Time
# M27 printing status refresh time (this will be used if SD_AUTOREPORT is not detected by the TFT).
# Unit: [time in seconds]
# Value range: [min: 1, max: 100]
M27_refresh_time:3
#### M27 Always Active
# Keep polling M27 even if not printing (e.g. SD print not started from TFT).
# Options: [disable: 0, enable: 1]
M27_always_active:1
#### Long File Names Support
# On Marlin firmware, the TFT will auto-detect Long File Name support.
# Auto-detect is not available for other firmwares like Smoothieware.
# Options: [disable: 0, enable: 1, auto-detect: 2]
long_filename:2
#### Pause/Nozzle Park Settings
# These settings are used when a print is paused or in any feature which requires moving/parking the nozzle
# before performing a task like in (Un)Load or Extruder Tuning menus.
## Pause Retract Length
# Format: [pause_retract: R<retract length> P<resume purge length>]
# Unit: [length in mm]
# Value range: [min: 0.0, max: 20.0]
pause_retract:R15.0 P16.0
## Pause XY Position
# NOTES:
# - It MUST BE a value >= 0 for a Cartesian printer.
# - It MUST BE a value <= 0 for a Delta printer.
#
# Format: [pause_pos: X<position> Y<position>]
# Unit: [position in mm]
# Value range: [min: -2000.0, max: 2000.0]
pause_pos:X10.0 Y10.0
## Pause Z Raise
# Raise Z axis by this value relative to the current layer height.
# Unit: [distance in mm]
# Value range: [min: 0.0, max: 2000.0]
pause_z_raise:10.0
## Pause Feed Rate
# Feedrate to use when moving an axis when printing is paused.
# Format: [pause_feedrate: XY<feedrate> Z<feedrate> E<feedrate>]
# Unit: [feedrate in mm/min]
# Value range: [min: 10, max: 12000]
pause_feedrate:XY6000 Z6000 E600
#### Leveling Settings
# These settings are used for leveling.
## Leveling Edge Distance (Manual Leveling, Leveling Corner)
# Inset distance from bed edges. This distance is added to minimum X & Y bed coordinates and
# subtracted from maximum X & Y bed coordinates to calculate manual leveling points.
# For Leveling Corner, the default distance is the maximum between this setting value and
# the rounded probe offset X/Y values configured in Marlin firmware.
# Unit: [distance in mm]
# Value range: [min: 0, max: 2000]
level_edge_distance:20
## Leveling Z Position (Manual Leveling, Leveling Corner, Mesh Leveling, Probe/Home Offset, Mesh Tuner)
# For Manual Leveling and MBL, lower Z axis to this absolute position after reaching a leveling point.
# For Probe/Home Offset and ABL in Mesh Tuner, raise Z axis by this relative position after reaching
# a leveling point.
# Unit: [position in mm]
# Value range: [min: 0.0, max: 2000.0]
level_z_pos:0.1
## Leveling Z Raise (Manual Leveling, Leveling Corner, Mesh Leveling)
# Raise Z axis by this relative value before moving to another point during leveling/probing procedures.
# Unit: [distance in mm]
# Value range: [min: 0.0, max: 2000.0]
level_z_raise:10.0
## Leveling Feed Rate (Manual Leveling, Leveling Corner, Mesh Leveling)
# Feedrate to use when moving an axis during leveling/probing procedures.
# Format: [level_feedrate: XY<feedrate> Z<feedrate>]
# Unit: [feedrate in mm/min]
# Value range: [min: 10, max: 12000]
level_feedrate:XY6000 Z6000
#### Inverted Axes (Manual Leveling, Leveling Corner, Move, Probe Offset)
# Used by Manual Leveling, Leveling Corner, Move and Probe Offset menus in order axis matches the actual axis movement.
#
# NOTE: The Y axis of different printer (move hotbed or move nozzle) move in different directions.
# So Y axis leveling inversion can't follow up inverted_axis[Y_AXIS].
# We separate a single variable "LY" (Leveling Y axis) to deal with the Y axis leveling movement direction.
#
# Format: [X<option> Y<option> Z<option> LY<option>]
# Options: [disable: 0, enable: 1]
inverted_axis:X0 Y0 Z0 LY0
#### Probing For Z Offset (Probe Offset)
# Used by the Probe Offset menu for the Z offset tuning process.
# If enabled, after homing a probing in the center of the bed is performed and then the nozzle
# is moved to the XY probing point.
# If disabled, after homing the nozzle is moved directly to the XY homing point. This is useful
# in case Marlin firmware is configured to use the probe for Z axis homing (e.g.
# USE_PROBE_FOR_Z_HOMING enabled in Marlin firmware) to avoid a second probing after homing.
#
# NOTES:
# - Enable it in case Marlin firmware is not configured to use the probe for Z axis homing
# (e.g. USE_PROBE_FOR_Z_HOMING disabled in Marlin firmware) or the XY probing point set
# for homing is not reachable by the nozzle (e.g. due to HW limitations/constraints or
# printer specific configuration).
# - Disable it (preferably) in case Marlin firmware is configured to use the probe for Z axis
# homing (e.g. USE_PROBE_FOR_Z_HOMING enabled in Marlin firmware).
#
# Options: [disable: 0, enable: 1]
probing_z_offset:1
#### Probing Z Raise (Probe Offset, Mesh Editor)
# Used by the Probe Offset / Mesh Editor menu for the Z offset / Z height tuning process.
# Raise / drop Z axis by this relative value after homing (G28) before starting to probe a point.
#
# NOTES:
# - It MUST BE a value >= 0 (e.g. 20) for a Cartesian printer to avoid crashing into the bed.
# - It MUST BE a value <= 0 (e.g. -50) for a Delta printer to avoid crashing into the top of the tower.
#
# Unit: [distance in mm]
# Value range: [min: -2000.0, max: 2000.0]
probing_z_raise:20.0
#### Z Steppers Auto-Alignment (ABL)
# It allows to align multiple Z stepper motors using a bed probe by probing one position per stepper.
# Enable this setting to show an icon in ABL menu allowing to run G34 command (it requires
# Z_STEPPER_AUTO_ALIGN enabled in Configuration_adv.h in Marlin firmware).
#
# NOTE: Only for Marlin printers with one stepper driver per Z stepper motor and no Z timing belt.
#
# Options: [disable: 0, enable: 1]
z_steppers_alignment:0
#### TouchMI Settings (ABL)
# Enable this option for displaying TouchMI sensor settings in ABL menu (Init, Z Offset, Save, Test).
# Options: [disable: 0, enable: 1]
touchmi_sensor:0
#### Preheat Temperatures
# Format: [preheat_name_X:<name>]
# [preheat_temp_X:T<hotend temp> B<bed temp>]
# Unit: [temperature in °C]
# Value range: name: [min: 3, max: 20 characters]
# hotend temp: [min: 20, max: 1000]
# bed temp: [min: 20, max: 400]
preheat_name_1:PLA
preheat_temp_1:T200 B60
preheat_name_2:PETG
preheat_temp_2:T240 B70
preheat_name_3:ABS
preheat_temp_3:T230 B90
preheat_name_4:WOOD
preheat_temp_4:T170 B50
preheat_name_5:TPU
preheat_temp_5:T220 B50
preheat_name_6:NYLON
preheat_temp_6:T250 B90
#--------------------------------------------------------------------
# Power Supply Settings (only if connected to TFT controller)
#--------------------------------------------------------------------
#### Active HIGH Power Supply Logic
# Used in case it is supported by the TFT.
# The power supply uses this HIGH signal logic to stay ON.
# The power supply uses the opposite of this logic to stay OFF.
# Options: [disable: 0, enable: 1]
ps_active_high:1
#### Power Supply Auto Shutdown Mode
# Used in case it is supported by the TFT.
# Enable power supply auto shutdown after a print is finished when hotend temperature drops below target value.
# Options: [disable: 0, enable: 1, auto-detect: 2]
ps_auto_shutdown:0
#### Power Supply Auto Shutdown Temperature
# Maximum hotend temperature for automatic shutdown after printing, if automatic shutdown is enabled.
# The printer will shutdown automatically if the hotend temperature is below this value.
# If the hotend temperature is higher than this value the fans will be turned on to cooldown and it
# will wait for the hotend temperature to drop below this value before shutting down automatically.
# Unit: [temperature in °C]
# Value range: [min: 20, max: 1000]
ps_auto_shutdown_temp:50
#--------------------------------------------------------------------
# Filament Runout Settings (only if connected to TFT controller)
#--------------------------------------------------------------------
# NOTES for users having a filament sensor connected to the mainboard:
# 1) Define "fil_runout:0" below to disable the sensor handling on the TFT.
# 2) Configure the sensor in the firmware of your mainboard.
# 3) Add M75 to "start_gcode" and M77 to "end_gcode" of the TFT (or your slicer).
#### Filament Runout Sensor
# Select the type of filament runout sensor and its default enabled/disabled state.
# Options: [Normal Disabled: 0, Normal Enabled: 1, Smart Disabled: 2, Smart Enabled: 3]
fil_runout:1
#### Inverted Filament Runout Sensor Logic
# The sensor uses an inverted logic.
# Disable it in case filament runout is triggered by a LOW signal.
# Enable it in case filament runout is triggered by a HIGH signal.
# Options: [disable: 0, enable: 1]
fil_runout_inverted:0
#### NC (Normal Close) Filament Runout Sensor
# The sensor is of type NC.
# Options: [Normal Open: 0, Normal Close: 1]
fil_runout_nc:1
#### Filament Runout Noise Threshold
# Pause print when filament runout is detected at least for this time period.
# Unit: [time in milliseconds]
# Value range: [min: 10, max: 1800]
fil_runout_noise_threshold:200
#### Smart Filament Runout Detection
# Used in conjunction with an SFS (Smart Filament Sensor) based on an encoder disc that
# toggles runout pin as filament moves.
# Unit: [distance in mm]
# Value range: [min: 1, max: 50]
fil_runout_distance:7
#--------------------------------------------------------------------
# Power Loss Recovery & BTT UPS Settings
#--------------------------------------------------------------------
#### Power Loss Recovery Mode
# Enable power loss recovery.
# Disable to reduce the loss of TFT SD card or TFT USB disk.
# Options: [disable: 0, enable: 1]
pl_recovery:1
#### Power Loss Recovery Homing
# Home before power loss recovery.
# Options: [disable: 0, enable: 1]
pl_recovery_home:0
#### Power Loss Recovery Z Raise
# Raise Z axis on resume (on power loss with UPS).
# Unit: [distance in mm]
# Value range: [min: 0.0, max: 2000.0]
pl_recovery_z_raise:10.0
#### BTT Mini UPS Support
# Enable backup power/UPS to move Z axis on power loss.
# Options: [disable: 0, enable: 1]
btt_mini_ups:0
#--------------------------------------------------------------------
# Other Device-Specific Settings
#--------------------------------------------------------------------
#### Sounds / Buzzer
# Set sound ON or OFF.
#
# NOTE: Error messages from printer will always play the error sound.
#
# Parameters:
# touch_sound: Enable/disable this to control touch feedback sound.
# toast_sound: Enable/disable this to control all toast notification sounds.
# alert_sound: Enable/disable this to control all popup and alert sounds
# like print finish alert, dialog sound etc.
# heater_sound: Enable/disable this to control acoustic feedback when temperature
# has reached the desired value on heaters (nozzle, bed, chamber).
#
# Options: [disable: 0, enable: 1]
touch_sound:1
toast_sound:1
alert_sound:1
heater_sound:1
#### LCD Brightness Levels (only for TFT28/TFT35/TFT43/TFT50/TFT70 V3.0)
# Brightness levels for LCD.
# Options: [OFF: 0, 5%: 1, 10%: 2, 20%: 3, 30%: 4, 40%: 5, 50%: 6, 60%: 7, 70%: 8, 80%: 9, 90%: 10, 100%: 11]
## LCD brightness level
lcd_brightness:11
## LCD brightness level when device is idle
lcd_idle_brightness:5
#### LCD Idle Time (only for TFT28/TFT35/TFT43/TFT50/TFT70 V3.0)
# The LCD screen will dim to idle brightness, if the display is not touched for the
# period of the LCD idle time.
# Options: [OFF: 0, 5sec: 1, 10sec: 2, 30sec: 3, 1min: 4, 2min: 5, 5min: 6, 10min: 7]
lcd_idle_time:4
#### LCD Lock On Idle (only for TFT28/TFT35/TFT43/TFT50/TFT70 V3.0)
# If enabled, when the LCD is idle (dimmed) then the first touch on the display will
# simply restore the normal LCD brightness. The touch is then skipped, preventing to
# trigger any undesired action due to the dimmed display.
#
# NOTE: The lock is always avoided if the LCD brightness is restored by the use of
# rotary encoder instead of touching the display.
#
# Options: [disable: 0, enable: 1]
lcd_lock_on_idle:0
#### LED Color
# Printer's LED color used by some features such as Event LED and PID processes.
# Format: [led_color: R:<component> G:<component> B:<component> W:<component> P:<component> I:<component>
# Target component: R: Red
# G: Green
# B: Blue
# W: White; NEOPIXEL or RGB(W)
# P: Intensity; NEOPIXEL
# I: Index; NEOPIXEL
# Value range: [min: 0, max: 255]
led_color:R:255 G:255 B:255 W:255 P:255 I:255
#### LED Always ON
# Keep printers's LED on at startup and after Event LED and PID processes terminate.
# The printer's LED color is configured in "led_color".
# Options: [disable: 0, enable: 1]
led_always_on:0
#### Knob LED Color (only for TFT28/TFT35_E3/TFT43/TFT50/TFT70 V3.0)
# Knob LED color at startup.
# Options: [OFF: 0, WHITE: 1, RED: 2, ORANGE: 3, YELLOW: 4, GREEN: 5, BLUE: 6, INDIGO: 7, VIOLET: 8]
knob_led_color:0
#### Knob LED Idle State (only for TFT28/TFT35_E3/TFT43/TFT50/TFT70 V3.0)
# If enabled, when the LCD is idle (dimmed) then the knob LED will be also switched off.
# Options: [disable: 0, enable: 1]
knob_led_idle:1
#### Knob LED Pixels (only for TFT28/TFT35_E3/TFT43/TFT50/TFT70 V3.0)
# Set the number of LEDs in the strip connected to "Neopixel" port of TFT.
# It shares the same signal line as "knob_led". 0 means the default number in TFT hardware.
# Greater than 0 means the number of LEDs in the strip.
# Value range: [min: 0, max: 200]
neopixel_pixels:0
#--------------------------------------------------------------------
# Custom G-code Commands
#--------------------------------------------------------------------
#### Custom G-code Commands
# Up to 15 custom G-code commands that will be available in the Custom menu.
#
# Usage:
# - To enable a custom command, remove "#" at the beginning of custom commands label & G-code.
# - To disable a custom command, add "#" at the beginning of custom commands label & G-code.
#
# NOTE: If the values are left blank then default name and G-code will be used.
#
# Value range: label: [min: 3, max: 75 characters]
# G-code: [min: 3, max: 75 characters]
custom_label_1:Present extruder
custom_gcode_1:G90\nG0 F3000 X0 Y0 Z100\n
custom_label_2:Present bed
custom_gcode_2:G90\nG0 F3000 X0 Y210 Z100\n
custom_label_3:Disable all steppers
custom_gcode_3:M84\n
#custom_label_4:custom4
#custom_gcode_4:M105\n
#custom_label_5:custom5
#custom_gcode_5:M105\n
#custom_label_6:custom6
#custom_gcode_6:M105\n
#custom_label_7:custom7
#custom_gcode_7:M105\n
#custom_label_8:custom8
#custom_gcode_8:M105\n
#custom_label_9:custom9
#custom_gcode_9:M105\n
#custom_label_10:custom10
#custom_gcode_10:M105\n
#custom_label_11:custom11
#custom_gcode_11:M105\n
#custom_label_12:custom12
#custom_gcode_12:M105\n
#custom_label_13:custom13
#custom_gcode_13:M105\n
#custom_label_14:custom14
#custom_gcode_14:M105\n
#custom_label_15:custom15
#custom_gcode_15:M105\n
#--------------------------------------------------------------------
# Start, End & Cancel G-code Commands
#--------------------------------------------------------------------
# NOTES for users having a filament sensor connected to the mainboard:
# 1) Enable the start/end G-code below.
# 2) Add the following commands to the start/end G-code:
# - start_gcode: M75\n
# - end_gcode: M77\n
#### Start G-code Status
# Options: [disable: 0, enable: 1]
start_gcode_enabled:0
#### End G-code Status
# Options: [disable: 0, enable: 1]
end_gcode_enabled:0
#### Cancel G-code Status
# Options: [disable: 0, enable: 1]
cancel_gcode_enabled:1
#### Start G-code
# This G-code will run before starting a print if "start_gcode_enabled" is enabled.
# Value range: [min: 3, max: 75 characters]
start_gcode:G28 XY R20\n
#### End G-code
# This G-code will run after a print is completed if "end_gcode_enabled" is enabled.
# Value range: [min: 3, max: 75 characters]
# M104: turn off extruder; M140: turn off bed; M107: turn off print cooling fan; M18: disable steppers
end_gcode:M104 S0\nM140 S0\nM107\nM18\n
#### Cancel G-code
# This G-code will run when a print is cancelled if "cancel_gcode_enabled" is enabled.
# Value range: [min: 3, max: 75 characters]
# M104: turn off extruder; M140: turn off bed; G28: raise & home; G0: present bed; M107: turn off print cooling fan; M18: disable steppers
cancel_gcode:M104 S0\nM140 S0\nG28 X R10\nG0 F3000 Y200\nM107\nM18\n
@GhettoSanta
Copy link

thank you for this :)

@Dviros
Copy link

Dviros commented Apr 11, 2022

Brilliant! Exactly what I needed.
Thanks!

@vogler
Copy link
Author

vogler commented Apr 11, 2022

Glad to hear it's useful :)
Let me know if someone gets the TFT firmware to show progress when printing from OctoPrint without choking. Seems like it requires some wiring changes.
Didn't try it since I usually just check OctoPrint (web/Telegram) and only use the TFT for changing filament and MBL.

@vogler
Copy link
Author

vogler commented Apr 11, 2022

Extended notes with OctoPrint, enclosure and filament storage, and linked some photos.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment