moggieuk / Happy-Hare

MMU software driver for Klipper (ERCF, Tradrack, Prusa)
GNU General Public License v3.0
482 stars 121 forks source link

Bugs in development branch #483

Open 3DCoded opened 18 hours ago

3DCoded commented 18 hours ago

Thank you for writing this amazing MMU driver!

I am trying to use a Type-B setup (the 3MS) in the development branch, and came across a few main issues that are preventing me from moving forward.

The first issue I encountered is that you can't use gear steppers on multiple MCU's. My setup uses two gear steppers on one MCU (Einsy RAMBo) and the third on the MMU's MCU (SKR Mini E3 V2). When I try to configure these motors, it gives me this error:

Multi-mcu homing not supported on multi-mcu shared axis

The next error I encountered is that you can't use multiple TMC driver types (T0 and T1 use TMC2130s, and T2 uses a TMC2209). The error I get when I try this is:

No section `tmc2130 stepper_mmu_gear_2`

The last problem I encountered is that I am unable to run MMU_LOAD or MMU_UNLOAD with only one filament sensor configured (an extruder entry sensor). The error I get is:

MMU issue: Load sequence failed: Attempting to load gate but gate sensor 'mmu_post_gate_0' is not configured on MMU!.
Occured when loading tool: > T0

Any help would be appreciated!

3DCoded commented 16 hours ago

I was able to (sort of) bypass the last issue with the filament sensors by defining a virtual pin as the post gate sensor (and disabling T2). Now I'm getting an internal error on MMU_EJECT.

~~mmu.log klippy (3).log~~

EDIT:

I just saw this commit. The MMU_LOAD command now works, but MMU_UNLOAD now only unloads the filament ~1cm before stopping.

3DCoded commented 16 hours ago

I was able to (I think) find the cause of the second error. In mmu_machine.py, lines 122-124, this:

base_tmc = '%s %s' % (chip, GEAR_STEPPER_CONFIG)
if config.has_section(base_tmc):
    tmc_section = '%s %s_%d' % (chip, GEAR_STEPPER_CONFIG, i)

can be changed to this:

base_tmc = '%s %s' % (chip, GEAR_STEPPER_CONFIG)
tmc_section = '%s %s_%d' % (chip, GEAR_STEPPER_CONFIG, i)
if config.has_section(base_tmc) and config.has_section(tmc_section):