Configuring Marlin for SKR 3 EZ

Hi all, I am reviving my MPCNC project, and one of the biggest tasks will be to build a FW for the control board I have : An SKR 3 EZ.

Before I go deep in late night coffee infused code/config sessions, I would like to have your thoughts on the overall methodology, especially from the ones who are currently using boards which don’t have a V1 FW available.

I figured a good way to go would be to work by comparison between differents Marlin configs. So I got the following versions:

  • From V1: FW for the SKR pro, which is the closest to the SKR 3, I believe => SkrPro_Dual_2209-2.1.1. That’ll give an example of a proper Marlin for MPCNC
  • From Marlin: The vanilla Marlin 2.1.1, to be able to diff it with V1’s and identify what is generic and what if MPCNC specific
  • From BTT: The only FW they have available for the SKR3. Based on 2.0.9.3. If there is some funny business here, or customization necessary for that board, I should find it there
  • From Marlin: The vanilla Marlin 2.0.9.3, to be able to diff the board specific configs in the BTT firmware
  • From V1: SkrPro_Dual_2209-2.0.9, for comparison purposes on the 2.0.9 baseline

Soooooo. Now the big question is which one do I fork to use as my base for my MPCNC project. I am leaning towards a SkrPro_Dual_2209-2.1.1 base, remapping pins and porting other configs necessary for the SKR3. But on the other hand, starting from the BTT FW should make it more likely that it would run on the SKR3, and I have 3 points of comparison for 2.0.9 (V1-BTT-Vanilla).
SkrPro_Dual_2209-2.0.9 is also an option : trusted V1 firmware for MPCNC and the same 3 points of comparison.

So to all the Marlin tinkerers around: are 2.0.9 and 2.1.1 close enough that config comparison between these versions is straightforward? Or has there been some deep changes which make it cumbersome?

Any suggestion is welcome at that point :slight_smile:

At least one good news in that mess: I successfully compiled all the firmwares I mentioned on the platformio installed on my PC. Not a bad start.
Only the BTT FW had an issue requiring change in a python script to compile. This is not making me confident to use this FW as my starting point…

I have recently compiled from the marlin source for the SKR3 for the MPCNC Primo (so not the EZ variant) with TMC2209 drivers, display TFT35 E3 v3 + ESP07s WIFI module.

I am still working through a few issues (getting the wifi to work and the display), but am able to make it all work through repetier. Note that there is no need to cut off the pin to disable sensorless homing - this requires the jumper to be placed in the location as indicated in the manual.

One of the key points is to check the actual chip which is in the board as BTT have a couple of different variants - and use this in the default_envs within platformio.ini.
I have not had to dive into the pins file within the Marlin/src/pins/stm32h7 folder to make any adjustments - this all worked out of the box.

I looked at the V1 build src but didnt get my head around the approach - so would be happy to assist with this if someone had a roadmap to the different files. Suspect i needed to work in the makefile…

Thank for you message, the pin for sensorless was one of the few good news reading the documentation. That documentation is lacking in so many ways…

I don’t have the board with me here, so cannot check the exact chipset. So for now I compiled with STM32H743Vx_btt as default env. Hopefully it is the right one.

I have so many questions for you…

  • What version of Marlin did you start from? I’m on 2.1.1, to be able to compare easily with the V1 FW
  • I have never used repetier, you connect a PC running repetier to the board via the USB port of the board?
  • With repetier, you are able to send individual GCODE commands interactively or you have to generate a job and send it?
  • I checked the pins for SKR3 and SKR3 EZ and as I expected it is all the same, only the driver sockets are different. So could you share the pins/sockets you used? I obviously plan on using E0M and E1M for the X2 and Y2 motors. I assume ZBM is driven by the same driver as ZAM, right? (so I don’t plan on using that one).
  • For the end stops X Y and Z are clearly labeled “STOP” on the board, and then there are E0DET E1DET and PWRDET with the same physical connectors, so I assume I can use E0DET and E1DET to wire the second end stops of X and Y. Is that correct? Do you know what “DET” stands for? “something end of travel”? (pure curiosity…)
  • “Make it all work”, do you mean unit testing each part (motor, stop) or are you running the assembled CNC for full jobs?

I started with the lates bugfix (Marlin-bugfix-2.1.x).
Do check the chip on the board - i picked the wrong one initially!

