Klipper + TMC2209 v3.0 (FYSETC) + SKR v1.3: Undervoltage GSTAT + Layershifts

Dear Community

I can’t get my SKR v1.3 + 4x TMC2209 running with Klipper and hope you could give me some help. Thank you in advance.

I switched from Marlin to Klipper recently. So please excuse my lack of depth. Please see the attachment of the klippy.log and a descriptive image.

The hardware in use, is the following:
Mainboard: BTT SKR v1.3 (Fig.: (B))
Stepper Driver: 4x TMC2209 v3.0 (Fig.: (C), (D))
Stepper Motor: 4x Nema17
Voltage Extruder: 1.0V
Voltage X,Y Stepper: 1.0V
Voltage Z Stepper: 0.76V
PSU: 24V

The following problems occurred.

Error: GSTAT: 00000004 uv_cp=1 (undervoltage) keeped stopping my prints (Fig.: (A)), eventhough I used this configuration on Marlin for months and Klipper didn’t have issues before (maybe changes through update?). Considering UART might be the problem, I switched the configuration of Fig. (B), also by removing the SP-Pin (Fig.: (C), 8 and (D), 8) also. This made no difference, so I switched to the old configuration of Fig. (B).

According to #1952, I changed the microsteps of the stepper X, Y and the extruder from 32 to 16, with no more undervoltage. But now I get random layershifts for X and Y (Fig.: (E), 7). As a side by side comparison, I documented the change of the registry for the X driver in Fig. (F). I don’t know how to interpret it and would appreciate your help.

According to https://github.com/KevinOConnor/klipper/issues/1952 I tried the following with all stepper drivers, but no change:
SET_TMC_FIELD STEPPER=stepper_x FIELD=reset VALUE=1
SET_TMC_FIELD STEPPER=stepper_x FIELD=uvcp VALUE=1

I am now out of ideas and really would appreciate your input.

Best regards,
Jan (ツ)╯

PS: I hope this post corresponds with the contribuition guidelines. If needed, changes are welcome.

Please attach your klippy.log file here.

Somehow this strikes me as rather odd:

  • TMC2209 in UART mode do not control voltage (V) but current (A) → How did you set voltage?
  • On a SKR1.3 board, UART mode is managed by using the correct jumper settings → No additional cables are needed. What are you trying to achieve?

Verify your hardware setup. Also ref to: BIGTREETECH-SKR-V1.3/SKR V1.3-Instructions.pdf at master · bigtreetech/BIGTREETECH-SKR-V1.3 · GitHub

Thank you for the quick answer.

The TMC2209 were oddly designed. Which is why UART is not working properly with the intended configuration for the SKR v1.3. It is being described here, at ‘UART, PDN, TX, RX’ https://theres-probably-a-better-way-to-do-it.readthedocs.io/en/latest/pages/electronics/skr_1.3_and_fysetc2209v3.html. Unfortuantely this makes the dupont connectors necessary. This setup has been successfully used with Marlin.

For my particular setup I removed all the jumpers for MS0, MS1, MS2 and MS3. Due to the installed extra cables no jumpers are used for the UART.

I added the klippy.log here: https://github.com/KevinOConnor/klipper/issues/4185. Sorry - I don’t know how to add it in this particular forum.

Best regards,
Jan

There’s some information on the error at: https://www.klipper3d.org/TMC_Drivers.html#why-did-i-get-a-tmc-reports-error–error.

Basically, the driver detected an internal error and disabled itself.

There have been reports that some step sticks have bad capacitors, which may cause this sporadic failure. It’s also possible there is a wiring or voltage problem causing the drivers to misbehave. It’s also possible the stepper motor driver is no longer working correctly.

-Kevin

Looking at your configuration, you have set the run_current of your steppers way too low. For regular steppers, the usual current is between 0.6A and 1.1A.

Look at the datasheet of your stepper motors. There you will find a current rating. Just be careful - some manufactures give RMS rating, some max rating.

If in doubt, consider it to be the max rating and calculate your RMS current:

rms_current = max_current / 1.41

Then we will apply a small margin to get to the run_current:

run_current = rms_current * 0.9

This will give you a good start. Monitor your stepper’s temperature during the first longer prints. If they get too hot to touch, cut down the current a bit. If they stay comfortable to touch you could yank up the current a bit.

@kevin: Okay. I am checking the wiring. Also I have some spare stepper driver, which I will exchange too. Which capacitor is usually faulty within the TMC2209?

