moggieuk / Happy-Hare

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

How to disable completely MMU? #297

Open lettore opened 1 month ago

lettore commented 1 month ago

Hello, I sometimes need to print without using the MMU, even without using the bypass, so directly from the extruder. I tried to use MMU ENABLED=0 but I can't go forward printing, it just stuck after my custom PRINT_START. So I removed the mmu load config lines in PRINTER.cfg, and worked perfectly. There's something I need to do other than do MMU ENABLED=0 or it's just a bug somewhere?

moggieuk commented 1 month ago

Actually MMU ENABLE=0 will disable Happy Hare (not ENABLED), but it is possible that the new print start macros aren't checking for that. If so it is an oversight.

EDIT: I checked and all the start marco do check for mmu enabled. So I'm not sure I see the bug here unless you didn't disable. See MMU ENABLE=0 vs MMU ENABLED=0 comment.

BTW The "Bypass" functionality is to allow ad-hoc single color prints without disabling.

lettore commented 3 weeks ago

I tried again many times but the print always get stuck after PRINT_START macro, it goes in PAUSE state but unable to resume as it says not currently printing. I will try to debug a little to find exactly where the print get paused, anyway as I said, commenting out happy hare in printer.cfg do the trick, so there's should be no commands calling MMU in the print file, otherwise will complain some gcode macro missing.

3Dgraf64 commented 3 weeks ago

Commenting out is not enough. The encoder is still active. Instead, putting "MMU ENABLE=0" at the beginning of the start GCODE in the slicer worked great for me.

lettore commented 3 weeks ago

Found out the culprit, I had to disable clog detections in config to be able to print, calling MMU ENABLE=0 is not enough to turn off all Happy Hare functions. I didn't found a command to change MMU clog detection from terminal, maybe disabling the filament sensor from Klipper will be enough?

lettore commented 3 weeks ago

Managed to make it working doing MMU_ENCODER ENABLE=0 and then MMU ENABLE=0. It's not possible to make clog detection visible as a filament sensor and be able to switch it on and off from the interface?

3Dgraf64 commented 2 weeks ago

Once the MMU disabled it's not possible to use the encoder alone. In the start gcode I enable my BTT filament sensor instead.

lettore commented 2 weeks ago

Once the MMU disabled it's not possible to use the encoder alone. In the start gcode I enable my BTT filament sensor instead.

That's not the case, just disabling MMU is not enough to disable the clog detection. So I have to disable the Encoder before disabling the MMU, it makes no sense but it works.

moggieuk commented 1 week ago

I'm interested in seeing the problematic mmu.log because disabling the MMU with MMU ENABLE=0 should make all the runout callbacks a no-op.

For example this is the handler for the encoder runout/clog. The only way that self.is_enabled can become true is if you were to call MMU ENABLE=1 or MMU_RESET or restart Klipper.

    cmd_MMU_ENCODER_RUNOUT_help = "Internal encoder filament runout handler"
    def cmd_MMU_ENCODER_RUNOUT(self, gcmd):
        self._log_to_file(gcmd.get_commandline())
        if not self.is_enabled: return
        self._fix_started_state()

        try:
            self._log_debug("Filament runout/clog detected by MMU encoder")
            self._runout()
        except MmuError as ee:
            self._mmu_pause(str(ee))