I am getting this error when I try to enable the Z2 driver for MKS Gen L V2.1 Could anyone help?
Error "TMC2208 or TMC2209 on Z2 requires Z2_HARDWARE_SERIAL or Z2_SERIAL_(RX|TX)_PIN.
Your question is missing important information, but I can try to figure out something. You didn't say what kind of firmware it is. I assume it is Marlin.
Your problem is that there are no Tx Rx pins specified for Z2 (because there is X, Y, Z, E0, E1 by default on the MKS Gen L board)
I assume you want to use the E1 driver for the Z2 instead of a second extruder. In that case, you have to tell the firmware that you want to use that driver for Z2.
Search the source code for file "pins_MKS_GEN_L_V21.h" There should be E1_SERIAL_TX_PIN and E1_SERIAL_RX_PIN defined. Rename them to Z2_SERIAL_TX_PIN and Z2_SERIAL_RX_PIN.
In "pins_RAMPS.h" file, find a block of a few lines that starts "E1_STEP_PIN", and rename E1 to Z2 for all those lines.
It may (or may not) work now. If it doesn't, please somehow post those configuration files.
I was getting the same issue/error code, but for my Y2 axis:
TMC2208 or TMC2209 on Y2 requires Y2_HARDWARE_SERIAL or Y2_SERIAL_(RX|TX)_PIN
I'm running Marlin 2.0, on an MKS Gen L V2.1 with TMC2209 (BigTreeTech v1.2) drivers. I have X, Y, Y2 (Running on E1 driver) and E0 for a custom scientific instrument (that is not a 3D printer, but it uses the same firmware and G-Code to move about so it is all the same). I initially tried to get this all going on the MKS Gen L V1, however, it only has UART for 4 Drivers (see the video by Teaching Tech). You can not get 5 drivers controlled by UART moving on this V1.0 board. For this reason, I moved over to the MKS Gen L V2.1. If this V1 board is all you have, I guess you could leave one driver as an A4988 or DRV8825 and accept the loss of the upgrade to the TMC2209 for one axis. This was the firmware that won't ask for Serial Pins, which is where most of this issue comes from.
SOLUTION:
The above solution by 'Jiří Maier' mostly fixed my problem. There are a few things to note and modify though:
In configuration.h
, #define EXTRUDERS 1
defines the number of extruders. This is important here I think (I'm 85% on this). This value will push the 'extruder' down onto the next available stepper driver, which will be E0. Therefore I moved my Y2 driver to E1 as E0 was 'occupied' by the extruder.
In configuration.h
, make sure the DRIVER_TYPE
axes are all set correctly to the number of drivers you actually have. For example, I am using a driver for X, Y, Z, Y2, and an extra one E0 (for pumping liquids), so 5 total. Here, Y2 will replace the E1 driver, so E1 is commented out. Therefore, all used drivers have the TMC2209 commented in here. Everything else should be commented out.
After this then you can assign the pins as mentioned by Jiří Maier.
In the pins_MKS_GEN_L_V21
file I changed all starts of the code for E1_SERIAL_TX_PIN
to Y2_SERIAL_TX_PIN
, like below:
#ifndef Y2_SERIAL_TX_PIN
#define Y2_SERIAL_TX_PIN 20
#endif
#ifndef Y2_SERIAL_RX_PIN
#define Y2_SERIAL_RX_PIN 12
#endif
Similarly, in the pins_RAMPS
file I changed the E1_STEP_PIN
to Y2_STEP_PIN
and so on, see the image below.
#define Y2_STEP_PIN 36
#define Y2_DIR_PIN 34
#define Y2_ENABLE_PIN 30
#ifndef Y2_CS_PIN
#define Y2_CS_PIN 44