SKR Pro V1.2 Very Noisey

I have gotten the basics running on Marlin for my SKR Pro. When I move my X-axis, it is super smooth with TMC2208. Great sucess! Then I move Y and it is hissing like crazy! I move Z and same thing.

Now I have read through some things on the noise you get from active steppers, but I am curious why only the X makes the noise? I have swapped the drivers around and the ones that made noise for Y and Z did not make any noise when used for X.

So anyone have any insight for me? I think that everything is set properly in FW and I thought that you arent supposed to touch the pots on the drivers.

Here is my M122:

You actually want them all noisy.

The X has stealthchop enabled, which is great for 3D printers, but we needax strength at slow speeds for milling, so we turned off stealthchop on all axes in the MarlinBuilder releases firmware.

If you want them quiet, then turn on stealthchop on all the axes. Hopefully it will be fine.

It looks like the stealthchop options are commented out for the MP3DP release.

I thought that I had stealthchop enabled for all steppers. This is being used on a 3DP so quiet is what I am after with these drivers.

The options I have in config_adv:
#define STEALTHCHOP_XY
#define STEALTHCHOP_Z

Is there something else I am missing? I did not do any physical jumpers from drivers to main board.

The only thing that I saw in the FW that made me question if I missed something:

  • To use TMC2208 stepper UART-configurable stepper drivers connect #_SERIAL_TX_PIN
  • to the driver side PDN_UART pin with a 1K resistor.
  • To use the reading capabilities, also connect #_SERIAL_RX_PIN to PDN_UART without
  • a resistor.
  • The drivers can also be used with hardware serial.

I did none of that…

Oh, is this for a printer?

M122 is the key. If one of those settings are wrong, I think it would report an error. It looks like they aren’t enabled, which may make some of the info invalid. But if they are enabled, it says right there is stealthchop is enabled and it only shows it true for X.

Yep, if you remember a while back, I posted about a printer I had that tried to burn my house down (Eryone Thinker SE) and the company did not help at all so i am upgrading the brain to the SKR Pro. I killed my SKR turbo by accident, shorting it with a wire I dropped and now just trying to get this one up and running.

So far I have learned at lot! And I have most things working on it, so it’s just down to the details like these noisy steppers. I have gotten much better at VS code and feel like I’m not going to wreck anything anymore.

I will keep digging into the stealthchop issue and see what I can find.

Also, thanks Jeff, I always know that if i post here I’ll get a response from you that will be helpful! I’m so glad that Ryan created all of this!

1 Like

I remember that. I read every post here, so my wires are easily crossed.

1 Like

So, Jeff, you are correct that the M122 showing stealthChop off for Y, Z, E being the problem. I was able to send “M569 S1 X Y Z E”, which turned stealthchop to true for all of them.

When I reset power to it, it all goes back though. So now I just need to figure out how to keep stealthchop set to on. I am sure a more FW savy person could figure it out quicker but I will keep on digging until I find it. Lots of rabbit holes to go down. I guess this is how we learn though!

Probably best if you set the firmware to do it…

Have you tried using M500 to save settings?

I agree, m500 can get you there for now, but next time the eeprom is reset for whatever reason, you will have to set stealthchop again. Since you show the stealthchop enable defines are not commented… perhaps there is another define somewhere causing the problem? AFAIK, the latest Marlin uses a single define to set stealthchop for all axis, but those individual defines can also be used. So maybe that single line just needs to be commented out so it won’t redefine your enable lines (not at pc to show exactly which line… but easy to find near the top of the tmc configs).

M500 saved the settings. I powered it down and back on and they stayed saved.

1 Like

Is it common for the eeprom to get reset? It wouldnt be a huge deal to send the gcode again to fix it if it broke, but I would rather have a permanent solution.

I tried looking for anything else that would either define that stealthchop was off or that spreadcycle was somehow defined later but I cannot find anything.

When I look into the TMC definitions I do not see anything weird. At least everything looks fine based on my limited programming knowledge.

I checked to make sure the hybrid_threshold isnt active, so its not trying to switch to spreadCycle.

Do you think this is an old version of Marlin? I got mine from BTT and it says V2.0. I checked the stealthchop vs the latest Marlin release (from Marlins Github) and they seem to define it the same as my files:

in config_adv from Marlins latest release:
/**

  • TMC2130, TMC2160, TMC2208, TMC2209, TMC5130 and TMC5160 only
  • Use Trinamic’s ultra quiet stepping mode.
  • When disabled, Marlin will use spreadCycle stepping mode.
    */
    #define STEALTHCHOP_XY
    #define STEALTHCHOP_Z

