I tried to hunt down the problem, and what I found is that I have a problem with the Z axis. The motor moves, the plate it goes down 5mm as usual, during the homing process, so it’s not a Z motor problem. X and Y home correctly, but when it’s time to home Z, I get this error.
How/where can I track down the problem more deeper? I’ve already thought about asking these two questions: where is the Z axis homing sensor? And where’s the module with the LDC1612 I2C IC in it?
The problem happened after a new heat creep jam (still waiting for the 2515 fan from Sovol, by the way), and consequently the need to disassemble the head, so I think it may even be related and not a coincidence. Like the pressure sensor (even if unused in firmware 1.4.7) or the eddy current sensor very possibly, but everything seems hooked correctly on the head, at least judging by what I see in front of me.
Anyhow, waiting for some feedback from users who know the machine much better than me. Thank you.
Cheers.
PS: I also get “Tip code: 112” in the Zero small display, but I haven’t found any resources in Internet that list and explain these tip codes.
PS: replying to myself, but as others may experience the same issue in the future, I prefer to share the solution, instead of deleting the thread (although still with no views):
the problem was the flat cable I highlighted in red, which I found only slightly twisted:
I took the photo from the right side, in my own unit the bulge may or may not be visible from the front depending on the height from which I look at it. It’s much more evident from the right.
Mine looks basically the same.
I think there must be a slight lip to the back piece & they don’t fit together flush.
The only was to know for sure would be to remove the toolhead & look.
The display implementation doesn’t appear to have automatic text scrolling support so Sovol and Klipper is using these tip codes to indicate error message that wouldn’t fit the screen with enough details. The location of the error can be found by searching the firmware files as each code is unique. There’s usually still also always a gcode print indicating the same or more details so if gcode console is accessible then that’s where the longer description will be.
Looking at the firmware package, there are 24 tip codes currently ranging from 101 to 125 (118 doesn’t exist):
$ grep -ri -A2 "tip code" * | sed 's: *: :g'
extras/homing.py: self.gcode.run_script_from_command(f'M117 Tip code: 101 {name}')
extras/homing.py- error = "No trigger on %s after full movement" % (name,)
extras/homing.py- # Determine stepper halt positions
--
extras/homing.py: self.gcode.run_script_from_command(f'M117 Tip code: 103 {hmove.check_no_movement()}')
extras/homing.py- raise self.printer.command_error(
extras/homing.py- "Endstop %s still triggered after retract"
--
extras/homing.py: self.gcode.run_script_from_command('M117 Tip code: 102')
extras/homing.py- raise self.printer.command_error(
extras/homing.py- "Probe triggered prior to movement")
--
extras/probe_pressure.py: self.gcode.run_script_from_command('M117 Tip code: 124')
extras/probe_pressure.py- raise self.printer.command_error("Must home before probe")
extras/probe_pressure.py- phoming = self.printer.lookup_object('homing')
--
extras/lis2dw.py: self.gcode.run_script_from_command('M117 Tip code: 111')
extras/lis2dw.py- raise self.printer.command_error(
extras/lis2dw.py- "Invalid lis2dw id (got %x vs %x).\n"
--
extras/probe_eddy_current.py: self.gcode.run_script_from_command('M117 Tip code: 115')
extras/probe_eddy_current.py- raise self.printer.command_error(
extras/probe_eddy_current.py- "Invalid probe_eddy_current height")
--
extras/probe_eddy_current.py: self.gcode.run_script_from_command('M117 Tip code: 116')
extras/probe_eddy_current.py- raise self.printer.command_error(
extras/probe_eddy_current.py- "Failed calibration - incomplete sensor data")
--
extras/probe_eddy_current.py: self.gcode.run_script_from_command('M117 Tip code: 117')
extras/probe_eddy_current.py- raise self.printer.command_error(
extras/probe_eddy_current.py- "Failed calibration - frequency not increasing each step")
--
extras/probe_eddy_current.py: self.gcode.run_script_from_command('M117 Tip code: 119')
extras/probe_eddy_current.py- raise self._printer.command_error(
extras/probe_eddy_current.py- "probe_eddy_current sensor outage")
--
extras/probe_eddy_current.py: self.gcode.run_script_from_command('M117 Tip code: 120')
extras/probe_eddy_current.py- raise self._printer.command_error(
extras/probe_eddy_current.py- "Unable to obtain probe_eddy_current sensor readings")
--
extras/probe_eddy_current.py: self.gcode.run_script_from_command('M117 Tip code: 121')
extras/probe_eddy_current.py- raise self._printer.command_error(
extras/probe_eddy_current.py- "probe_eddy_current sensor not in valid range")
--
extras/probe_eddy_current.py: self.gcode.run_script_from_command('M117 Tip code: 122')
extras/probe_eddy_current.py- raise self._printer.command_error(
extras/probe_eddy_current.py- "Communication timeout during homing")
extras/probe_eddy_current.py: self.gcode.run_script_from_command('M117 Tip code: 123')
extras/probe_eddy_current.py- raise self._printer.command_error("Eddy current sensor error")
extras/probe_eddy_current.py- if res != mcu.MCU_trsync.REASON_ENDSTOP_HIT:
--
extras/ldc1612.py: self.gcode.run_script_from_command('M117 Tip code: 112')
extras/ldc1612.py- msg = "LDC1612 I2C bus busy or timeout error,please check the connection between the sensor module and the mainboard."
extras/ldc1612.py- else:
extras/ldc1612.py: self.gcode.run_script_from_command('M117 Tip code: 113')
extras/ldc1612.py- msg = "LDC1612 I2C bus error.There may have been internal or external interference during the communication."
extras/ldc1612.py- else:
extras/ldc1612.py: self.gcode.run_script_from_command('M117 Tip code: 114')
extras/ldc1612.py- msg = "Invalid ldc1612 id (got %x,%x vs %x,%x).\n\
extras/ldc1612.py- This is generally indicative of connection problems\n\
--
extras/fan.py: self.gcode.run_script_from_command('M117 Tip code: 110')
extras/fan.py- self.gcode.respond_info("Exception in chamber_fan")
extras/fan.py- elif self.fan_name == 'exhaust_fan':
extras/fan.py: self.gcode.run_script_from_command('M117 Tip code: 125')
extras/fan.py- self.gcode.respond_info("Exception in exhaust_fan")
extras/fan.py- def get_status(self, eventtime):
--
extras/z_offset_calibration.py: self.gcode.run_script_from_command('M117 Tip code: 109')
extras/z_offset_calibration.py- raise gcmd.error('ZoffsetCalibration: Toolhead probe more than ten times.')
extras/z_offset_calibration.py- ## perform z hop
--
kinematics/extruder.py: self.gcode.run_script_from_command('M117 Tip code: 106')
kinematics/extruder.py- raise self.printer.command_error(
kinematics/extruder.py- "Extrude below minimum temp\n"
--
kinematics/extruder.py: self.gcode.run_script_from_command('M117 Tip code: 107')
kinematics/extruder.py- raise self.printer.command_error(
kinematics/extruder.py- "Extrude only move too long (%.3fmm vs %.3fmm)\n"
--
kinematics/extruder.py: self.gcode.run_script_from_command('M117 Tip code: 108')
kinematics/extruder.py- raise self.printer.command_error(
kinematics/extruder.py- "Move exceeds maximum extrusion (%.3fmm^2 vs %.3fmm^2)\n"
--
kinematics/corexy.py: self.gcode.run_script_from_command(f'M117 Tip code: 104 {axis_names[i]}')
kinematics/corexy.py- raise move.move_error("Must home axis first")
kinematics/corexy.py: self.gcode.run_script_from_command(f'M117 Tip code: 105 {axis_names[i]}')
kinematics/corexy.py- raise move.move_error()
kinematics/corexy.py- def check_move(self, move):