Klipper MMU2 Support?

Hello:

So what is the current state of support for the MMU2? Nearest I can tell, at least two people made really good progress on it: trevjonez (GitHub - trevjonez/klipper: Klipper is a 3d-printer firmware) and kakoa-fr (github /kakou-fr/ [/klipper/ and a few others]). Trev was working on getting the original MM-Control board to work and Kakoa was working on getting DIY boards to work along with the BTT MMU DIP board. Trev seemed to have solved the problem with the HC595 shift registers. Kakoa seems to have had success with the DIY version as evidenced by his FB group and Thingiverse pages.

I have tried numerous times to get both solutions to work for me. Now, I’m no programmer so I’m sure I’ve made a lot of mistakes. I tried to merge both of their most recent branches with no success (in retrospect I’m not sure why I tried this). I tried to update Trev’s most recent branch (GitHub - trevjonez/klipper at tjones/mmu2-2020-fw) to the most recent version of Klipper but I wasn’t successful. Well, I was partially I suppose as I got Klipper flashed to my main board and to the MM-Control board, but I could never figure out the configuration. Neither repos had a full example of what to configure so there was a lot of head-scratching and guessing.

Most recently, I deleted all my Klipper files and installed Trev’s branch 2020 branch with this command: git clone -b tjones/mmu2-2020-fw --single-branch git://github. com/trevjonez/klipper.git. I flashed the firmware successfully. When it came time to configure the printer.cfg file and the mmu2.cfg file, I removed all of the unnecessary configs and just left the bare minimum in the first config file. I started working on the mmu2.cfg file one section at a time. I figured if I got one section to work then that would be a really good sign.

One problem that I have run into is the way the steppers are defined. In Trev’s branch, the idler stepper is labeled [stepper_i]. If it is labeled like this, Klipper just throws an unknown stepper error. I’ve searched and searched and I think there may be a missing config file. It may or may not be related to a “mmu2 kinematics” file that I think is missing (the [mmu2] section has a kinematics variable but the default ‘mmu(2?)’ doesn’t work on my machine). Anyways, I changed the section to [manual_stepper] and that seemed to help as I was no longer getting errors.

Once I was without errors, I attempted to autohome. After a few seconds, I would get a timeout error with a failed to home message. I haven’t been able to figure this out yet. I tried excluding the mmu2.cfg file but that didn’t help. My printer.cfg file is basically the same one that I was using before for some months so I’m hoping that either something is misconfigured or it has to do with the specific version of Klipper from Trev’s branch. I had to make a few changes like from rotation_distance to step_distance under the [stepper_x/y/z/e] and move microsteps to the TMC sections. I don’t know if it is related to that.

When I try to home, I can feel the stepper try to move, maybe. I can feel it vibrate just a little bit and my belt gets tight. If I turn the motors off through OctoPrint, I can move the hotend on the X axis without resistance.

Anyways, are there any plans to integrate their works into the main Klipper repository? It would be a real shame if all of their efforts went to waste. Seems like Trev worked on his fork on and off for maybe 2 years, at least according to various dates that I found. I was going to contact trevjonez and kakoa-fr on their forks but it doesn’t seem like there is any way of doing that, so that’s why I’m posting this here. Sorry if this is the wrong place for this.

I forgot to mention, my printer is an Ender 3. I’m using the BTT GTR V1.0 board with TMC2226 drivers. I know what you are thinking, why doesn’t he just use the drivers on his main board to do a DIY MMU instead? Well… I don’t have an answer to that other than I don’t want to run a bunch of wires from the board to the MMU2 steppers. And besides, the MMU2 was designed with this board in mind so I’d rather use it if I can. I suppose I could go back to Marlin to use the MM-Control board but that sounds worse to me than not using MMU2 at all!

Attached is my klippy.log file. At the end of it, I have included the results from DUMP_TMC in case there is a clue in there as to what is going on. Like I said, I’m guessing the problem has already been solved in newer versions of Klipper but I’m just trying to be thorough.
ghostbin. co/paste/rbqwq4j (had to split the link, sorry)

As far as I can tell the DIY MMU2 is supported in mainline Klipper. The config file was merged more than a year ago. Just flash the SKR Mini with Klipper, include this config file, and it should work.

Right, I understand an SKR Mini (or any other board) would work but I don’t have that. I have a Prusa MM-Control board. I guess it would be an easy solution to get a SKR Mini to do this with but I would have to purchase one and don’t really want to add any more cost to this thing as it was already kind of expensive.

It seems you’ve got a good feel for the current state. There are success reports when controlling the mmu2 using a regular 3d-printer boards (via sample-mmu2s-diy.cfg), but the main Klipper branch does not have hardware support for the stock prusa mmu2 control board.

Alas, the stock prusa mmu2 control board is quite goofy, and I’m reluctant to alter and maintain changes to the core Klipper code to support this one goofy board. (Specifically, the direction pin on the stepper motor drivers are not directly wired to the micro-controller.)

It is believed that the board could be supported without making core changes to the low-level Klipper code, but no one has yet taken up that challenge.

-Kevin

No worries, I understand it’s a lot of work and well sometimes there are easier solutions. I ended up just buying a SKR Mini E3 V2.0 instead of messing with the Prusa board. I got Klipper flashed to it and am working on getting that configured. I am running in to some issues but hopefully I’ll be able to figure it out. If not, I’ll make an other post. Thank you!