CoreXY Problem Found, Config.G not Triggering Corexy Mode.

  • Here's an excerpt from my config.g

    I have M669 K1 set in the General preferences section.
    I have been pulling my hair out, and finally found the "machine status" tab, and decided to check it out.. It says My Machine is a cartesian.

    If I manually send M669 K1, it then identifies as Corexy, and motion works as it should.. However, when i reset the machine?

    back to cartesian..

    I've tried moving the command all over the config file, but no Joy.

    Why is the Duet simply ignoring the M669 K1 command in the config?



  • @steve-lynch Maybe the command contains a hidden character. Try deleting that line then re-typing it. Failing that, the only other possible cause is if there is another M669 K0 somewhere else that is overriding it. It could be later in your config.g or it could be in a config-override.g file if you use one. Or maybe in a homing file.

  • Yeah, no dice.. I even hand typed the config file. If I add M669 K1 to each of the homing files, when I home, it homes in Corexy mode, then returns to cartesian.

    It's like there's a bug that is automatically reverting it to cartesian.

    I checked the override.. it's just a response to M500... nothing really in there, and it's not being used anyway.

    This is really weird!

  • @steve-lynch Can you post your entire config.g, and homing files please, so that we can see if we can spot anything. There are hundreds if not thousands of people with CoreXY printers using Duet and no one else has ever reported such behaviour, so I doubt it's a bug in the firmware.

    Oh and just to be sure, can you input M669 without any parameters using the console and report back what it says.

  • What firmware version?
    If you use M667 S1 in config.g does it work?

  • If I Manually enter it in the Gcode bar, yes, that works... But if it's being introduced by Gcode files, it ignores it. I added the M669 K1 to all of my homing files just to try it out.. I spent 2 days doing it without that code in there, so I have ample testing both ways.

    M669 says Cartesian, matrix 1.00 0 0, 01.000, 0 0 1.00

    If I add K1, it says Kinematics is CoreXY Matrix

    Here's My full Config,

  • Check and make sure nothing is in your Config Override file.

  • This is all that's in my config-override


  • @steve-lynch OK, Ii'm failrly sure I know what your problem is. At the very end of your config.g file you have M584 to remap the drives. From the Wiki for M584 ( it says " M584 must come earlier in config.g than any M350 and M906 commands. If it creates new axes, it must also be earlier than any M92, M201, M203, M208, M350, M566, M574 , M667 and M669 commands."

    I appreciate that strictkly speaking you haven't created a new axis but by resigning an extruder driver to the Z axis, you kind of have. In any case, that M584 must come before your M350 and M906 commands. So move it near the top of your config.g - say just before or at the beginning of the "motion" section. For completeness sake, I would explicitly assign the extruder too, rather than relying on the default setting. So M584 X0 Y1 Z2:4 E3.

    Oh, and as someone else pointed out, are you using firmware 2.03 or later? If not, you should use M667 S1 instead of M669 K1.

  • OK, My second extruder channel is not occupied. I'm not using it for a motor.. My z motors are wired together as they always have been. I was using M669 K1 as you can see in my config file above... If there's a 667 in the one on my dropbox, it was just because I was trying anything and everything.

    Both work to choose corexy mode on 2.03, which is what I'm on.. As mentioned above, I think it's more of a polite request to start using M669 K1, as M667 S1 still works the same.

    if it is assigning an axis to the extruder channel, I apologize. I had another user with the exact same configuration and same machine send me his config to try.. He probably has his Z split. I'll fix that. I understand that those need to be in the beginning if they're being used.. David taught me that last year when I got my first Duet. 🙂 I wasn't even looking for that, so i would have easily missed it.

    Thanks for looking.. I'll try that now.

  • I commented out the M584 as it was not in use... As well as the dual lead screw Parameter. It still defaults to cartesian mode.. I removed all power, and did a hard power reset... same thing.... Defaults to cartesian. I'm going to go ahead and make a completely new configuration again... (5th time) and see what's what.

  • I just created a new config.g with nothing at all except for M669 K1

    when I reset the machine, it defaults to cartesian... When I manually click on , and run config.g, it changes to COREXY.

    If I add one more simple task like deploy probe, it does it on it's own, but still ignores the COREXY call.

    Why would a file that runs perfectly when you manually run it, not load automatically? even though there is no use for the config override, does it need to be there? Can I just delete it?

  • Ok, so I decided to go a completely different route... forget the configurator, forget the existing config... I loaded a year old config.g I had in my dropbox, and just altered it. now it defaults to corexy. Strange thing is, If I use a compare tool, they're for all intents and purposes almost identical. There has to be some invisible corrupt data in my config or something.. I cannot explain it... I've been waiting for someone to catch a dumb mistake, but everyone says it looks ok. anyhow, I don't know why that was the solution to that portion of the problem, but it was.

  • @steve-lynch Got me stumped at the moment. When you apply power the first thing it does is read config.g and carry out each command in sequence.

    Ref the config-overide, no you don't need it. It's there to simulate writing to eeprom that some people like to do. Personally I hate it because sooner or later it will bite you by having configuration settings in two different places. So if you have a config.g with an M501 at the end of it, then once the firmware has read and acted on all the commands in config.g, it will go on to read and act on whatever is in config-override.g. So as log as there aren't any setting in the override file that don't also exist in config.g, then you can delete the override file and the M501 command that calls it.

    Edit - we were typing at the same time so I didn't see your last comment. That's kind of crazy.

Log in to reply