NO LONGER MAINTAINED
This page should not be update as it is no longer being maintained.
It has been replaced with Replicape Configuration.
Like to contribute to improving docs? Now, anyone can!
Redeem version 2.1.1
OK, so you're wanting to set up your shiny new Replicape and get printing, but you can't make heads or tails of the configuration. Never fear (well, maybe fear just a little, but bear with me..), this will walk you through generating your local.cfg to hopefully get you running. If if have questions, feel free to come over to the Slack channel and ask for help.
This page is also assuming you've read through the Printer 101 page.
Your Redeem local.cfg handles the basic configuration for the system. Redeem will look for a needed option in the local.cfg first, and if it doesn't find it there, will look in printer.cfg (if you have it set), or default.cfg, in that order. Any time you change your local.cfg, you'll need to restart Redeem.
You can edit the file either through the Octoprint interface, or if you're linux-savvy, at the command line. The file is located at
Any time you add a section to your local.cfg, you do need the section header, which is in brackets.
Your local.cfg may have only a few entries, or it may have nearly every entry listed here. It's strongly recommended to use local.cfg instead of modifying your printer.cfg or default.cfg, as those may be overwritten during an upgrade. local.cfg will never be overwritten, unless you completely wire the BeagleBone and reload the system.
The first section is System related. For the most part, you don't need this in your local.cfg, as the values probably won't need to be changed.
[System] # CRITICAL=50, # ERROR=40, # WARNING=30, INFO=20, DEBUG=10, NOTSET=0 Very seldom will this need changed. loglevel = 20 # If set to True, also log to file. log_to_file = True # Default file to log to, this can be viewed from octoprint logfile = /home/octo/.octoprint/logs/plugin_redeem.log # location to look for data files (temperature charts, etc) data_path = /etc/redeem # Plugin to load for redeem, comma separated (i.e. HPX2Max,plugin2,plugin3) plugins = # Machine type is used by M115 # to identify the machine connected. machine_type = Unknown
Next up is the printer geometry. You'll define dimensions of the print volume, directions, and end stop locations here. You probably won't need all axis entries here, so just use the ones you do need (X/Y/Z/E and possibly H usually). A/B/C axis are included in case you're running a Reach board on your Replicape.
[Geometry] # Select which type of printer you have here # 0 - Cartesian # 1 - H-belt # 2 - Core XY # 3 - Delta axis_config = 0 # The total length each axis can travel # This affects the homing endstop searching length. # This is not the print volume dimensions, but how far to travel when searching for an endstop. # Safe values would be your bed dimension for the axis plus 10mm or 20mm # Remember, all measurements are in meters travel_x = 0.2 travel_y = 0.2 travel_z = 0.2 travel_e = 0.2 travel_h = 0.2 travel_a = 0.0 travel_b = 0.0 travel_c = 0.0 # Define the origin in relation to the endstops. # Origin is usually the Left Front of the print bed, or in the Center for a Delta. # 0.0 tells the system that your limit switch for that access is at the minimum (zero) end of travel. # If you have the limit switch at the maximum end of travel, you need to tell Redeem how far 0.0 is away on that axis # For example, if your X axis has the end stop at max travel, you would use offset_x = -0.300 # to tell the system that 0,0 is 300mm away. # Note the negative in the above example... this tells the system to go back once it homes on X, instead # of trying to continue heading right offset_x = 0.0 offset_y = 0.0 offset_z = 0.0 offset_e = 0.0 offset_h = 0.0 offset_a = 0.0 offset_b = 0.0 offset_c = 0.0 #This is for bed leveling. If you are running a Z-Probe, you'll need this. bed_compensation_matrix = [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]]
This section covers Delta printers and isn't needed unless you're running a Delta
[Delta] # Distance head extends below the effector. Hez = 0.0 # Length of the rod L = 0.135 # Radius of the columns r = 0.144 # Effector offset Ae = 0.026 Be = 0.026 Ce = 0.026 # Carriage offset A_radial = 0.0 B_radial = 0.0 C_radial = 0.0 # Compensation for positional error of the columns # (For details, read: https://github.com/hercek/Marlin/blob/Marlin_v1/calibration.wxm) # Positive values move the tower to the right, in the +X direction, tangent to it's radius A_tangential = 0.0 B_tangential = 0.0 C_tangential = 0.0
Now for the stepper motor setup.
# Stepper e is ext 1, h is ext 2 [Steppers] # These start at 0. Each step doubles the microstep count (0 is full steps, 1 is half steps, 2 is quarter steps, and so on) # 6 and 7 are Stealth stepping, but they can overheat your motors if you're not careful microstepping_x = 3 microstepping_y = 3 microstepping_z = 3 microstepping_e = 3 microstepping_h = 3 microstepping_a = 3 microstepping_b = 3 microstepping_c = 3 # If you're going to run more than 0.7 amps, you MUST have a heat sink on the driver chips. current_x = 0.5 current_y = 0.5 current_z = 0.5 current_e = 0.5 current_h = 0.5 current_a = 0.5 current_b = 0.5 current_c = 0.5 # steps per mm: # Defined how many stepper full steps needed to move 1mm. # Do not factor in microstepping settings. # For example: If the axis will travel 10mm in one revolution and # angle per step in 1.8deg (200step/rev), steps_pr_mm is 20. steps_pr_mm_x = 4.0 steps_pr_mm_y = 4.0 steps_pr_mm_z = 50.0 steps_pr_mm_e = 6.0 steps_pr_mm_h = 6.0 steps_pr_mm_a = 6.0 steps_pr_mm_b = 6.0 steps_pr_mm_c = 6.0 # This section usually isn't needed. backlash_x = 0.0 backlash_y = 0.0 backlash_z = 0.0 backlash_e = 0.0 backlash_h = 0.0 backlash_a = 0.0 backlash_b = 0.0 backlash_c = 0.0 # Which steppers are enabled in_use_x = True in_use_y = True in_use_z = True in_use_e = True in_use_h = True in_use_a = False in_use_b = False in_use_c = False # Set to -1 if axis is inverted. If at all possible, try to keep these in the positive direction (power down # and flip the connector for the motor) as they do impact your limit switch and homing setup. direction_x = 1 direction_y = 1 direction_z = 1 direction_e = 1 direction_h = 1 direction_a = 1 direction_b = 1 direction_c = 1 # Set to True if slow decay mode is needed. This can usually be ignored slow_decay_x = 0 slow_decay_y = 0 slow_decay_z = 0 slow_decay_e = 0 slow_decay_h = 0 slow_decay_a = 0 slow_decay_b = 0 slow_decay_c = 0 # A stepper controller can operate in slave mode, meaning that it will mirror the position of the # specified stepper. Typically, H will mirror Y or Z, in the case of the former, use: slave_y = H. slave_x = slave_y = slave_z = slave_e = slave_h = slave_a = slave_b = slave_c = # Stepper timeout use_timeout = True timeout_seconds = 500
This section handles path planning.
[Planner] # size of the path planning cache move_cache_size = 1024 # time to wait for buffer to fill, (ms) print_move_buffer_wait = 250 # if total buffered time gets below (min_buffered_move_time) then wait for (print_move_buffer_wait) before moving again, (ms) min_buffered_move_time = 100 # total buffered move time should not exceed this much (ms) max_buffered_move_time = 1000 # max segment length max_length = 0.001
# Axis acceleration values. These can usually be left at the defaults acceleration_x = 0.5 acceleration_y = 0.5 acceleration_z = 0.5 acceleration_e = 0.5 acceleration_h = 0.5 acceleration_a = 0.5 acceleration_b = 0.5 acceleration_c = 0.5 # Max jerk values. Again, can usually be left at default values. max_jerk_x = 0.01 max_jerk_y = 0.01 max_jerk_z = 0.01 max_jerk_e = 0.01 max_jerk_h = 0.01 max_jerk_a = 0.01 max_jerk_b = 0.01 max_jerk_c = 0.01 # Maximum speed for the steppers in m/s. If you have a mirrored axis (H and Z, for example) # you will need to set both axis to have matching values. max_speed_x = 0.2 max_speed_y = 0.2 max_speed_z = 0.02 max_speed_e = 0.2 max_speed_h = 0.02 max_speed_a = 0.2 max_speed_b = 0.2 max_speed_c = 0.2 # Minimum speed for the steppers in m/s. Can usually be left at default min_speed_x = 0.005 min_speed_y = 0.005 min_speed_z = 0.005 min_speed_e = 0.01 min_speed_h = 0.01 min_speed_a = 0.01 min_speed_b = 0.01 min_speed_c = 0.01 # When true, movements on the E axis (eg, G1, G92) will apply # to the active tool (similar to other firmwares) (For mirrored axis). When false, # such movements will only apply to the E axis. e_axis_active = True
This section is for thermistors.
[Cold-ends] # To use the DS18B20 temp sensors, connect them like this. # Enable by setting to True connect-ds18b20-0-fan-0 = False connect-ds18b20-1-fan-0 = False connect-ds18b20-0-fan-1 = False # This list is for connecting thermistors to fans, # so they are controlled automatically when reaching 60 degrees. connect-therm-E-fan-0 = False connect-therm-E-fan-1 = False connect-therm-E-fan-2 = False connect-therm-E-fan-3 = False connect-therm-H-fan-0 = False connect-therm-H-fan-1 = False connect-therm-H-fan-2 = False connect-therm-H-fan-3 = False connect-therm-A-fan-0 = False connect-therm-A-fan-1 = False connect-therm-A-fan-2 = False connect-therm-A-fan-3 = False connect-therm-B-fan-0 = False connect-therm-B-fan-1 = False connect-therm-B-fan-2 = False connect-therm-B-fan-3 = False connect-therm-C-fan-0 = False connect-therm-C-fan-1 = False connect-therm-C-fan-2 = False connect-therm-C-fan-3 = False connect-therm-HBP-fan-0 = False connect-therm-HBP-fan-1 = False connect-therm-HBP-fan-2 = False connect-therm-HBP-fan-3 = False add-fan-0-to-M106 = False add-fan-1-to-M106 = False add-fan-2-to-M106 = False add-fan-3-to-M106 = False # If you want coolers to # have a different 'keep' temp, list it here. cooler_0_target_temp = 60 # If you want the fan-thermistor connections to have a # different temperature: # therm-e-fan-0-target_temp = 70
This is for fans
[Fans] default-fan-0-value = 0.0 default-fan-1-value = 0.0 default-fan-2-value = 0.0 default-fan-3-value = 0.0
Heaters for the print bed and hot end.
[Heaters] # For list of available temp charts, look in temp_chart.py sensor_E = B57560G104F pid_Kp_E = 0.1 pid_Ti_E = 100.0 pid_Td_E = 0.3 ok_range_E = 4.0 max_rise_temp_E = 10.0 # How fast of a temp rise per second is acceptable max_fall_temp_E = 10.0 # How fast of a temp drop per second is acceptable min_temp_E = 20.0 max_temp_E = 250.0 # Maximum acceptable hot end temp. path_adc_E = /sys/bus/iio/devices/iio:device0/in_voltage4_raw mosfet_E = 5 onoff_E = False prefix_E = T0 max_power_E = 1.0
sensor_HBP = B57560G104F pid_Kp_HBP = 0.1 pid_Ti_HBP = 0.01 pid_Td_HBP = 0.3 ok_range_HBP = 4.0 max_rise_temp_HBP = 10.0 # How fast of a temp rise per second is acceptable max_fall_temp_HBP = 10.0 # How fast of a temp drop per second is acceptable min_temp_HBP = 20.0 max_temp_HBP = 250.0 # Maximum acceptable bed temp. path_adc_HBP = /sys/bus/iio/devices/iio:device0/in_voltage6_raw mosfet_HBP = 4 onoff_HBP = False prefix_HBP = B max_power_HBP = 1.0
End stop configuration
[Endstops] # Which axis should be homed. has_x = True has_y = True has_z = True has_e = False has_h = False has_a = False has_b = False has_c = False inputdev = /dev/input/by-path/platform-ocp:gpio_keys-event # Number of cycles to wait between checking # end stops. CPU frequency is 200 MHz end_stop_delay_cycles = 1000 # Invert = # True means endstop is connected as Normally Open (NO) or not connected # False means endstop is connected as Normally Closed (NC) invert_X1 = False invert_X2 = False invert_Y1 = False invert_Y2 = False invert_Z1 = False invert_Z2 = False pin_X1 = GPIO3_21 pin_X2 = GPIO0_30 pin_Y1 = GPIO1_17 pin_Y2 = GPIO3_17 pin_Z1 = GPIO0_31 pin_Z2 = GPIO0_4 keycode_X1 = 112 keycode_X2 = 113 keycode_Y1 = 114 keycode_Y2 = 115 keycode_Z1 = 116 keycode_Z2 = 117 # If one endstop is hit, which steppers and directions are masked. # The list is comma separated and has format # x_cw = stepper x clockwise (independent of direction_x) # x_ccw = stepper x counter clockwise (independent of direction_x) # x_neg = stepper x negative direction (affected by direction_x) # x_pos = stepper x positive direction (affected by direction_x) # Steppers e and h (and a, b, c for reach) can also be masked. # # For a list of steppers to stop, use this format: x_cw, y_ccw # For Simple XYZ bot, the usual practice would be # end_stop_X1_stops = x_neg, end_stop_X2_stops = x_pos, ... # For CoreXY and similar, two steppers should be stopped if an end stop is hit. # similarly for a delta probe should stop x, y and z. # If you have a mirrored axis, you will need to include that stepper in the entry also # For example, if H is mirroring Z, your Z minimum entry (assuming you're homing to Z-Min) # Would be end_stop_Z1_stops = z_neg, h_neg end_stop_X1_stops = x_neg end_stop_Y1_stops = y_neg end_stop_Z1_stops = z_neg end_stop_X2_stops = end_stop_Y2_stops = end_stop_Z2_stops = # if an endstop should only be used for homing or probing, then add it to # homing_only_endstops in comma separated format. # Example: homing_only_endstops = Z1, Z2 # this will make sure that endstop Z1 and Z2 are only used during homing or probing # NOTE: Be very careful with this option. homing_only_endstops = # These are to define limits in case a physical end stop switch isn't present # For example, when you have a switch an X_Min, but not at X_Max # These trigger top prevent the printer from crashing into itself soft_end_stop_min_x = -0.5 soft_end_stop_min_y = -0.5 soft_end_stop_min_z = -0.5 soft_end_stop_min_e = -1000.0 soft_end_stop_min_h = -1000.0 soft_end_stop_min_a = -1000.0 soft_end_stop_min_b = -1000.0 soft_end_stop_min_c = -1000.0
soft_end_stop_max_x = 0.5 soft_end_stop_max_y = 0.5 soft_end_stop_max_z = 0.5 soft_end_stop_max_e = 1000.0 soft_end_stop_max_h = 1000.0 soft_end_stop_max_a = 1000.0 soft_end_stop_max_b = 1000.0 soft_end_stop_max_c = 1000.0
Homing for the printer, to define what speed and what direction to home
[Homing] # Homing speed for the steppers in m/s # Search to minimum ends by default. Negative value for searching to maximum ends. # Only needed if you're homing on that axis. A mirrored axis doesn't count (H mirrors Z, for example) home_speed_x = 0.1 home_speed_y = 0.1 home_speed_z = 0.1 home_speed_e = 0.01 home_speed_h = 0.01 home_speed_a = 0.01 home_speed_b = 0.01 home_speed_c = 0.01 # homing backoff speed home_backoff_speed_x = 0.01 home_backoff_speed_y = 0.01 home_backoff_speed_z = 0.01 home_backoff_speed_e = 0.01 home_backoff_speed_h = 0.01 home_backoff_speed_a = 0.01 home_backoff_speed_b = 0.01 home_backoff_speed_c = 0.01 # homing backoff distance home_backoff_offset_x = 0.01 home_backoff_offset_y = 0.01 home_backoff_offset_z = 0.01 home_backoff_offset_e = 0.01 home_backoff_offset_h = 0.01 home_backoff_offset_a = 0.01 home_backoff_offset_b = 0.01 home_backoff_offset_c = 0.01 # Where should the printer goes after homing. # The default is to stay at the offset position. # This setting is useful if you have a delta printer # and want it to stay at the top position after homing, instead # of moving down to the center of the plate. # In that case, use home_z and set that to the same as the offset values # for X, Y, and Z, only with different sign. home_x = 0.0 home_y = 0.0 home_z = 0.0 home_e = 0.0 home_h = 0.0 home_a = 0.0 home_b = 0.0 home_c = 0.0
Servos, useful for probing sleds and such
[Servos] # Example servo for Rev A4A, connected to channel 14 on the PWM chip # For Rev B, servo is either P9_14 or P9_16. # Not enabled for now, just kept here for reference. # Angle init is the angle the servo is set to when redeem starts. # pulse min and max is the pulse with for min and max position, as always in SI unit Seconds. # So 0.001 is 1 ms. # Angle min and max is what angles those pulses correspond to. servo_0_enable = False servo_0_channel = P9_14 servo_0_angle_init = 90 servo_0_angle_min = -90 servo_0_angle_max = 90 servo_0_pulse_min = 0.001 servo_0_pulse_max = 0.002
Probing for bed level
[Probe] length = 0.01 speed = 0.05 accel = 0.1 offset_x = 0.0 offset_y = 0.0 offset_z = 0.0
Rotary Encoders... usually not needed.
[Rotary-encoders] enable-e = False event-e = /dev/input/event1 cpr-e = -360 diameter-e = 0.003
If you're using a Filament out sensor, you would need this
[Filament-sensors] # If the error is > 1 cm, sound the alarm alarm-level-e = 0.01
Skip this. It is for the Redeem Watchdog, to see if it has chashed
[Watchdog] enable_watchdog = True
Predefined macros, for things such as bed leveling
[Macros] G29 = M561 ; Reset the bed level matrix M558 P0 ; Set probe type to Servo with switch M557 P0 X10 Y20 ; Set probe point 0 M557 P1 X10 Y180 ; Set probe point 1 M557 P2 X180 Y100 ; Set probe point 2 G28 X0 Y0 ; Home X Y
G28 Z0 ; Home Z G0 Z12 ; Move Z up to allow space for probe G32 ; Undock probe G92 Z0 ; Reset Z height to 0 G30 P0 S ; Probe point 0 G0 Z0 ; Move the Z up G31 ; Dock probe
G28 Z0 ; Home Z G0 Z12 ; Move Z up to allow space for probe G32 ; Undock probe G92 Z0 ; Reset Z height to 0 G30 P1 S ; Probe point 1 G0 Z0 ; Move the Z up G31 ; Dock probe
G28 Z0 ; Home Z G0 Z12 ; Move Z up to allow space for probe G32 ; Undock probe G92 Z0 ; Reset Z height to 0 G30 P2 S ; Probe point 2 G0 Z0 ; Move the Z up G31 ; Dock probe
G28 X0 Y0 ; Home X Y
G31 = M280 P0 S320 F3000 ; Probe up (Dock sled)
G32 = M280 P0 S-60 F3000 ; Probe down (Undock sled)