Anycubic Kobra 2 Pro/Plus/Max + MKS Robin Nano v3.1 = native Klipper

Dear community,

since we can’t run a native Klipper on the stock mainboard of Anycubic’s Kobra 2 Pro/Plus/Max, I decided to swap out the mainboard.
I used a MKS Robin Nano v3.1 with TMC2208 v2.0 stepper drivers.

I made a somewhat extensive description where you can e.g. find some notes about the wiring and a link to my printer.cfg of the according model (based on the settings of my K2 Pro - I adjusted the cfg for the Plus&Max to the best of my knowledge).
Just a few notes since that’s what might be the most interesting part:

  • Both acceleration sensors (printhead = X and bed = Y) work.
  • Z-offset switch is/can be connected, but I personally don’t use it (could be used as a Z minimum limit switch for example though).
  • Stock ABL probe works w/o any modifications.

You can find the description for the specific models at my infosites about these models here:

Maybe it’ll help someone to go the same route and enjoy the beauty of a native Klipper…

5 Likes

Cool!!!

What did you replace? Everything?

Or what will need to be replaced and what can be kept?

Or will it just be gutting out the whole printer and just keeping the frames and bed etc?

I just took out the stock mainboard (and removed the control unit) and replaced it with the mentioned MKS mobo.
Everything else is still stock (like the ABL sensor, the accel sensors).

As described at the infosite I linked to, I used the stock housing for the MKS mobo and mounted the fan to the outside to have more clearance inside.
I then made adapter cables (instead of cutting off those PHB 2.0 connectors) because I wanted to keep the stock wiring, just in case I ever want to switch back to the stock mobo (e.g. like it’ll be possible to flash a native Klipper cuz AC opens up the fw and I want to test that or so).

Additionally, I also installed a cable for being able to add an optical z minimum limit switch and added an external MOSFET for the bed, but both of that is nothing you have to do.

I didn’t add a control unit for the MKS board and used the EXP2 connector for connecting the acceleration sensors.

Dear Catnippr, thank you so much for your work on such a high-quality guide to kobre 2 pro. I have a question for you, is it possible to install Klipper on Thin Clients and make my kobra 2 work through it?

@papig wrote here:

Thanks for the tag and amazing work/docs. How does this board do with klipper? more than capable enough? I was originally going to go with a manta m5p, but is that overkill?
This will be the first time I’ve ever done something like this. I want to use a klicky probe i have laying around and a sexbolt that I have too, which technically the kobra 2 max already has. I find their auto Z offset to be completely bologna and plan to do this: (link to YT video)

Until now it works just fine and imho it’s capable enough, yes.
It’s a 32bit board with 168MHz and has five independent stepper drivers, so you can either connect each z motor of your Max to it’s own stepper driver or connect them parallel to the same z driver like at the stock mobo.
Of course you can take pretty much whichever mobo you want (and I wanted to use a BTT board in the first place as well cuz of the rubber ducky haha), but I already had five MKS TMC2208 v2.0 drivers in my drawer, found this board at AliEx for 25€ and it’s also a bit smaller than the stock mobo and therefore I could fit it in the stock housing, so I went with this one.

Imho you should be able to use that plugin with the stock z-offset switch as well.
Klicky probe should/will work with the MKS mobo (or any other ‘generic’ mobo) as well then, yes.
If you end up doing any of these mods, please reach out to me directly (direct message here, email, whatever), cuz that would be worth being mentioned and shown at the infosites as well then… :wink:

1 Like

Yes, absolutely! I wrote a bit about that solution here.
I personally actually prefer using a ThinClient instead of multiple (imho overpriced) RPis. I’m running a HP ThinClient T630 where I connected all my printers to. I’m running Klipper with multiple instances and everything works just fine :slight_smile:

But: you can only make your K2 Pro work with that if you swapped out the stock mobo and run a native Klipper - it will not work with the stock KobraOS firmware, as you can’t connect to the machine locally in that case.

so I understood everything correctly and unfortunately it is impossible to work with a standard motherboard. In that case, wouldn’t it be easier to use a motherboard about kobra neo? as I understand it, it can be flashed on Klipper without additional devices. A thin client in my country costs $17, thanks for the response.