@Sineos: This might be a good idea. I had a similar discussion yesterday on Discord. So I changed the run_current for X and Y to 0,2A and measured 65°C for both stepper motors. The steppers in use are those SM42BYGHW603, with a max current of 400mA (rms_current = 0,283A).
Due to this, I consider now losses within the flat ribon cables (Fig.: (A), 4), due to poor connection or EMC within the connector or the cable (Fig.: (A), 9). For example; those SM42BYGHW603 are being sold with 0,5mm [Ø] wires, while I am using 0,4mm [Ø] (Fig.: (B)). I am thinking about isolating both causes with a CAT5 cable.

As you can see, I am running out of ideas here. v[Ͼ_Ͽ]v I appreciate your time and effort.

Personally, I do not think that it will make a difference between .4 and .5 wiring with such low currents.

Try switching to spread-cycle by setting stealthchop_threshold = 0
(My opinion: Either run spread-cycle or stealth-cop completely. Transitions mid-movement is prone to causing problems)

@Sineos: I totally agree with you. I am trying to isolate the problem (e.g. mechanical, electronics, programing), because currently I have no clue what it is.
Having no oscilloscope available, if have to fix it with the multimeter + trial & error. Which is why I am really happy to multiply the (brain power)*contributor. (^‿^)
I did the wiring. Next will be your suggestion, switching off the stealthchop.

I did some tinkering the last couples of days and fixed the issue for now. Here are my results.
I excluded problems with programing and mechanics, by comparing code and exchanging parts.
Recurring error message were (exp. Fig.: (A)):

  • GSTAT: 00000004
  • tmc uart register GCONF
  • Internal error on command:“G1”.

Also in particular the extruder had troubles with the starting point of the extrusion. As you can see in Fig. (D), 1 the steps of the extrusion were missing, but only at the very beginning. After a layerchange and retracting the filament, gaps occured. Steps of the motor were calibrated, no clogging of the nozzle was present and the temperature of the motor was 55°C.

I did two things;
For the y-stepper I exchanged the faulty stepper drivers TMC2209 V3.0 (FYSETC) (Fig.: (E)) with a new one (Fig.: (B)). Accordingly to GiHub the reseting of the GSTAT is intended.

As a second experiment, I exchanged the TMC2209 with a new TMC2208, because it was only available (Fig.: (C)). I noticed a change in of IOIN@TMC220X (Fig.: (C), 1). This could be related to the problems with the UART.

I am not sure if is due to the damaged chip are maybe a faulty component (i.e. resistor, capacitor). I will double check this in the future.

For now, this issue can be considered as solved.

Thank you for your help and stay healthy,
Jan (ツ)╯

So, to summarize, swapping the stepper motor drivers solved the issue for you?

-Kevin

For now, yes. But I am not 100% sure what caused the problem. Do you guys see it? Should I upload another klippy.log?

The only information Klipper has is that the stepper motor driver disabled itself. If changing the stepstick fixed the issue it would generally indicate there was a problem with the previous stepstick.

-Kevin

FWIW, I have this problem now too, although it happened suddenly after upgrading from ~0.9.1 to the latest nightly. I’m trying to downgrade (to confirm one way or the other) and will make a new topic about the trouble I’m having there. I wonder if it’s maybe to do with this commit?

I now also have this problem with my corexy where the undervoltage issue follows one certain tmc2209, or actually a random tmc2209 scavenged from another printer.

To explain: I’ve put 5 recent BTT 2209’s (1.2) on an Octopus Pro and one older (about two years) driver of the same make and version I used in the donor printer. I have 4 of those older drivers and they all exhibit this strange undervoltage sometimes in my corexy.

Could some kind of update on the hardware side explain this, or what else could it be…

I redid the wiring completely on all those stepper motors. So I have to assume, this was the issue. v(ツ)v

This is total speculation, but I think the resistance of the cables over the distance (1.2m) was to high, proportional to cable diameter (Ø=0.8mm) and the containing conductor (aluminium). So I used some HDMI cables, because of the electromagnetic isolation of the wires and the copper. I didn’t have any undervoltage or layershifts since.

You don’t have to use that, but - as a tipp - try exchanging the wires first.

For me the problem follows the driver module, not the wires.

Yes - I understand your issue.
You asked, “I now also have this problem”, followed by “Could some kind of update on the hardware side explain this”.

This problem was resolved for me, by exchanging a hardware component, the wire. So maybe the driver module you scavenged is fine. But by touching the conductive part of the wire some oxidation was caused on the connector or maybe something got loose. Hence, the wire.

Best regards,
Jan

If you check the posts here regarding some weird TMC error, the people who successfully resolved it, indeed found the one or the other hardware issue.
Be it the driver himself, the stepper or some issue with the cables.