Repetier host has a manual control panel, much like the other tools that are around.
I have been connecting via usb cable, and connects via serial connection. There is some details on the following page.
https://docs.v1e.com/software/repetier-host/
You can send individual commands from the manual control panel as well.
You can upload a series of gcodes via file as well - this is how i have uploaded the crown…

In terms of pins i have it configured in the following way (the pins are shown on this image SKR 3 Pinout
Stepper Motors
X1 - pins XM 2B/2A/1A/1B
Y1 - pins YM 2B/2A/1A/1B
Z1 - pins ZAM 2B/2A/1A/1B (ZAB not used)
X2 - pins E0M 2B/2A/1A/1B
Y2 - pins E1M 2B/2A/1A/1B
I have the extruders number set to 0. Marlin buld automatically assigns the connections for the secondary X2 and Y2 stepper motors and end stops, so havent looked at all the specific pins.

End Stops
X1 - on X-Stop - pin PC1
X2 - on E0 det - pin PC2
Y1 - on Y-Stop - pin PC3
Y2 - on E1 det - pin PA0
Z Probe - on Z-Stop - pin PC15
note these all have GND and +5V and the internal circuits have filtering.
I have not used PWRDET (pin PC15 for anything at the moment).
The DET is short hand for detector - these boards are targeting the 3d printing market, and here you connect to a filiament detector to detect filament breaks, runout etc.

I have had my machine working, drawing crown with a pen. Have been able to home X & Y, and then attach a probe to get the height set.
I have a small spindle with a variable frequency drive (VFD) that I am setting up - had an issue with the configuration that i have been working through - so in time will be testing a few cuts, engraving etc. My summer holiday (here in Australia) is just about over, so will be working less on this in the coming weeks.

I achieved getting the ESP07s wifi module working today. I eventually found the following instructions SKR pro wifi to first flash the module with ESP3d. These instructions work also for the SKR3 with the BTT ESP07s module. I was not able to flash the module firmware via the method indicated in the user manual. The key was to get the correct parameters:

  • Baud rate 115200
  • SPI speed 40MHz
  • SPI mode set to DOUT
    erase the firmware first and then start the flash

I have the TFT display working - removed the cables connecting EXP1 & 2 and retained just the serial cable + power. Able to perform some control - although prefer the web base interface that i now with wifi access or repetier…

Thanks again for your thorough anwers!
It’s good stepper motor pins were properly assigned automatically. It was the same for the end stops and the probe? (no need to define which pin you used?)

I lived 5 years in New Caledonia, I miss my beach christmas :slight_smile:

I got a successful build with all the V1 configs (except laser stuff, which I don’t plan to use for now) ported in 2.1.2.5, for SKR3 EZ.
Now it “just” has to be tested when I am back home :slight_smile:

Yes that all followed from setting the drivers for the different axes and the setting indicating the the probe uses the min z endstop.

Quick update, in case someone wants my config files.

Turns out I have the SKR3 (not EZ version), with the 723 processor.

Using dual end stops

My screen is a BTT 12864 v2

Everything works well, except for a minor issue with the backlight of the screen, which is off at boot, but can be reactivated in led menu. Saving params didn’t work, I will see if I can use manual commands to store specifically that setting.

2 Likes

I have Marlin 2.1.3.0 compiled for SKR 3.0 EZ (STM32H743VI) in an Ender3…though, with all the mods to it, it’s more like an Ender30k (someone already claimed 3k, theirs was weak compared to this beast).

On a different note, have you guys gotten babystepping to work mid-print with the SKR3.0 (reg or EZ)? I’ve tried every combination of parameter. The closest it get is working at idle. Once print is started and gantry is moving, attempting babysteps has two outcomes:

  1. no z-movement, z-offset stays at 0
  2. no z-movement, z-offset does show change

Just curious if anyone else has run into this. I think it worked back on FW 2.0.9.3ish, but when I tried FW from back then it still wasn’t working.

It’s not letting me upload attachments. If anyone would like the configs, let me know and we’ll use email or pigeon.

Thx

hey guys just getting started here with the skr3 pro, Im in europe and you cant get the 1.2 within the continent so went with skr 3 to avoid taxes. Maybe shouldnt of done that :sweat_smile:

do either of you guys have a working marlin config that you wouldnt mind posting to save me some hassle. Any help or info would be much appreciated, its been a while since I have dived into firmware

Dear Evan,
See the attached config files that I have working - note this is for a SKR3 not the EZ version.
Marlin MPCNC SKR3TMC2209 TFT35E3V3.zip (104.4 KB)

also check out this thread

1 Like

thank you Andrew, its much appreciated :slight_smile:

needless to say I spent hours trying to alter the firmware last night to no avail and may have ordered a ramps board, but hopefully now I can cancel that order. You’re a scholar and a gent!

Also I have the SKR 3 without EZ, so we are good there, does this work with dual endstops and squaring yer?

Look at my post 9 Jan earlier in this topic about what i have setup.
There is potentially some items around the display to fine tune, but it is set up for dual endstops, and it squares itself when you home the machine.

1 Like

I saw that, just wanted to be sure

on the other hand I am having some issues with the endstops and Im 80 or 90% sure its not software related. I have tested stepper motors and everything there works as it should

I have a different chipset than yours, mine is the STM32H743VI_btt so I have updated that in the platformio.ini and thats the only change I have made.

Build is successful, I get two warnings that X2 and Y2 are auto assigned to unused motor pins but thats ok because as mentioned motors work as they should and as such so does the auto assign

Using pronterface I use the M119 command to read endstops, with nothing connected all are open which is the opposite of what we would expect with NC switches, pullups enabled and endstop hit states set to LOW. When I plug one endstop in on X_MIN (X-STOP) I get X_MIN and X_MAX (E0DET) triggered, when I press the switch both are then read as open. This is the same for both Y endstops and Z-STOP also has the same inverted logic.

With the switch plugged in to X_MAX I get the same behaviour as with no switches plugged in and no state change when pressed.

Using a DMM I measured the following pins:

  • Switch to ensure it is acting as an NC switch, it is
  • Voltage between all signal pins and ground for all endstops with no switch connected, all read at 3.3V
  • Voltage at X_MIN with switch plugged into X_MIN (switch not pressed), reads 0V
  • Voltage at X_MIN with switch plugged into X_MIN (switch pressed), reads 3.3V
  • Voltage at X_MAX with switch plugged into X_MIN (switch not pressed), reads 0V
  • Voltage at X_MAX with switch plugged into X_MIN (switch pressed), no change
  • Same measurements on Y endstops with the same results

So to conclude the following two issues are present:

all switches are using pulldown resistors even though in software #define ENDSTOPPULLUPS is set
X_MAX is reading as X_MIN even though dual endstops are set in the pins file correctly

#elif ENABLED(X_DUAL_ENDSTOPS)
#ifndef X_MIN_PIN
#define X_MIN_PIN PC1 // X-STOP
#endif
#ifndef X_MAX_PIN
#define X_MAX_PIN PC2 // E0DET
#endif

so yer at a bit of a dead end with it, Big Treetech have a whatsapp you can call when they are open to speak to one of their engineers, so I’ll do that to avoid an email chain. Maybe shouldnt of cancled that RAMPS board :sweat_smile:

dont expect you to be able to offer a fix, just thought I would post this here incase anyone else has the same issue in the future and find this thread for using SKR 3 with MPCNC

Evan, note that the secondary endstops dont show up with M119. This stumped me for a little while until I read this on another thread.
Try homing X or Y and looking at what happens.

1 Like

thats interesting, I didnt know that either

still have the issue with pullups reading as pull down though, so need to get that sorted before trying with the machine. I have been testing on the bench so far

thanks for the input Andrew :slight_smile:

They should. Or did I miss that this is a weird configuration?

x2_min and y2_min should show up for an MPCNC config. y2_min and z2_max for a low rider.

look in configuration.h line 1170 - adjusting this should help

// @section endstops

// Enable pullup for all endstops to prevent a floating state

#define ENDSTOPPULLUPS

Jeff, I am not sure if these settings in configuration_adv.h are impacting this.

// @section endstops

// If you want endstops to stay on (by default) even when not homing
// enable this option. Override at any time with M120, M121.
//#define ENDSTOPS_ALWAYS_ON_DEFAULT

That shouldn’t affect M119. M119 is how we used to tell if the firmware was configured for dual endstops or not.