I don’t understand what you mean with “wouldn’t it be easier to use a motherboard about kobra neo”?

Just to clarify things: so which printer exactly do you have?

If you have a Kobra 2 PRO, PLUS or MAX, then you can’t install a native Klipper on the stock mainboard. If you want to use a native Klipper, you have to replace the stock mainboard with a generic one how I just did.

If you have a regular Kobra, Kobra Plus, Kobra Max, Kobra Go, Kobra Neo, Kobra 2 or Kobra 2 Neo, then you can flash a native Klipper on the stock mainboard.

In any case you always need an additional host like a RPi or a ThinClient or whatever to run Klipper on which is then being connected to the printer that is running the Klipper firmware, because that’s how Klipper works.

1 Like

Yeah, I can track what I do to make the klicky work and send it to you. After I watched the klicky video ages ago it helped me understand how the z offset stuff anycubic did didn’t add much value and why their discord and reddit are full of people with destroyed beds, they completely skip the part where you test the probe distance from the endstop switch and instead assume the endstop switch is always correctly calibrated to the height of the buildplate? Or something like that, in the calibration sequence they only probe the bed and then the nozzle, so I think they’re assuming either the distance between the probe and the nozzle or the distance between the endstop switch and the buildplate to always be the same. I think that’s why my and many others “auto z-offset” has never been correct.

I looked up the klipper benchmarks on the nano board you used and it seems more performant than the m5p and cheaper AND you have a guide I can follow, so that’s a triple win and I’ll go that route.

Yeah, having the surface of that z-offset switch and the surface of the PEI plate at the same level is crucial, but it seems that many ppl also have their ABL probe being too high (judging to what I read at reddit, I’m not at discord). I usually recommend to set it ~2mm higher than the tip of the nozzle. (Not to mention the users who try to calibrate/probe/print w/o the PEI plate applied…)

But still how AC calculates the z-offset is a riddle for me. When I checked the switch (unfortunately I really did some basic measurements, so I’ll probably re-do it in the future), it seemed to open as soon as it got triggered/pushed down just a tiny bit. So I reckon that AC has a value being set (which apparently got changed within several fw updates) which is set like “xy mm after switch has being triggered”.
However, I’m glad I don’t have to deal with that anymore - z-offset was always reliable at my other machines with Klipper, so I expect it to be the same here as well.
I’ll probably add an optical z-min limit switch in the future if I encounter any kind of problems, cuz that really works great for the z-offset at my machines which do have one.

I figured it would be easier for ppl to copy my build if I make a table with the according pin/connector assignments I used at the MKS board, cuz looking at the printer.cfg might be too confusing for ppl who never used Klipper before…

Oh cool, so that was actually a lucky pick then?!? Ha, nice! I didn’t check any benchmarks… :wink:

Thanks a lot for the clarification. I’m new to Klipper and 3d printing in general. Above on the topic of print table alignment, my auto mode always shows different values after calibration. I read all your manuals, adjusted the Z-axis switch and despite the fact that before calibration the value was -4.91, and after calibration the value became -4.92, the nozzle, for reasons I do not understand, dropped 2 mm below the table and slightly damaged the plate. Is it possible to make changes to the Unmodifiable.cfg or Printer.cfg file in order to reduce the delta of calculating the curvature of the table? or do I completely disable the built table map so that I can just manually calibrate my table?

Well, there are solutions now to change settings of the stock printer.cfg, but I actually wouldn’t recommend doing so if you don’t really know what you are doing - and since you’re new to Klipper, maybe better stay off that for now…

What do you mean by “the nozzle dropped 2mm below the table”?
And: did that happen like ‘out of nothing’ or did you do anything at the hotend, like installing a new nozzle or so?
In either case: did you adjust the position of the ABL sensor in relation to the nozzle as well to make sure it actually detects the surface early enough? If you didn’t do that, the nozzle will drive into the bed if the sensor is too high and doesn’t detect the surface ‘early enough’.