And it looks like my trinamic.h and .cpp are the same for the stealthchop items.

I feel like I am going nowhere on this one. I suppose I won’t let it slow me down and I will keep going through the rest of the configurations, but I would really like to figure this out. Hard for me to sleep when I am scrolling through config files when I close my eyes!

One thing that I do not know enough about is what UART mode even does vs standalone. I will be reading up on it, but is it possible it thinks that the drivers are not in UART mode and therefore defaulting to turn off stealthchop? Not sure how to verify that UART is active. Or if this is even a possibility. My jumpers are connected on the main board for UART…

One other strange thing. In my M122, it shows X Set current is 800 but my config_adv I have set to 750.

Any idea why that wouldn’t be correct? Maybe the way I am flashing the board? I have been sending the firmware.bin to the SD card and plugging it back in. So when it reads the card, it updates the FW with the little green flashing LED. I bring this up because when I was working on my SKR Turbo, the tutorial told me to use the PIO upload button in VScode.

It SHOULD NOT be common for the EEPROM to be reset.

As a general principle though, with Marlin, if I need to set things up in the EEPROM, I will most commonly adjust the firmware and recompile it so that the default values are the ones that I actually want to use. This way, if something happens to my control board, and I need to reflash a new one, I don’t need to remember all of the changes that I set. Everything from steps/mm to probe offsets I will check periodically so that a fresh compile with my source code will result in the same settings that I am currently using.

1 Like

M502 will load in whatever values should be there from the configuration.h files. Maybe your eeprom had some funky values in it and they loaded the first time instead of the ones you wanted.

You should probably do M502 and then M500 anyway, to make sure nothing else crept in from bad memory.

Hehe… config file flashbacks at bedtime do happen. At least it is just the sorting out phase where a lot has to be learned at once… makes me a bit stir crazy as well. Once things are tuned up and running well though, having a firmware file that you can always fall back to that gets it running well is good… and you learn valuable stuff along the way too.

Sometimes I feel I am just being ocd, but I also have a habit of compiling with my tuning and configs as much as possible, and I always initialize the eeprom after flashing. Since I often like to try new features that come out in Marlin, I am finding myself diffing new versions of config files a lot anyways. Having everything in the config makes those upgrades a lot less painful.

I suppose it is possible for the eeprom to already have had values in there. This SD came with one of my SKR boards pre-loaded with FW. So if reloading the FW doesnt reset those values, then it probably is whatever they left stored on it. Is M502 the only way to reset the values? I thought that the gcode was temporary (if the eeprom reset for some reason).

2 questions:

  1. What does it mean to initialize the eeprom after flashing? Is that through pronterface or VScode?
  2. How do you keep track of your different configs? I have a hard time understanding where everything is stored in VScode and determining how it pulls from different folders. (and the difference between a workspace and a project and just open files. Like if I open 2x configs at the same time, does it keep them in separate places?

There are three versions of these settings (not all settings work this way, but many do):

  • The firmware version. Set in configuration.h and configuration_adv.h. These only change when you flash it.
  • The eeprom versions. These do not change when you flash it. If you change versions of the firmware, they may be misinterpeted.
  • The ones currently loaded in memory while it is running. These are what get used.

When it boots up. It loads the ones from eeprom to memory.

When you change something with gcode, like M92, it changes the ones in memory.

M500 Saves the ones in memory to eeprom

M502 reads the ones from firmware into memory.

When you flash using the sd card, you should also send M502 and then M500 to reset the values in the eeprom to the firmware you just flashed.

After you change something with gcode that you like, use M500 and it is also a good habit to go back to your copy of configuration.h and make the change there so you won’t lose it next time you flash.

There is some logic in the marlin firmware when you substantially change versions, like from v2.0.4 to v2.0.9 which will see that the eeprom is based on an old version of marlin and it will not read from eeprom. So sometimes you might have gotten lucky and not had to do M502/M500. But you shouldn’t depend on that.

Thanks Jeff. I also see that M503 tells you what is currently stored so that is helpful so I can save it before I kill it to remember what all changed.

Your explanation is super helpful. Not sure why this wasn’t mentioned in any of the videos I watched (which is a lot) from beginner to advanced.

The thing that I don’t understand is why the EEPROM ISNT overwritten every time you load FW. Or at least why isn’t there an error letting you know that values are different on first boot up? Maybe it’s just me!