Besides, just fyi in general: the actual value of the z-offset doesn’t matter and doesn’t really say/mean anything. Also don’t look at the value other ppl might report, because the z-offset is an individual value.
Having the z-offset determined during the calibration procedure is just a somewhat rough approach to a value that’s somewhat okay-ish anyway. You always have to check the initial layer and adjust the z-offset on the fly while printing it after running a calibration where the z-offset has been set again by KobraOS.

1- I removed and cleaned the nozzle, after assembly I immediately set the sensor level according to the template.

2 - performed auto calibration and got a number close to the previous one, started a test print and was ready to make changes to the Z ofset, but the nozzle after the first probing of the table went and fell below the surface of the table by 2 mm. It’s good that my desk is fixed on springs, otherwise the damage would be much more serious. I just didn’t have time to compensate for the difference of 2-2.5 mm in a short period of time, since the maximum lifting step at a time is 0.05 plus a huge delay in executing this command.

3 - even after setting the normal Z ofset, say on the model in the center, the result becomes unpredictable when printing test shapes on different edges of the table begins. from one corner, the layer turns out to be very small on the opposite side, on the contrary, it is high.

that’s why I’m interested in the way to disable the standard curvature grid. I would like to try to set the distance to the nozzle manually using probes and conduct a test print.

1 → you’re referring to the ABL sensor here, not the z-offset sensor, right?

2 → “the nozzle after the first probing of the table went and fell below the surface of the table by 2 mm” - so did the whole nozzle/hotend came out and slid lower? I don’t really get what you mean, sorry…

“It’s good that my desk is fixed on springs, otherwise the damage would be much more serious.” - I also don’t understand that one. What has your desk to do with this?
Or are you trying to say that you are using springs between the bedplate and the begantry instead of the rigid stock spacers?

3 → “from one corner, the layer turns out to be very small on the opposite side, on the contrary, it is high.” - that sounds like you have to tram the x-gantry to be parallel to the bed then, see the description at my infosite here.

But if you are using adjustable spacers instead of the rigid stock ones, you would have to tram the frame and then the x-gantry in relation to the frame first, then tram the bed in relation to the nozzle…

This isn’t really a problem of the z-offset not working correctly or so, it’s just the fact that the ABL can only compensate minor deviations. And if your x-gantry is too tilted/crooked, then it can’t compensate that.

That’s why I always point out that the very first thing one has to do is to calibrate/tram the printer itself, means, the frame, the rails, the axes etc.
Only if the whole printer’s construction itself is a parallel, perpendicular and equidistant setup, then the rest will work out.
These machines don’t come calibrated/trammed from the factory, so most users have many ‘weird’ issues when assuming everything is already setup nice&perfect and they try to just print out of the box without taking care of that before doing anything else.

Forgot: if at #2 the nozzle suddenly fell down so to say, check the screws at the heatsink as they’re most likely loose then and therefore the hotend dropped.

However, please read the chapter “Calibration” at my infosite again and make sure to properly tram the whole printer (= frame, axes, rails…) first of all.
If you then still have questions, reach out directly, either here via DM, at reddit (same username there) or via email (address is in the footer of my infosite).
Please don’t elaborate about this problem any further here, because this thread is about how to install the mentioned mobo and not about how to tram the printer or how to set the z-offset at KobraOS… :wink:

1 Like

Thank you very much for your support, I will contact you later. there is no time now, the work shift has started, there is no time for the printer)

Would be honestly nice with an in-depth YouTube tutorial about all this and the wiring etc.

That would mean that I’d have to rip everything apart and start all over again… :frowning:
Besides, imho it wouldn’t be that much interesting/helpful I think, because the main part of this whole conversion is making adapter cables (or cut off the stock connectors and crimp the belonging ones directly to the stock wires).
Means, most of it is measuring/identifying the stock wires, soldering wires together and crimping contacts (if you didn’t buy preassembled XH2.54 wires which you just solder to the wiring). Once you’ve done that, you just put in the plugs in the according connectors.

I made a table about the wiring/connections according to my cfg yesterday, now it should be easier to copy the build.
If you’d check the whole description and let me know what you think might be good/useful/necessary to add, I’d be happy to do so then.

Cool! I’m just worried about frying the system. Honestly this mod is probably not for me.

I will probably just buy a new printer. I’m not an electronics guy honestly.